node package manager


reveal.js on steroids! Get beautiful reveal.js presentations from your Markdown files.


reveal.js on steroids! Get beautiful reveal.js presentations from your Markdown files.


npm install -g reveal-md

Quick demo

reveal-md demo

Markdown in reveal.js

The Markdown feature of reveal.js is awesome, and has an easy (and configurable) syntax to separate slides. Use three dashes surrounded by two blank lines (\n---\n). Example:

# Title
* Point 1
* Point 2
## Second slide
> Best quote ever.
Note: speaker notes FTW!

The separator syntax can be overriden (e.g. I like to use three blank lines).

Speaker Notes

You can use the speaker notes feature by using a line starting with Note:.


To open specific Markdown file as Reveal.js slideshow:


You can also provide a url that resolves to a Markdown resource (over http(s)).


Show (recursive) directory listing of Markdown files:

reveal-md dir/

Show directory listing of Markdown files in current directory:


Override theme (default: black):

reveal-md --theme solarized

Override reveal theme with a custom one:

# you'll need a theme/my-custom.css file
reveal-md --theme my-custom

Inject custom scripts into the page:

reveal-md --scripts script.js,another-script.js

Override reveal theme with a remote one (use because the url must allow cross-site access):

reveal-md --theme

Override highlight theme (default: zenburn):

reveal-md --highlightTheme github

Override slide separator (default: \n---\n):

reveal-md --separator "^\n\n\n"

Override vertical/nested slide separator (default: \n----\n):

reveal-md --verticalSeparator "^\n\n"

Override port (default: 1948):

reveal-md --port 8888

Disable to automatically open your web browser:

reveal-md --disableAutoOpen

YAML Front matter

You can set markdown options and revealoptions specific to your pressentation in the .md file with YAML front matter header Jekyll style.

title: Foobar
separator: <!--s-->
verticalSeparator: <!--v-->
theme: css/theme/solarized.css
    transition: 'fade'
Note: test note
# Bar

Print Support

Requires phantomjs to be installed (preferably globally)

This will try to create a pdf with the passed in file (eg and outputted to the name passed into the --print parameter (eg slides.pdf)

reveal-md --print slides.pdf


You can define Reveal.js options in a reveal.json file that you should put in the root directory of the Markdown files. They'll be picked up automatically. Example:

    "controls": true,
    "progress": true

Custom slide attributes

You can use the reveal.js slide attributes functionality to add HTML attributes, e.g. custom backgrounds. Alternatively you could add an HTML id attribute to a specific slide and style it with your own CSS.

If you want yor second slide to have a png background:

# slide1
This slide has no background image.
<!-- .slide: data-background="./image1.png" -->
# slide2
This one does!


  • reveal-md always starts a local server and opens the default browser
  • From any presentation, navigate to the root (e.g. http://localhost:1948) to get directory listing of (linked) Markdown files. Root folder is resolved from Markdown file (or directory) reveal-md was started with.