Markdown to Slides

Write presentations the way you write READMEs: Markdown headings, bullet lists, code blocks, separated by --- horizontal rules into slides. The tool renders your deck live using Reveal.js (themes: black, white, simple, solarized), supports speaker notes with Note:, nested vertical slides with --, and exports to a self-contained HTML file or a print-ready PDF.

How Markdown becomes a slide deck

  1. 1

    Write Markdown

    Use `---` to separate slides. Standard headings, lists and code blocks work as usual.

  2. 2

    Add speaker notes

    Prefix a paragraph with `Note:`: it's shown only in presenter mode.

  3. 3

    Preview the deck

    Live preview shows the deck with arrow-key navigation.

  4. 4

    Pick a theme

    Black, white, league, sky, simple, solarized: any Reveal.js theme.

  5. 5

    Export

    Self-contained HTML file or PDF via browser print.

The slide syntax

# Opening slide

Subtitle text here

---

## Second slide

- Bullet one
- Bullet two
- Bullet three

Note: these are speaker notes only visible in presenter mode.

---

## Code slide

\`\`\`python
def hello(name):
    return f"Hi {name}"
\`\`\`
  • --- (three dashes on their own line) starts a new horizontal slide.
  • -- (two dashes) starts a vertical slide inside the current slide column, press down-arrow to descend.
  • Note: at the start of a paragraph becomes a speaker note.

Keyboard navigation

Key Action
Right / Space Next slide
Left Previous slide
Down / Up Navigate vertical stack
s Open speaker view
o Slide overview
f Fullscreen
? Help dialog

Layout tricks

  • Two-column layout: use raw HTML inside a slide, <div class="columns">...</div>.
  • Fragment reveal: bullet lists animate in one at a time with the {.fragment} attribute when using Reveal.js directly. Add as raw HTML if you need it.
  • Background images: slide-level attribute <!-- .slide: data-background="url" --> sets a full-bleed background.
  • Auto-animate between slides: Reveal 4 supports smooth transitions for matching elements, turn it on in theme settings.

Exporting to PDF

From the live preview, open ?print-pdf in your browser URL and use the browser’s print dialog. Choose A4 landscape, background graphics on, margins minimal. Reveal.js outputs one slide per page with speaker notes on optional additional pages.

When Markdown-based slides shine

  • Tech talks with a lot of code samples.
  • Content-first decks where layout is secondary.
  • Docs-as-slides, keep presentations next to project README in git.
  • Version-controlled training material.

When it doesn’t

  • Design-heavy keynotes with precise image placement.
  • Slides that need complex animations or embedded video timing.
  • Brand-governed decks where templates dictate every detail.

Frequently Asked Questions

Yes, regular Markdown image syntax works. Use absolute URLs or upload images first so they’re reachable from the exported HTML.

Yes, optionally. The Reveal print mode supports “notes as separate page”, each slide becomes two PDF pages, one with the slide, one with notes.

No. Rendering is local in your browser. The Markdown source and exported HTML never leave your machine.

Yes. Add a <style> block at the top of your Markdown or link an external stylesheet in the theme settings. It’s injected into the Reveal.js output.

The exported HTML is a self-contained file that runs on any static host, GitHub Pages, Netlify, S3. Upload the HTML and you’re done.

Related Tools

Tool available in other languages