Marp: The Markdown Presentation Tool (and How to Export to PowerPoint)
Marp is the open-source Markdown presentation ecosystem — write slides in Markdown, then use the Marp CLI to export HTML, PDF, or PowerPoint. This guide covers Marp themes, Markdown authoring, marp-cli export to pptx (as images), how it compares to reveal.js and Slidev, and where an agent-native design workspace fits.
If you searched for “marp” expecting a dental or orthodontic term, this is the other one: Marp is the Markdown Presentation Ecosystem — an open-source (MIT) project from the marp-team on GitHub for building slide decks by writing plain Markdown. No dragging boxes on a canvas, no proprietary file format. You write # Slide title and a few bullets, add a directive or two, and Marp turns it into a presentation. (The unrelated “MARPE” you may have seen is a maxillary expansion procedure in orthodontics — nothing to do with slides. This article is strictly about Marp, the presentation tool.)
Marp is the simplest, most Markdown-native option among the open-source presentation tools, which is exactly why developers reach for it. This is an honest guide to what Marp is, how authoring and themes work, how the Marp CLI exports to PowerPoint and PDF (and the one caveat that catches people out), how it stacks up against reveal.js and Slidev, and where a design workspace picks up when Markdown runs out of road.
What Marp is
Marp is a small ecosystem of tools built around one idea: slides as Markdown. It has three moving parts. Marpit is the low-level framework that turns Markdown plus a theme into slide HTML and CSS. Marp Core is the batteries-included engine on top of Marpit, with a default theme, image handling, and math support. Marp CLI (marp-team/marp-cli) is the command-line tool that renders your Markdown file into HTML, PDF, or PowerPoint. There’s also an official VS Code extension that gives you a live side-by-side preview as you type.
You author in one .md file. Slides are separated by ---, per-slide and global settings are set through Marp directives (like theme:, paginate:, or class:), and everything stays in version-controllable plain text. That’s the whole appeal: your deck diffs cleanly in Git, lives next to your code, and never locks you into a binary format.
Marp themes and Markdown authoring
Authoring a Marp deck is deliberately minimal. A front-matter block at the top of the file sets global directives, --- breaks slides, and standard Markdown — headings, lists, code fences, images, tables — becomes your content. Because Marp renders to HTML and CSS under the hood, anything Markdown expresses maps to a slide without extra syntax to learn.
Marp themes are just CSS. Marp Core ships a handful of built-in themes (default, gaia, uncover), and you switch between them with a single theme: directive. When the built-ins aren’t enough, you write your own theme as a CSS file — target the classes Marpit exposes, register it with the CLI via --theme or --theme-set, and every slide picks it up. For inline tweaks you can drop a scoped <style> block into a single slide. This CSS-native model is Marp’s real ceiling and floor: if you’re comfortable with CSS you have full control, and if you’re not, the defaults still look clean.
Exporting Marp to PowerPoint and PDF
Export is where the Marp CLI earns its place. Point it at your Markdown and choose a target:
- HTML —
marp deck.md -o deck.htmlproduces a self-contained web deck you present in the browser. - PDF —
marp deck.md --pdfrenders a print-ready PDF, ideal for handouts and sharing. - PowerPoint —
marp deck.md --pptxexports a.pptxfile you can open in PowerPoint or Keynote.
The one caveat worth stating plainly: Marp’s PPTX export renders each slide as an image, not as native, editable PowerPoint shapes. Every slide becomes a full-bleed picture inside the .pptx wrapper. That’s perfect when you need to hand a file to someone who lives in PowerPoint and only has to present it — but you can’t click in and edit a text box, recolor a shape, or nudge a bullet once it’s exported. If your workflow needs to keep editing in PowerPoint afterward, treat Marp’s pptx as a delivery format, not a source format. (Experimental “editable” export modes have come and gone; the reliable, documented behavior is image-per-slide.)
Marp vs Slidev vs reveal.js
Marp isn’t the only Markdown-first presentation tool. Here’s the honest comparison across the axes that decide your pick:
| Tool | Authoring | Editable PPTX export | Templating | License |
|---|---|---|---|---|
| Marp | Pure Markdown + directives | pptx as images (not editable shapes) | CSS themes | MIT |
| reveal.js | HTML (Markdown plugin optional) | No native pptx | HTML/CSS themes | MIT |
| Slidev | Markdown + Vue components | No native pptx (PDF/PNG/SPA) | Vue + Windi/UnoCSS themes | MIT |
| Open Design | Describe it to your agent | Editable deck against a design system | Design system + template library | Apache-2.0 |
Marp is the choice when you want the least ceremony — a single Markdown file and a CLI. reveal.js is the mature web-slides framework: HTML-first, endlessly customizable, and the richest in-browser experience, but you’re writing HTML and there’s no native PowerPoint path. Slidev sits in the middle for developers who want Markdown plus real Vue components, code highlighting, and interactive embeds — more power than Marp, more setup too. All three are MIT-licensed and export nothing directly editable in PowerPoint.
Where Open Design fits
Marp is excellent at exactly one thing: taking Markdown you’ve already written and turning it into slides. But it asks you to write the deck — the structure, the wording, the theme CSS. It doesn’t generate the content, keep it on-brand across projects, or give you an editable artifact once it’s exported.
Open Design is the layer above that. It’s an open-source (Apache-2.0), local-first, bring-your-own-key Agent-Native Design Workspace that sits outside the coding agent you already use. Instead of hand-writing Markdown, you describe the deck you want, and the agent generates an editable one against a design system — with first-party HTML deck templates in its plugin library to start from. It’s not a replacement for Markdown-authored Marp: when you already have the content in Markdown and want a quick deck from the command line, Marp is the right tool. When you want the deck generated, on-brand, and still editable as part of a larger design workflow, that’s the workspace’s job. If you already make slides with a coding agent, see how a coding agent makes slide decks.
FAQ
What is Marp? Marp is the open-source Markdown Presentation Ecosystem from the marp-team on GitHub. You write slides in Markdown, and the Marp CLI exports them to HTML, PDF, or PowerPoint. It’s MIT-licensed and includes Marp Core, the Marpit framework, and a VS Code extension. It is not related to the orthodontic “MARPE” term.
How do I export a Marp deck to PowerPoint? Install the Marp CLI (marp-cli) and run marp deck.md --pptx. Note that the exported .pptx renders each slide as an image, not as native editable PowerPoint shapes — it’s great for handoff, but you can’t edit the text or shapes inside PowerPoint afterward.
Can Marp export editable PowerPoint files? Not reliably. Marp’s documented PPTX behavior is one image per slide. If you need natively editable .pptx with real text boxes and shapes, Marp is the wrong tool for that step.
Is Marp free? Yes. Marp is open source under the MIT license, so it’s free to use, self-host, and modify.
Marp vs reveal.js vs Slidev — which should I use? Choose Marp for the simplest pure-Markdown decks and easy PDF/pptx export, reveal.js for a mature HTML-first web-slides framework with deep customization, and Slidev for Markdown plus interactive Vue components. All three are MIT-licensed; none export directly editable PowerPoint.
The takeaway
Marp is the cleanest way to turn Markdown you’ve already got into slides — a single .md file, CSS themes, and a CLI that exports HTML, PDF, and PowerPoint. Just remember the one honest limitation: the pptx comes out as images, so treat it as a delivery format rather than something you’ll keep editing in PowerPoint. If your need is “I have the Markdown, give me a deck,” Marp is hard to beat. When the deck needs to be generated, stay on-brand, and remain editable inside a bigger design workflow, that’s where an Agent-Native Design Workspace picks up.