reveal.js · Marp · split on `---` · client-side render

Markdown to Slide Decks

Splits Markdown on `---` separators into slides, then emits a standalone reveal.js HTML deck or a Marp-frontmatter Markdown file.

Markdown → Slides
Slides
4
split on `---`
Source
152 B
25 lines
Output
8 B
loading
Flavor
reveal
.html deck
FlavorTitle
input · markdown
slides · 4 · reveal
S01
My Talk
25 B · 3 lines
S02
Why
35 B · 5 lines
S03
Demo
40 B · 5 lines
S04
Thanks!
31 B · 3 lines
Quick Start

How to build slides from Markdown

Separate slides with `---` on its own line. Pick a flavor — reveal.js (standalone HTML) or Marp (Markdown source).

  1. 01

    Write slides

    Each section becomes a slide. Use `---` (line by itself) as the separator.

    Parsing runs through marked with GFM extensions enabled — tables, task lists, strikethrough, and fenced code blocks all match GitHub’s rendering.

    mdGFMmarkedCommonMarklive
    src · markdownmd · GFM
    # Slide 1
    ---
    # Slide 2
    loaded · GFMGFM · ready
  2. 02

    Pick flavor

    reveal.js → ready-to-host HTML. Marp → annotated .md for Marp CLI / VS Code.

    Soft-break behaviour is configurable: by default a single newline becomes a space (CommonMark), toggle on for chat-style <br> insertion.

    fmtsoft-breaksoptionsconfiglive
    fmt · optionsreveal · live
    reveal · marp
    options applied · livelive
  3. 03

    Set title

    Used for <title> on the reveal.js HTML deck.

    The preview is scoped under a .mde class so its CSS doesn’t bleed into the rest of the page. Output HTML is whitespace-controlled for clean diffs.

    metapreviewscoped CSSrenderstable
    title · renderedok · ready
    My Talk
    rendered · liverendered
  4. 04

    Download / present

    Open the HTML in any browser, or feed the Marp file to marp-cli.

    Export covers both raw Markdown and rendered HTML; downloads stream as text/markdown or text/html via Blob + object URL.

    goclipboard.md.htmlblob
    ✓ · exporteddeck · done
    ✓ slides.html
    shipped · ready to shipsuccess
Pro tips

Author Markdown that renders everywhere

GFM is the safe default

GitHub-Flavored Markdown is the de-facto baseline (tables, task lists, strikethrough). CommonMark is stricter but ubiquitous as a fallback.

Soft-break behaviour varies

A single newline is a space in CommonMark, a <br> in GFM. Toggle soft breaks when source matters.

Escape inside code fences

Backticks inside fenced blocks need a longer fence — three becomes four. Use ~~~ if your content has many backticks.

Anchors are slugified

GitHub lowercases, strips punctuation, and joins with hyphens. Duplicate headings get -1, -2 suffixes.

Tables need a header row

The dash row sets alignment (:---, :-:, ---:). Use Table Aligner for diff-friendly columns.

Front matter is YAML

Triple-dash blocks at the top of files are parsed by static-site generators. Use the Front-Matter Validator to catch syntax errors.

Use Cases

When to make slides from Markdown

Talks, lunch-n-learns, demos.

Conference talks

Plain-text source, version-controlled. Render path uses marked with GFM extensions enabled (tables, task lists, strikethrough, autolinks), so what you preview matches what GitHub publishes bit-for-bit. Soft-break behaviour is configurable for chat-style vs prose Markdown.

GFM-compliant

Lightning talks

Spin up 10 slides in 10 minutes. Pairs cleanly with the Markdown Cheatsheet for syntax you can't quite remember — callout blocks, footnotes, definition lists. Output stays diff-friendly so style-only changes don't drown out real edits in PRs.

GitHub-perfect

Demo decks

Code fences highlighted natively in reveal.js. Cross-platform safe: anchors, code fences, and tables behave identically on GitHub, GitLab, Bitbucket, and Gitea. Heading-anchor slugs follow GitHub's lowercase-and-hyphenate rules so deep links survive a docs migration.

diff-friendly

Onboarding

Replace stale PowerPoints with maintainable Markdown. No server roundtrip — perfect for proprietary content you can't paste into a public tool. The full marked + GFM bundle ships with the page, so it works offline once loaded.

render-stable

Workshop handouts

Marp builds PDF handouts from the same source. Front matter (YAML / TOML / JSON) passes through unchanged so static-site pipelines (Jekyll, Hugo, Astro, Eleventy) read it correctly. Pair with the Front-Matter Validator to catch syntax errors before deploy.

cross-platform

Stand-up updates

Repo-tracked slide history for retrospectives. Output is reproducible: identical input always produces identical Markdown, so doc-generation scripts can rely on it for snapshot tests and embedded into release workflows.

SEO-friendly
FAQ

Frequently asked questions

reveal.js is in-browser, slick transitions, and pulls assets from CDN. Marp is Markdown-first and builds via marp-cli to HTML/PDF/PPTX.
Default reveal.js black theme; Marp's default. Customize by editing the output.
reveal.js supports them via &lt;aside class='notes'&gt;. Add manually for now.
Marp CLI can. Pipe the Marp output through marp --pptx slides.md.
No — slide generation runs locally. Reveal.js pulls assets from CDN when you open the HTML.
Suggest a tool

Something missing?

Tell us what you need. We ship the top requests every two weeks.

Sent straight to the maintainers · no account needed
47 in queue·8 shipped this month
Request queued. Thanks!