Markdown to Slides
Turn a Markdown document into a self-contained, navigable HTML slide deck — split slides with ---, pick a light or dark theme, then save one HTML file. Runs entirely in your browser, no upload.
Turn Markdown into a slide deck
Write your talk as plain Markdown, separate each slide with a line containing
just --- (a Markdown thematic break), and this tool builds a single
self-contained HTML file you can open in any browser or hand to a colleague.
No reveal.js download, no Node build step, no account — the deck embeds its own
styling and navigation.
How it works
- Paste your Markdown. Put
---(or***/___) on its own line wherever you want a new slide to begin. A document with no separators becomes a single slide. - Pick a light or dark theme and, optionally, a document title (the browser tab name).
- Copy the generated HTML or save it as
deck.htmland open it.
What the generated deck gives you
- Keyboard navigation — arrow keys, Page Up/Down, Space, Home/End.
- Click and swipe — tap the screen edges or swipe on touch devices.
- A slide counter and a progress bar, plus deep-links to a slide via the
URL hash (
#3). - Print to PDF — your browser's print dialog lays one slide per page.
Markdown support
Slides render with CommonMark plus GitHub-flavored extensions: headings, lists,
bold/italic, inline code, fenced code blocks, blockquotes, tables, task
lists, strikethrough, links and images. Slide content is sanitized, so a deck is
safe to share.
Private by design
Everything runs locally in your browser via WebAssembly. Your Markdown is never uploaded to a server.
FAQ
What starts a new slide?
A thematic-break line — ---, ***, or ___ on its own line. Consecutive separators don't create empty slides (blank chunks are dropped), and a document with no separators becomes a one-slide deck. Note that a --- directly under a line of text is Markdown for a heading, so leave a blank line before it.
Can I embed raw HTML, scripts, or iframes in a slide?
No — slide content is sanitized (via an HTML sanitizer) before it's embedded, so <script>, event handlers, and other active content are stripped. Standard Markdown — including tables, task lists, fenced code blocks, and images — comes through fine.
How do I get a PDF of the deck?
Save the generated HTML (e.g. as deck.html), open it, and use the browser's print dialog — the deck's print stylesheet lays out one slide per page, so "Save as PDF" gives you a shareable handout.
Does the deck need internet access or reveal.js to run?
Neither. The output is one self-contained HTML file with its CSS and a small vanilla-JS navigator embedded — no CDN fonts, no framework download, works offline and survives being emailed as an attachment.
Developer & Automation Access
Run it from the terminal
Same engine as this page, headless — via the gizza CLI:
gizza tool markdown-to-slides "# Title slide
by you
---
## Point one
- a
- b
---
## Thanks!"New to the CLI? Get gizza →
Open it by URL
Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:
https://gizza.ai/tools/markdown-to-slides/?markdown=%23%20Title%20slide%0A%0Aby%20you%0A%0A---%0A%0A%23%23%20Point%20one%0A%0A-%20a%0A-%20b%0A%0A---%0A%0A%23%23%20Thanks%21&theme=light&title=SlidesMachine-readable descriptor: tool.json — title + parameters JSON Schema for agents.
