Marp

Marp (Markdown Presentation Ecosystem) β€” writing slide decks in plain Markdown, exporting to HTML/PDF/PPTX/PNG. Open source, MIT, built on CommonMark + extensions. The whole ecosystem is pluggable.

Description

Download or use

πŸ—’οΈ Description

The whole ecosystem is built around a single idea: slide deck = Markdown + CSS theme. The --- separator splits slides. The rest is markdown-it + directives + theming.

🧩 Marp family

ComponentRole
MarpitSkinny framework: Markdown + CSS β†’ HTML/CSS slides. Zero opinions about themes.
Marp CoreMarpit + official themes (default/gaia/uncover) + math + emoji + auto-scaling
Marp CLICLI: conversion to HTML/PDF/PPTX/PNG, watch mode, server mode
Marp for VS CodeLive preview + custom theming in the editor

Earlier, inactive integrations (Marp Web, Marp React, Marp Vue) β€” still in the repo but unsupported.

🧩 Key features

  • CommonMark base β€” if you can write Markdown, you can write slides
  • Directives β€” global (theme:, size:, paginate:) and local (<!-- _backgroundColor: aqua -->)
  • Image syntax β€” slide backgrounds, advanced backgrounds via <foreignObject>
  • Theming β€” pure CSS, no predefined classes/mixins; custom themes via @theme metadata
  • Export β€” HTML, PDF, PPTX (including editable), PNG/JPEG, presenter notes as TXT
  • Math β€” MathJax (default) or KaTeX via math: directive
  • Auto-scaling β€” fitting headers (# <!-- fit -->), shrink for code/math blocks

✍️ Reasoning for

A Markdown-first workflow for presentations fits my stack perfectly β€” Obsidian, Hugo, Quartz, everything is already MD-based. Instead of fighting with PowerPoint or Keynote, I write content like a regular note and pipe it through the CLI. PPTX export leaves an escape hatch when a client demands an editable file.

Related: in my setup there’s a skill create-marp-deck β€” interview-driven workflow for generating decks with gradient section dividers and automatic HTML/PPTX export. That’s exactly the use case. Full description of the 4-phase process (Brainstorm β†’ React β†’ Iterate β†’ Export) in Claude Code Marp Workflow.

Alternatives considered

  • reveal.js β€” JS-first, more JS than Markdown
  • Slidev β€” Vue-based, for devs; beautiful but a specific stack
  • Google Slides / PowerPoint / Keynote β€” WYSIWYG, no versioning, no diffs

Marp wins on: git versioning, no lock-in, export in 4 formats, working inside VS Code.

πŸ”— Resources


Template: tool