Marp
Marp (Markdown Presentation Ecosystem) β writing slide decks in plain Markdown, exporting to HTML/PDF/PPTX/PNG. Open source, MIT, built on CommonMark + extensions. The whole ecosystem is pluggable.
π Links
Description
- https://marp.app/ β project site
- https://github.com/marp-team/marp β entrance repo with an overview of the family
Download or use
- VS Code extension: Marp for VS Code
- CLI:
npx @marp-team/marp-cli@latest slide-deck.mdβ see Marp CLI - Awesome list: https://github.com/marp-team/awesome-marp
ποΈ Description
The whole ecosystem is built around a single idea: slide deck = Markdown + CSS theme. The --- separator splits slides. The rest is markdown-it + directives + theming.
π§© Marp family
| Component | Role |
|---|---|
| Marpit | Skinny framework: Markdown + CSS β HTML/CSS slides. Zero opinions about themes. |
| Marp Core | Marpit + official themes (default/gaia/uncover) + math + emoji + auto-scaling |
| Marp CLI | CLI: conversion to HTML/PDF/PPTX/PNG, watch mode, server mode |
| Marp for VS Code | Live preview + custom theming in the editor |
Earlier, inactive integrations (Marp Web, Marp React, Marp Vue) β still in the repo but unsupported.
π§© Key features
- CommonMark base β if you can write Markdown, you can write slides
- Directives β global (
theme:,size:,paginate:) and local (<!-- _backgroundColor: aqua -->) - Image syntax β slide backgrounds, advanced backgrounds via
<foreignObject> - Theming β pure CSS, no predefined classes/mixins; custom themes via
@thememetadata - Export β HTML, PDF, PPTX (including editable), PNG/JPEG, presenter notes as TXT
- Math β MathJax (default) or KaTeX via
math:directive - Auto-scaling β fitting headers (
# <!-- fit -->), shrink for code/math blocks
βοΈ Reasoning for
A Markdown-first workflow for presentations fits my stack perfectly β Obsidian, Hugo, Quartz, everything is already MD-based. Instead of fighting with PowerPoint or Keynote, I write content like a regular note and pipe it through the CLI. PPTX export leaves an escape hatch when a client demands an editable file.
Related: in my setup thereβs a skill create-marp-deck β interview-driven workflow for generating decks with gradient section dividers and automatic HTML/PPTX export. Thatβs exactly the use case. Full description of the 4-phase process (Brainstorm β React β Iterate β Export) in Claude Code Marp Workflow.
Alternatives considered
- reveal.js β JS-first, more JS than Markdown
- Slidev β Vue-based, for devs; beautiful but a specific stack
- Google Slides / PowerPoint / Keynote β WYSIWYG, no versioning, no diffs
Marp wins on: git versioning, no lock-in, export in 4 formats, working inside VS Code.
π Resources
- Documentation: https://marpit.marp.app/
- Awesome Marp: https://github.com/marp-team/awesome-marp
- Built-in themes (default/gaia/uncover): https://github.com/marp-team/marp-core/tree/main/themes
Template: tool