5 min left

Markdown to Slides Without the Marp CLI

Turn a .md file into slides without installing Node, the Marp CLI, or a VS Code extension. What marp: true does, and how to present straight from the file.

tutorial · presenting
In this guide

Markdown to Slides Without the Marp CLI

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:

  1. marp: true in a front matter block at the very top marks the file as a deck.
  2. --- 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:

KeyAction
/ SpaceNext slide
Previous slide
HomeFirst slide
EndLast slide
EscExit 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:

They’re a poor fit for:

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.

VK

Vaibhav Kakde

Building MDHero. Developer and open-source enthusiast.