lecture.studio

Marp vs Slidev vs reveal.js for lecture slides

For lecture decks, Marp is the least setup and the most portable: one Markdown file, one command to PDF, no build. Slidev is a Vue application for developer talks with animations, code features and components, one Node project per deck. reveal.js is an HTML framework whose Markdown plugin loads a file into a page, strongest for interactive web content. A course of forty decks: Marp; a live-code talk: Slidev; a web page: reveal.js.

This comparison is for instructors, so it looks at the course-level questions (files, export, notes, reuse) rather than feature counts. The Marp facts were tested on marp-cli 4.5 in September 2026; the Slidev and reveal.js facts come from each project's documentation and are marked as such.

What each one is

The file

Marp Slidev reveal.js
A deck is one .md file a project folder with slides.md, package.json, node_modules an .html page plus optional .md
Renders without a project yes (marp-cli or VS Code) no (needs the project's dependencies) yes, with the framework files present
Readable in any Markdown viewer yes mostly (frontmatter per slide, Vue components show as tags) the .md yes, the page no
Forty decks in a course folder forty files forty projects, or one project with many entries forty pages sharing one framework copy

This row decides it for a course. Marp's deck is a file; the others are applications.

Setup

Speaker notes and presenting

All three have notes and a presenter view. Marp: notes are HTML comments; presenter view in the HTML export (press P), also in Lecture Studio. Slidev: notes are comments too, presenter mode in the dev server with a drawing layer (docs). reveal.js: notes in an <aside class="notes"> or a Note: line in Markdown, speaker view with the notes plugin (docs).

PDF and PowerPoint

For a course that hands students a PDF every week, Marp's one command is the difference between doing it and not.

Columns, images, math, code

Slidev has the most for code-heavy talks. Marp has enough for lectures and stays a file.

Offline and long-term

Marp's HTML export is self-contained apart from web fonts and twemoji; the PDF is fully offline. A Slidev deck depends on its node_modules and will need the same versions to build in three years (docs describe pinning). A reveal.js page needs its framework folder next to it and then works forever offline. For material that must still open at the end of the decade, Marp Markdown plus the PDF, or reveal.js with its framework vendored.

Lecture Studio's choice

Lecture Studio writes decks as Marp for the reasons in the file table: a course is a folder of plain files that an assistant can read, cite and edit, that git can diff, and that marp-cli can export. It is not the tool for a live-coded conference talk; that is Slidev's ground.

FAQ

Marp vs Slidev: which is better?

For a course: Marp, because a deck is one file with no project. For a developer talk with live code, animations and components: Slidev, which is built for it.

Marp vs reveal.js: which should I use?

Marp when the deck should be a Markdown file that exports to PDF in one command; reveal.js when the deck is a web page with interactive content and you are comfortable with HTML.

Can I convert between them?

Not directly. The Markdown of a Marp deck is close to reveal.js's Markdown plugin format (slides separated by ---), so simple decks move with light editing; Slidev's per-slide frontmatter and components do not translate.

Which one exports to PowerPoint?

Marp (--pptx) and Slidev (export --format pptx). reveal.js does not.