4. Slidev or Marp: We Ran the Same Talk Through Both and Timed Every Step
Marp installed in 11.79 seconds and 129 MB against Slidev's 59 seconds and 533 MB. Slidev was the only one that rendered our diagram and highlighted code line by line.
The WJS Desk
Sep 25, 2026 ยท 7 min read

Three parts, one talk, six export formats and eleven deliberate or accidental failures later, here is the verdict: Slidev is the right tool if you give technical talks with code in them and you want the deck to live on the web. For almost anything else, the closest alternative did the same job in a fifth of the install time and a quarter of the disk, and we have the numbers to show where each one wins.
To get those numbers we ported our Part 2 talk to Marp, the other widely used Markdown slide tool, and ran both through the same machine with a stopwatch. We also upgraded a Slidev project across a major version to see what a year of ownership looks like.
Slidev against Marp, measured
Same Apple M4 Pro, macOS 26.5.1, Node 22.22.0. Slidev 53.0.0 and Marp CLI 4.5.1 (Marp Core 4.4.0). Both installs ran on a cold npm cache. The deck is the Ubuntu 26.10 rm talk from Part 2: 9 slides in Slidev, 8 in Marp, because Marp has no equivalent of our closing end layout and we dropped it rather than fake one.
| Measurement | Slidev 53.0.0 | Marp CLI 4.5.1 |
|---|---|---|
| Cold install | 59.0 s | 11.79 s |
node_modules | 533 MB, 435 packages | 129 MB, 141 packages |
npm audit at install | 13 (10 high) | 6 (5 high) |
| Browser for PDF | 554 MB download, or --executable-path | found installed Chrome on its own |
| PDF export | 4.3 to 7.8 s, 550 KB | 1.62 to 2.88 s, 511 KB |
| Web output | 1.95 to 3.08 s, 6.7 MB, 142 files | 0.70 s, one 115 KB HTML file |
| PowerPoint | image or editable text (3.78 s, 1.88 MB) | images only (2.68 to 2.87 s, 3.38 MB) |
| Line by line code highlights | yes, per click | no |
| Mermaid diagrams | rendered | printed as raw code |
| Two column layout | built in | needs your own CSS |
| Speaker notes in PPTX | yes | yes |
| Contributors | 377 | 27 |
| Top author, last 100 commits | 28 | 96 |
| Releases in 2026 | 24 | 6 |
Read that table as two different tools, not one better one. Marp wins every row about cost. Slidev wins every row about what the talk can do on stage and about who keeps the project alive.
Porting the talk to Marp, and what it lost
Here is the whole Marp install and build, which is as short as it looks:
npm i -D @marp-team/marp-cli
npx marp talk.md --allow-local-files -o talk.pdf < /dev/null
The two flags earn their place. --allow-local-files lets the PDF renderer read our local photo, and Marp prints a warning that this is insecure for untrusted Markdown, which is fair. The < /dev/null is there because of the one thing that tripped us up in Marp. Run from a script or an editor task where standard input is left open, it waits to read your slides from stdin. Our first attempt sat there until we killed it. To be fair to Marp, it does say so: Currently waiting data from stdin stream. We had filtered that line out of our own log.
The port itself touched all 9 slides. Marp needs marp: true in the frontmatter, puts images in with  instead of a layout, and has no v-click, no {1|2|3|all} highlight steps, no two-cols, and no fact or end layouts. Mermaid is not built in: our flowchart came out as a grey box of the Mermaid source text. That slide is the reason the Slidev talk exists in the form it does.
What Marp got right that Slidev did not: every code line in its PDF is at full strength, because there are no highlight steps to freeze. Part 2's greyed out apt install line cannot happen in Marp.
A year of ownership: the upgrade test
Slidev bumps its major version often. 51.0.0 shipped in January 2025, 52.0.0 in June 2025, 53.0.0 on 16 September 2026. The 53.0.0 release notes list one breaking change: a move to Mermaid 12 and Cypress 16, which is what raised the Node floor to 22.12.0.
We installed 52.20.1 in a fresh folder, exported the talk, then upgraded:
npm i -D @slidev/cli@52.20.1 @slidev/theme-default playwright-chromium
npx slidev export --output v52.pdf
npm i -D @slidev/cli@53.0.0
npx slidev export --output v53.pdf
The upgrade took 5.88 seconds and both exports exited 0 with 9 pages. We rendered both PDFs and compared them pixel by pixel. Eight of nine pages were identical. The ninth was the Mermaid slide: Mermaid 12 wraps node labels onto two lines and lays the diagram out differently, and 4,830 of 94,070 pixels changed at our comparison resolution. Nothing broke, but a diagram you had carefully sized could reflow after an upgrade, which is exactly the slide you would not think to check.
Who should adopt Slidev
- Developers giving talks with code in them. Click by click line highlighting is the feature we could not replace, and it is what makes a code slide readable from the back of a room.
- Anyone who wants the deck to be a link. The static build, with
--base,--router-mode hashand--without-notes, is a complete presentation on any host. Marp's single HTML file works too, but without clicks or diagrams. - People already in the Node and Vue world. The 533 MB will not surprise you and custom Vue components on a slide are a real advantage.
- Teams that care about the bus factor. 377 contributors and a lead author responsible for 28 of the last 100 commits is a healthier shape than 96 of 100.
Who should not
- Someone who needs one PDF from Markdown by lunchtime. Marp installed in 11.79 seconds, found Chrome on its own and exported in under 3 seconds. Slidev's fastest path to a first PDF was 59 seconds of install plus either a 554 MB download or a flag you would only know from Part 3.
- Anyone on a locked down machine with Node older than 22.12. It ran for us on Node 20.20.2 with 10 engine warnings, but that is unsupported and the floor rose in the last major.
- Colleagues who live in PowerPoint. The editable export is good, but it is a one way trip. You cannot bring their edits back into
slides.md. - Anyone who will not page through the exported PDF. A misspelled layout, a missing image and an impossible highlight line all exited 0. Marp is not better here, we did not test its failure modes as hard, but Slidev has more features and so more ways to fail quietly.
Marp wins every row about cost. Slidev wins every row about what the talk can do on stage.
Everything that broke, across the course
- The scaffold's "install now?" prompt ended silently with no keyboard attached (Part 1).
- First export failed until
playwright-chromiumwas installed, then took 5 minutes 29 seconds (Part 1). - A bare CLI install could not find its own default theme, exit 1 (Part 1).
- A YAML error reported line 1 for an error on line 2 of the file (Part 1).
- A misspelled layout exited 0 and fell back to default (Part 1).
- Flat PDFs froze code at the last highlight step and dimmed the key command (Part 2).
- A Mermaid typo took 36.34 seconds to fail with no PDF (Part 2).
- A missing image exported as a blank half slide, exit 0 (Part 2).
- Refreshing on a plain static server returned 404 (Part 3).
- The default build published our speaker notes at
/presenter/(Part 3). - Marp waited on an open stdin until we killed it (this part).
Two of those were partly our own doing: the stdin one here, and the --output flag in Part 3. We have kept them in because a reader is just as likely to make them.
What we did not test
We did not test Windows, Linux, pnpm, Bun or Deno. We did not deploy to a real host, present to a live audience or open the PowerPoint files in PowerPoint or Keynote. We did not test Slidev's recording, drawing, remote control, Monaco live coding, or its addon and theme ecosystem beyond the default theme. On the Marp side we used only the CLI and its default theme, not the VS Code extension most Marp users actually write in, and we did not try Marp's own experimental editable PPTX output. Every timing is from one machine and a handful of runs, and install times depend more on the network than on anything either project does.
The escape hatch, and our final call
If you adopt Slidev and change your mind, your content survives in Markdown, but not unchanged. Our port to Marp needed an edit on every slide and lost the diagram and the click steps. That is the real switching cost. Nothing is locked up in a format you cannot read, but the parts that made the talk good do not travel.
Our call: we would use Slidev for the next technical talk we give. We would install it with PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 and --executable-path, end every highlight sequence with all, build with --without-notes, and page through every PDF before sending it. For a quick status deck with no code, we would reach for Marp and be done before Slidev finished installing.


