![Showdown](https://raw.githubusercontent.com/showdownjs/logo/master/dist/logo.readme.png) [![Build Status](https://travis-ci.org/showdownjs/showdown.svg?branch=master)](https://travis-ci.org/showdownjs/showdown) [![npm version](https://badge.fury.io/js/showdown.svg)](http://badge.fury.io/js/showdown) [![Bower version](https://badge.fury.io/bo/showdown.svg)](http://badge.fury.io/bo/showdown) [![Join the chat at https://gitter.im/showdownjs/showdown](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/showdownjs/showdown?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) ------ Showdown is a Javascript Markdown to HTML converter, based on the original works by John Gruber. Showdown can be used client side (in the browser) or server side (with NodeJs). ## Installation ### Download tarball You can download the latest release tarball directly from https://github.com/showdownjs/showdown/releases ### Bower bower install showdown ### npm (server-side) npm install showdown ### CDN You can also use github CDN directly in your html file(s). https://cdn.rawgit.com/showdownjs/showdown//dist/showdown.min.js ## Browser Compatibility Showdown has been tested successfully with: * Firefox 1.5 and 2.0 * Internet Explorer 6 and 7 * Safari 2.0.4 * Opera 8.54 and 9.10 * Netscape 8.1.2 * Konqueror 3.5.4 In theory, Showdown will work in any browser that supports ECMA 262 3rd Edition (JavaScript 1.5). The converter itself might even work in things that aren't web browsers, like Acrobat. No promises. ## Node compatibility Showdown has been tested with node 0.8 and 0.10. However, it should work with previous versions, such as node 0.6. ## Legacy version If you're looking for showdown v<1.0.0, you can find it in the [**legacy branch**](https://github.com/showdownjs/showdown/tree/legacy). ## Quick Example ### Node ```js var showdown = require('showdown'), converter = new showdown.Converter(), text = '#hello, markdown!', html = converter.makeHtml(text); ``` ### Browser ```js var converter = new showdown.Converter(), text = '#hello, markdown!', html = converter.makeHtml(text); ``` ### Output Both examples should output... ```html

hello, markdown!

``` ## Options You can change some of showdown's default behavior through options. ### Setting options Options can be set: #### Globally Setting a "global" option affects all instances of showdown ```js showdown.setOption('optionKey', 'value'); ``` #### Locally Setting a "local" option only affects the specified Converter object. Local options can be set: * **through the constructor** ```js var converter = new showdown.Converter({optionKey: 'value'); ``` * **through the setOption() method** ```js var converter = new showdown.Converter(); conveter.setOption('optionKey', 'value'); ``` ### Getting an option Showdown provides 2 methods (both local and global) to retrieve previous set options. #### getOption() ```js // Global var myOption = showdown.getOption('optionKey'); //Local var myOption = converter.getOption('optionKey'); ``` #### getOptions() ```js // Global var showdownGlobalOptions = showdown.getOptions(); //Local var thisConverterSpecificOptions = conveter.getOptions(); ``` ### Valid Options * **omitExtraWLInCodeBlocks**: (boolean) Omits the trailing newline in a code block. Ex: This: ```html
var foo = 'bar';
    
``` Becomes this: ```html
var foo = 'bar';
``` * **prefixHeaderId**: (string/boolean) Adds a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to `true` will add a generic 'section' prefix. ## Integration with AngularJS ShowdownJS project also provides seamlessly integration with AngularJS via a "plugin". Please visit https://github.com/showdownjs/ngShowdown for more information. ## Extensions Showdown allows additional functionality to be loaded via extensions. (you can find a list of known showdown extensions [here](https://github.com/showdownjs/showdown/wiki/extensions)) ### Client-side Extension Usage ```js