Markdown Slideshows
Slides are the last presentation medium where the WYSIWYG tool (PowerPoint/Keynote) still owns the default. The markdown-slideware family makes decks what docs and sites already are: text in git, diffable in review, renderable anywhere — the Markdown won thesis applied to presentations. Every tool below is a different answer to “markdown in, what comes out?”
The field (all captured)
- slidev (OSS) (48.9k★, TS) — presentation slides for developers: Vite-powered dev server with instant reload, Vue components embedded in slides, live coding w/ syntax highlighting, Monaco/WPM editors, presenter mode (second window or your phone as clicker), drawing/annotation on slides, Mermaid, LaTeX, recording with camera view, export to PDF/PNGs/PPTX. The bet: a deck is a web app, so use the web stack. (Current leaning — the developer-features-per-star champion.)
- marpit (OSS) (1.4k★, JS) — the skinny framework: markdown → slide deck as a pure library; its real distribution is Marp (VS Code extension / CLI / web) built on it. The minimal, opinion-light option — Karpathy’s choice for his decks (the LLM-wiki/lecture-style content: one markdown file,
---separator, clean output — see_research/2026-09-12-llm-wiki-karpathy.md). Empirically: watch any of his talk decks — the Marp footer styling is recognizable. - reveal.js (OSS) (72.4k★, JS) — the framework ancestor: the HTML presentation framework everything plugin-izes. In this vault it runs as Obsidian Advanced Slides (
.obsidian/plugins/) — markdown authored inside notes, reveal underneath. The org-chart: reveal.js = HTML decks, Marp/slidev = markdown-first reimaginings. - presenterm (OSS) (8.9k★, Rust) — the terminal outlier: markdown slideshow in your terminal — images/GIFs on kitty/wezterm/ghostty/foot, themes, selective code highlighting (reveal lines step-by-step), mermaid + d2 rendering, PDF export, PDF-handout mode. The sysadmin-native deck: no browser, no Node toolchain, one binary — pairs with the TUI-slideware capture (
clippings/blog-klobuc-ar-posts-tui-slides-1.md). - pandoc → beamer — the academic lane (not captured; LaTeX-class output, citation pipeline). Noted for completeness.
The axes that actually decide it
- Where it renders: browser (slidev, reveal) vs terminal (presenterm) vs export-only (marp CLI). Presenting over SSH from a homelab box? presenterm. Conference projector w/ HDMI? browser deck.
- How far it escapes markdown: slidev lets you drop into Vue/UnoCSS per-slide (power, lock-in); marpit stays markdown-pure (portability, less expression); reveal.js is HTML-first with markdown as an input format.
- Export targets: PPTX only in slidev — the “colleagues demand PowerPoint” escape hatch. PDF everywhere.
- SSG kinship: slideshows are Static Site Generators with a different output unit — slidev literally is a Vite SSG emitting slide HTML instead of pages, and Marp’s markdown is a dialect. The same “source of truth is plain files in git, renderers replaceable” economics; see Docs SSGs for the docs sibling. A deck built this way diffs in a PR — reviewable, versioned, linkable.
BI as code — the data-driven sibling
Same thesis one layer up: dashboards are also documents that belong in git. evidence (OSS) (7.0k★, TS) — “business intelligence as code”: reports written in SQL + markdown, rendered as fast interactive data-apps; agent-ready (“develop using Evidence’s Agent, or Claude Code/Cursor”), self-hosted or Evidence Studio. The alternative to drag-and-drop BI (Metabase/Superset/PowerBI) where the dashboard definition — queries, layout, prose — is diffable code instead of a database blob owned by the tool.
The pattern line: slides as code → docs as code → dashboards as code — every presentation surface where the artifact outlives the meeting becomes a text file, reviewable and regenerable. Evidence is to BI what slidev/marpit are to PowerPoint.
Related: Static Site Generators · Docs SSGs · Markdown all the things · Confluence as Code (docs-as-code at work scale) · Karpathy’s Marp-decked LLM wiki research (_research/2026-09-12-llm-wiki-karpathy.md)