Markdown slides viewer
Upload a text or Markdown file or paste content. Separate slides with ---.
Markdown separated by a --- line on its own is the closest thing presentation tools have to a common format: Marp, reveal.js, Deckset and Obsidian all read it. This page takes that same text and presents it without installing any of them. It splits the document on every standalone ---, renders each block with a small Markdown subset, sanitises the result with DOMPurify, and gives you a dark or light slide canvas, a thumbnail strip, zoom, a running presenter timer and the keyboard controls you expect from a remote clicker. There is no export and no account: paste, press F, talk.
Key facts about Markdown slides viewer
| Slide separator | A line containing exactly --- between two newlines. Nothing else splits a slide, so a horizontal rule inside a slide will split it too |
|---|---|
| Markdown supported | # ## ### headings, **bold**, *italic*, `inline code`, - bullet lists, and plain paragraphs |
| Markdown not supported | Images, links, tables, block quotes, fenced code blocks, numbered lists, footnotes and front matter — they render as literal text |
| Sanitiser | Every rendered slide passes through DOMPurify before it reaches the DOM, with inline style attributes allowed and scripts stripped |
| Themes | Two, applied to the slide canvas itself: dark (slate background, near-white headings) and light (white background, near-black headings) |
| Presenter timer | Counts up in mm:ss from the moment you start it, independent of the slide you are on |
| Zoom | 25 to 300 percent in 25-point steps, applied to the slide canvas, with 0 to reset |
| Keyboard | Right arrow or space next, left arrow previous, Home first, End last, F fullscreen, Escape exit, plus and minus zoom, T thumbnails, question mark for shortcuts |
| File input | .txt, .md and .markdown are read as text; the contents replace whatever is in the editor |
| Text alignment | Slides are centred vertically and horizontally by design; bullet lists align left inside that block |
What happens to your file
Your slide text is never sent anywhere. It lives in the textarea and in the rendered slide canvas, both inside this tab, and the Markdown-to-HTML step runs in page memory with DOMPurify sanitising the output before it is inserted. There is no upload, no autosave to a server and no account, so a deck drafted here is as private as a local file — and disappears on reload, which is worth knowing before you close the tab on an unsaved draft. Dropping a .md file reads it locally with FileReader; the file itself is not copied anywhere.
About this tool
- 1
Write or paste your Markdown
Put a --- on its own line between slides. A first-level heading makes a good title slide; bullets carry the body.
- 2
Or drop a .md file
Drag a .txt, .md or .markdown file onto the editor and its contents load straight in, replacing what was there.
- 3
Pick a theme
Dark reads better in a dim room and on a projector; light matches a printed handout and a bright meeting room. The choice applies to the slide canvas, not the page around it.
- 4
Check the thumbnails
The strip shows every slide at a glance, which is how you catch the slide that accidentally split in two because of a stray --- inside it.
- 5
Press F and present
Fullscreen gives you the slide, a counter and nothing else. Right arrow or space advances, left arrow goes back, Escape exits.
- 6
Start the timer
The count-up timer runs independently of the slides, so you can see how long you have been talking without leaving presentation mode.
| Input | Textarea, or drop a .txt, .md or .markdown file |
|---|---|
| Slide split | --- on its own line |
| Renderer | Regex-based Markdown subset plus DOMPurify sanitisation |
| Themes | Dark, light |
| Zoom | 25 to 300 percent |
| Timer | Count-up, mm:ss, start and pause |
| Output | On-screen presentation only — no PDF, PPTX or image export |
| Persistence | None. Reloading the page clears the deck |
| Browser support | Any modern browser; fullscreen uses the standard fullscreen behaviour of the tab |
| Cost / account | Free, unlimited, no signup |
- Keep the --- separators surrounded by blank lines; a --- directly under text is a Markdown horizontal rule in some editors and will still split the slide here.
- One heading and three bullets is about the maximum that stays readable at the default zoom on a projector.
- Images and links are not rendered, so a deck written for Marp will show its image syntax as literal text — strip those lines before presenting here.
- Use zoom rather than changing font sizes: the canvas scales as a whole, so proportions stay right.
- Start the timer at the first slide, not before, if you want an honest reading of how long the talk actually runs.
- The deck is not saved anywhere, so keep the Markdown in a file and paste it in — treat this page as the projector, not the document store.
- Press T to hide the thumbnail strip when you are presenting on a small screen and want the slide as large as possible.
- Split on --- like Marp and reveal.js
- Headings, bold, italic, code and bullets
- Dark and light slide themes
- Thumbnail strip
- Count-up presenter timer
- Zoom 25 to 300 percent
- Fullscreen presentation mode
- Full keyboard navigation
- Presenting a Markdown deck on a machine that has no presentation software installed.
- Giving a short internal talk without opening a slide editor at all.
- Rehearsing timing with the built-in count-up timer before a conference slot.
- Turning meeting notes into a walkthrough during the meeting itself.
- Checking how a Marp or reveal.js deck breaks into slides before building it properly.
- Teaching from a plain-text outline that can live in the same repository as the code being taught.
Related tools
View allPart of File viewers that open the file in your browser
Works well with this4
More file viewers10
Updated