A tiny commonmark to HTML slideshow generator
Last updated 4 years ago by csauve .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install sho -g
SYNC missed versions from official npm registry.


A command-line tool for creating simple, self-contained HTML slideshows from Markdown documents. Use horizontal rules to separate slides:

# Title Page Header
## A subheader


### Slide 1 Header
Bacon ipsum dolor amet [frankfurter brisket](
* jowl ham hock hamburger
* kielbasa shank short ribs

Short loin `spare ribs` pork doner venison.

sho slides example 1


  • Comes pre-styled so you can concentrate on content
  • CommonMark support with sensible defaults
  • Code highlighting with highlight.js
  • Arrow-key navigation
  • Slide progress bar
  • Can watch your source file for continuous editing
  • Generated HTML has no external dependencies
  • Text scales down for low resolution projectors and screens
  • Supports background images and colours
  • Included CSS for left/right floating images

Getting Started

Requires Node.js to install and run:

$ npm install -g sho

# generates slides.html if is present
$ sho
# generates presentation.html
$ sho
# or specify both paths
$ sho output.html
# you can also watch files
$ sho --watch

Just open the HTML file in your favourite browser and you're ready to go!


CommonMark allows the inclusion of HTML tags in your markdown. Sho's stylesheet includes some special classes and IDs for customizing your slides:

sho slides example 1


To include a background image in all slides, add an img tag with id="background" anywhere in your Markdown document. The src should be relative to the destination HTML file:

<img id="background" src="images/background.jpg"/>

# Title Page

To include a background image in one slide, add an img tag with class="background" inside the slide you want affected. This background will override an all-pages background.


<img class="background" src="images/slide5-bg.jpg"/>
### Slide 5


For a solid colour background, a styled span with class="background" or id="background" will behave the same way:

<span id="background" style="background: #380b35"/>
# All slides are purple by default


<span class="background" style="background: green"/>
### Slide 1
This slide is green.


To center-align text, wrap it in a class="center" div. Don't forget to pad inner Markdown with blank lines:

<div class="center">

by [@Author](


You can left/right float images by adding the corresponding class to an img tag:

<img src="images/example.jpg" class="right"/>

A tag can be styled inline-block with the inline class:

<h4 class="inline">Example:</h4> `code fragment`


This module can programmatically transform Markdown files. Install the module non-globally:

npm install sho

Then require and call Sho:

var sho = require("sho");
sho("~/docs/", "~/docs/output.html");


Sho is pretty minimal and might not fit your needs. It is inspired by Cleaver and reveal.js.


  1. Fork this repo
  2. Clone your fork
  3. Install dependencies with npm install
  4. Hack away!
  5. Use npm link to test your edited Sho on the command-line
  6. Commit and push changes to your fork
  7. Create a pull request describing the change

License: MIT

Current Tags

  • 1.0.3                                ...           latest (4 years ago)

4 Versions

  • 1.0.3                                ...           4 years ago
  • 1.0.2                                ...           5 years ago
  • 1.0.1                                ...           5 years ago
  • 1.0.0                                ...           5 years ago
Maintainers (1)
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 4
Dependencies (6)
Dev Dependencies (0)
Dependents (1)

Copyright 2014 - 2016 © |