
The official site and ecosystem repos.

What it is
Marp (Markdown Presentation Ecosystem) builds slide decks from plain Markdown. You write one .md file, split slides with ---, and Marp renders a deck you can export to HTML, PDF, PowerPoint, or images. Created and maintained by Yuki Hattori (@yhatt) under the marp-team org. Everything is MIT licensed.
The pitch from the docs: "You only have to focus on writing your story in a Markdown document."
Why it exists
Slide tools split into two camps. WYSIWYG editors (PowerPoint, Keynote, Google Slides) are slow to drive and impossible to diff or version. Code-first frameworks (reveal.js, Slidev) give you Git-friendly source but pull in HTML, Vue, or a build pipeline. Marp sits at the plain-Markdown end: the source is close to CommonMark, so a deck is just text you can write, diff, review, and generate without learning a slide DSL.
How you author slides
Add a YAML front-matter block with marp: true, pick a theme, and separate slides with ---. Directives control pagination, themes, headers, footers, and per-slide classes.
---
marp: true
theme: gaia
paginate: true
class: lead
backgroundColor: #fff
---
# My Deck
A subtitle line.
---
## Second slide
- Bullet one
- Bullet two

Common directives:
| Directive | Does |
|---|---|
marp: true |
Marks the file as a Marp deck |
theme: |
Selects a built-in or custom theme (default, gaia, uncover) |
paginate: true |
Shows slide numbers |
header: / footer: |
Repeats text on every slide |
class: |
Applies a theme class to one slide (e.g. lead) |
backgroundColor: / backgroundImage: |
Sets slide background |
Marp also extends Markdown image syntax for backgrounds (![bg]), splits, filters, and sizing, plus math typesetting and auto-scaling for content that overflows.
The ecosystem
Four official pieces, layered:
| Tool | What it is |
|---|---|
| Marpit | The bare framework. Converts Markdown plus a CSS theme into slide HTML and CSS. No default styling. |
| Marp Core | Marpit plus the built-in themes, image syntax, math, and auto-scaling. The engine the apps share. |
| Marp CLI | Command-line converter built on Marp Core. Exports HTML, PDF, PPTX, and images. |
| Marp for VS Code | Extension that adds live slide preview to the VS Code Markdown editor and can export from the command palette. |
There are also community integrations (Marp React, Marp Vue, Marp Web), but the team flags them as outdated. The four above are what you actually use.
Theming
Themes are plain CSS. Three ship in Marp Core (default, gaia, uncover). A custom theme is a CSS file with a /* @theme name */ header that styles a section (each slide is a <section>). You register it with the CLI (--theme my-theme.css) or in VS Code settings, then reference it with the theme: directive. No build step, no component model. If you know CSS, you can brand a deck.
Export with the CLI
The fastest way in is the CLI. No install needed:
# HTML (default), straight from npx
npx @marp-team/marp-cli@latest slide-deck.md
# Other formats
npx @marp-team/marp-cli@latest --pdf slide-deck.md
npx @marp-team/marp-cli@latest --pptx slide-deck.md
npx @marp-team/marp-cli@latest --images png slide-deck.md # one PNG per slide
npx @marp-team/marp-cli@latest --image png slide-deck.md # title slide only
# Live workflow
npx @marp-team/marp-cli@latest -w -p slide-deck.md # watch + preview window
Install it globally if you use it often:
npm install -g @marp-team/marp-cli
marp --pdf slide-deck.md
Useful flags: --watch / -w (re-convert on save), --server / -s (on-demand HTTP conversion), --preview / -p (preview window), --pdf-notes (presenter notes as PDF annotations), --pptx-editable (editable PPTX, experimental, needs LibreOffice Impress), --image-scale (resolution multiplier).
⚠️ PDF, PPTX, and image export render through a browser. You need Google Chrome, Microsoft Edge, or Firefox installed. HTML export does not.
Getting started
- Just trying it:
npx @marp-team/marp-cli@latest deck.mdand open the HTML. - Writing decks day to day: install Marp for VS Code for live preview while you type.
- CI or scripted output: install Marp CLI and run it headless to produce PDFs or PPTX from
.mdin a pipeline.
Why it fits AI and agent generation
Marp's source is plain CommonMark Markdown with a tiny YAML header. That makes it the most LLM-friendly of the three main framework options:
- Trivial to generate. An LLM already writes clean Markdown. A Marp deck is Markdown plus
marp: trueand a few directives, so there is almost nothing extra to teach the model. Compare reveal.js (HTML sections, data-attributes) or Slidev (Vue components, layouts) where the model has more surface to get wrong. - Deterministic to render.
marp --pdf deck.mdruns headless in CI. An agent can write the file, shell out, and hand back a PDF or PPTX with no human in the loop. - Easy to validate and diff. Output is text, so a generated deck reviews like a code change. Regenerate, diff, done.
- PPTX out of the box. For business contexts where people expect an editable PowerPoint,
--pptxcovers it without a separate conversion step.
Good default when an agent needs to turn a brief or a Markdown report into a deck and the priority is speed and reliability over visual polish.
Limitations
- Less interactive than reveal.js. No fragments/step-by-step reveals, speaker-view, or rich transitions out of the box. Marp targets clean static slides, not animated talks.
- Less designed than Slidev. Slidev ships layouts, components, code highlighting with line focus, and a slicker dev experience. Marp gives you Markdown plus CSS and stops there.
- Styling means CSS. Anything beyond the three themes is hand-written CSS. No component library, no theme marketplace.
- Browser dependency for export. PDF/PPTX/PNG need Chrome, Edge, or Firefox present.
Marp vs reveal.js vs Slidev
| Marp | reveal.js | Slidev | |
|---|---|---|---|
| Source format | Plain Markdown + directives | HTML (Markdown plugin optional) | Markdown + Vue components |
| Learning curve | Lowest | Medium | Medium-high |
| Interactivity / animation | Basic | High (fragments, transitions) | High |
| Styling model | CSS themes | CSS / HTML | Windi/UnoCSS + Vue layouts |
| Native PPTX export | Yes (--pptx) |
No (HTML/PDF) | Via export, PDF/PNG focus |
| Best for | Fast, scriptable, AI-generated decks | Web-native interactive talks | Developer-polished tech talks |
Reach for Marp when the deck is content-first and you want to generate or script it. Reach for reveal.js when you need a web-native interactive presentation, and Slidev when you want a developer-grade deck with components and animation.
Further reading
- Official site: marp.app
- Ecosystem repo: github.com/marp-team/marp
- Marp CLI: github.com/marp-team/marp-cli
- Marp for VS Code: marketplace.visualstudio.com
- Marpit docs: marpit.marp.app