Markdown + JavaScript = Great HTML Presentation Decks

You can easily create beatiful, interactive, simple presentations by writing them in Markdown (falling back to HTML whenever needed) with special markers separating the individual slides and using JavaScript to render it into an interactive HTML presentation. We will now look at a few tools that can help you with that. My favorite one is Reveal.js that has recently got out-ot-the-box support for full Markdown presentations.

Presentation frameworks


  • Reveal.js at GitHub, live demo introducing many of its features
  • Popular, beautiful, many capabilities
  • PDF export, speaker notes (show on demand or on another device via node.js)
  • The presentation is in HTML but individual slides may contain Markdown (this will result in a number of vertical and/or horizontal slides/sections):
    <section data-markdown>
        <script type="text/template">
            Markdown body of a slide here ...
  • Moreover, the whole presentation may be loaded from a Markdown file:
    <section data-markdown="/" data-separator="^\n---\n" data-vertical="^\n\n">
         Markdown body of a slide here ...
    • Beware: Both the index.html and the presentation .md file must be served by the same HTTP server due to security limitations; a simple one likely available on your machine is python -m SimpleHTTPServer
    • The two other attributes are optional. --- sourrounded by blank lines is the default separator for horizontal slides (none for vertical ones).
  • Code syntax higlighting via highlight.js
  • Overview mode (overview over all the slides)
  • You can also create and share Reveal.js presentation online via


  • deck.js: "A JavaScript library for building modern HTML presentations"
  • Markdown supported within slides with the deck.js-markdown extension
  • Similarly to Reveal.js, the presentation is still HTML with <section>...</section> but the slides content may be Markdown


  • MarkdownPresenter at GitHub
  • minimalistic, little older
  • uses showdown.js to transform a standard Markdown document into HTML
  • slides separated by ! surrounded by empty lines
  • move around with <-, -> and reload it (staying on the same slide) with a space (useful during writing)


  • Contary to the other, JS-based frameworks, this tool is written in Ruby and the presentation HTML must be generated from Markdown offline
  • Generate syntax-highlighted slides from Markdown
  • Slidedown presentation of slidedown
  • slidedown at GitHub
  • the whole presentation is in Markdown, slides separated by !SLIDE
  • syntax highlighting (put your code between @@@ ruby and @@@)
  • last commit Feb 2012


Showdown.js: Markdown to HTML via JS


  • PageDown is the JavaScript Markdown previewer used at Stack Overflow - renders Markdown into HTML
  • usable on client or server side (with node.js)
  • based on a fork of showdown.js
  • no support for presentation but it could easily be extended via its hooks

Highlight.js: Automatic source code highlighting

  • Home page
  • "it works automatically: finds blocks of code, detects a language, highlights it"
  • 2/2013: 54 languages, bundled with 26 style themes

Other resources

Copyright © 2024 Jakub Holý
Powered by Cryogen
Theme by KingMob