On this page · 6 sections
Short answer
Add marp: true to the top of a .md file, separate slides with ---, and open it in something that renders Marp. You do not need Node.js, the Marp CLI, or a VS Code extension to write or present a deck — those are for exporting to PDF and HTML. MDHero opens any Marp file as a native slideshow directly.
Writing slides in Markdown is a genuinely good idea that usually comes with an annoying setup step. The standard advice is: install Node, npm install -g @marp-team/marp-cli, then run a command to preview. Or install VS Code and an extension, then find the preview pane.
Both work. Both are a lot of scaffolding for “I want to see my slides.”
What Marp actually is
Marp is a convention, not an application. A Markdown file becomes a presentation when you add one line of front matter:
---
marp: true
---
# Quarterly Review
Vaibhav Kakde · August 2026
---
## What shipped
- Split-mode editor
- Line numbers
- Presentation mode
---
## What's next
Questions?
Two rules, and that’s the whole format:
marp: truein a front matter block at the very top marks the file as a deck.---on its own line separates one slide from the next.
Everything else is ordinary Markdown. Headings, lists, bold, code blocks, images, links — all behave exactly as they would in any other .md file. Which means your deck is still a readable document if someone opens it in a text editor, and it diffs cleanly in git.
The front matter is also a separator
The first --- opens the front matter block and the second closes it. After that, every --- starts a new slide. If your first slide looks like it swallowed your settings, you’re probably missing the closing one.
Where the CLI actually comes in
The Marp CLI is a build tool. Its job is turning a .md file into distributable output:
marp deck.md --pdf # export to PDF
marp deck.md --html # export to a standalone HTML file
marp deck.md --images png # export each slide as an image
That’s genuinely useful when you need to email a PDF or host a deck. It is not needed to write the deck, and it isn’t needed to present it either — a fact that gets lost because most tutorials introduce the CLI in step one.
If your goal is “open this file and talk over it”, you need a renderer, not a build pipeline.
Presenting straight from the file
MDHero renders Marp natively. Open a .md file with marp: true in the front matter and it opens as a slideshow — no Node, no CLI, no extension, no browser tab.
Navigation is what you’d expect from any presentation tool:
| Key | Action |
|---|---|
→ / Space | Next slide |
← | Previous slide |
Home | First slide |
End | Last slide |
Esc | Exit the slideshow |
Page numbers are optional and can be toggled on. Because MDHero is a Markdown viewer first, the same file opens as an ordinary document when you’re editing it and as a deck when you want to present — no mode juggling, no separate export step.
A deck worth stealing
This is about as much structure as most technical talks need:
---
marp: true
paginate: true
---
# Title of the talk
Your name · Date
---
## The problem
One sentence. Then the evidence.
- Point that supports it
- Another point
---
## What we did
```js
const result = doTheThing()
```
---
## Results
| Metric | Before | After |
|---|---|---|
| Load time | 4.2s | 1.1s |
---
# Thanks
Questions?
paginate: true adds slide numbers. Code blocks and tables render as they would anywhere else, which is most of the appeal — you write a technical deck the same way you’d write technical docs.
When Markdown slides are the wrong tool
Worth being straight about this: Marp gives you very little design control. You get a clean default theme and some CSS if you want to fight for more, but you are not going to build a heavily art-directed keynote this way.
Markdown decks are a good fit for:
- Engineering talks, architecture reviews, internal demos
- Anything that lives in a repo next to the code it describes
- Decks you’ll revise often and want to diff
They’re a poor fit for:
- Sales and marketing decks that need visual polish
- Anything with heavy animation or precise layout
- Collaborative editing with non-technical stakeholders
For the first list the trade is excellent — plain text, version control, and no mouse. For the second, open PowerPoint and don’t feel bad about it.
The point
The Marp format is simple enough to learn in a minute: one front matter line, --- between slides. The friction was never the format — it was the toolchain wrapped around it.
If you only need to write and present, skip the CLI. Put marp: true at the top of a Markdown file and open it in a viewer that renders it. If you later need a PDF to send round, that’s the moment to install the CLI — not before.
Frequently asked questions
What is Marp?
Marp is an open convention for writing presentations in Markdown. A document becomes a deck by adding marp: true to its front matter, and slides are separated by three hyphens. Because it is plain Markdown, the file stays readable and diffable in version control.
Can I use Marp without installing the CLI?
Yes. The Marp CLI is only needed to export decks to PDF, HTML or images from a terminal. To write and present a deck you need something that renders Marp directly. MDHero opens any file with marp: true as a native slideshow with no Node.js or CLI installation.
How do I turn a Markdown file into slides?
Add a front matter block containing marp: true at the top of the file, then separate each slide with a line of three hyphens. Open the file in a viewer that supports Marp and it presents as a deck.
Why write slides in Markdown instead of PowerPoint?
Markdown decks are plain text, so they diff cleanly in git, are fast to write without touching a mouse, and never break layout when moved between machines. The trade-off is far less control over visual design, which makes the format better suited to technical talks and internal reviews than to heavily designed presentations.