← Back to Blog

reveal.js: Themes, Export & How It Compares to the Alternatives

reveal.js is the open-source HTML presentation framework with 71.9k GitHub stars — you author slides in HTML or Markdown and present in any browser. Here's an honest guide: how themes, templates and examples work, how PDF and PowerPoint export really behaves, how it compares to Slidev and Marp, and where an agent-native design workspace fits.

reveal.js: Themes, Export & How It Compares to the Alternatives

If you write code and you need to give a talk, you have probably hit reveal.js. It’s the open-source framework behind a huge share of the developer-conference slides you’ve watched: you author each slide in HTML or Markdown, and it runs as a web page in any browser — with themes, transitions, fragment animations, speaker notes, and native PDF export built in. With 71.9k stars on GitHub and an MIT license, it’s the default answer to “how do I make slides without opening PowerPoint.”

This guide is an honest map of it. What reveal.js actually is, how themes and templates and examples fit together, how exporting to PDF and PowerPoint really behaves (there’s a catch), how it stacks up against the other open-source contenders, and — the part most write-ups skip — where a framework like this stops being the right tool and something else takes over. If you’re weighing your options for an AI-and-agent-assisted deck workflow, it helps to know exactly what reveal.js is and isn’t.

What reveal.js is

reveal.js calls itself “The HTML Presentation Framework,” and that description is precise. It is not an app you open and click around in — it’s a JavaScript library you drop into an HTML file. Each slide is a <section> element; nest sections and you get vertical slides. You style everything with CSS, wire in transitions and fragments with data-attributes, and present by opening the page in a browser. Because the output is a web page, anything the web can do — live code, embedded video, iframes, WebGL, your own components — can live on a slide.

The trade-off is right there in the definition: this is a developer framework, not a GUI. Your tools are a code editor and a browser, not a canvas with drag handles. That’s exactly why developers love it — full version control, full CSS control, no proprietary file format — and exactly why a non-coder will bounce off it. It’s also genuinely free: no account, no watermark, no export cap, no per-seat pricing. You own the HTML.

Themes, templates & examples

Most searches around reveal.js are really about making it look good without designing from scratch, so here’s how the pieces fit.

reveal.js themes are the built-in starting point. The framework ships with a set of ready-made themes — Black, White, League, Beige, Sky, Night, Serif, Simple, Solarized, and more — that you switch by changing a single stylesheet link. A theme is just CSS, so a “custom reveal.js theme” means writing (or forking) a Sass/CSS file that sets your fonts, colors, and heading styles. There’s no theme store; you’re editing stylesheets.

reveal.js templates and examples live mostly in the community rather than in one official gallery. The repository ships example decks, the docs site (revealjs.com) is itself a reveal.js deck you can read the source of, and GitHub is full of starter templates, boilerplates, and framework wrappers. If you’re searching for “reveal js examples,” the highest-signal one is the official site’s own source — it demonstrates nearly every feature in place. The catch for beginners: a “template” here is a code repository to clone and edit, not a design file you fill in.

Exporting to PowerPoint & PDF

PDF export is a first-class, built-in feature and it works well. Append ?print-pdf to your deck’s URL, open your browser’s print dialog, choose “Save as PDF,” and reveal.js reflows every slide onto its own page. This is the clean, supported path — the PDF you get looks exactly like your slides.

Exporting reveal.js to PowerPoint is where expectations need managing. There is no native “Save as .pptx” that produces an editable PowerPoint file. The practical route is PDF → PPTX conversion, and that conversion is lossy: each slide arrives in PowerPoint as a flat image, not as editable text boxes, shapes, and layouts. So if someone downstream needs to open your deck in PowerPoint and edit it — retype a headline, restyle a chart, reflow a bullet — reveal.js is not the tool that gives them that. It’s built to be presented from the browser, and its editable source is HTML, not .pptx. Knowing this before you start saves a painful surprise the day a colleague asks for “the PowerPoint.”

reveal.js alternatives & how it compares

reveal.js isn’t the only way to write slides as code. The two closest open-source alternatives — the ones people mean by “reveal.js alternative” — are Slidev and Marp, and it’s worth being honest that Open Design sits in a different layer entirely rather than competing head-on.

ToolAuthoringEditable .pptxTemplatingLicense
reveal.jsHTML or MarkdownNo (PDF→PPTX is lossy images)Themes = CSS/Sass; community templatesMIT
SlidevMarkdown + VueNo (image/PDF export)Vue components + themesMIT
MarpMarkdown onlyNo (PDF/PPTX as images)Markdown themes (CSS)MIT
Open DesignDescribe it to your agentYes — editable output against a design systemFirst-party deck templatesApache-2.0

Slidev is the closest philosophical sibling: it’s Markdown-first with Vue components underneath, so it trades some of reveal.js’s raw HTML freedom for a more structured, developer-ergonomic authoring flow. If you live in the Vue/Vite world and want live coding demos, Slidev is the natural pick. Marp goes the other direction — Markdown only, deliberately minimal, no components — which makes it the fastest path when your slides are mostly text and you never want to think about a framework.

All three are code-first frameworks with the same fundamental shape: you write the deck, you present in a browser, and editable-PowerPoint output isn’t really the point. Choosing between them is mostly about which authoring surface you want (raw HTML, Vue Markdown, or plain Markdown) — not about capabilities that one has and the others lack.

Where Open Design fits

Here’s the honest boundary. reveal.js asks you to write the deck — every slide, in code. That’s a feature if you want hand-crafted HTML control, and nothing here replaces it if that’s your goal.

Open Design is a different layer, and it’s a product we make, so read this with that in mind. It’s an open-source (Apache-2.0), local-first, bring-your-own-key Agent-Native Design Workspace that sits outside the coding agent you already use — Claude Code, Codex, or Cursor. Instead of hand-authoring HTML, you describe the deck you want and the agent generates an editable one against a design system, so it comes out on-brand and stays editable rather than frozen as a rendered artifact. Open Design also ships first-party deck templates you can start from.

It is not a replacement for reveal.js if what you want is to write slides as code with full CSS control — that’s reveal.js’s home turf and it’s excellent at it. Open Design is for the case where you’d rather brief an agent than write markup, want the output to match a design system across many decks, and want editable files you own at the end. Reach for reveal.js when the deck is the code you’re writing; reach for a workspace when the deck is one on-brand output among many that an agent produces for you.

FAQ

Is reveal.js free? Yes. reveal.js is open source under the MIT license — free to use commercially, with no account, no watermark, and no export limits. You self-host the HTML.

How do I add or change a reveal.js theme? reveal.js ships built-in themes (Black, White, League, Sky, Night, Serif, and more) that you swap by changing one stylesheet link. A custom theme means writing or forking a CSS/Sass file with your own fonts and colors — there’s no theme store to browse.

Can I export reveal.js to PowerPoint? Not to an editable .pptx. reveal.js exports cleanly to PDF (add ?print-pdf and print to PDF from your browser). Converting that PDF to PowerPoint is possible but lossy — each slide lands as a flat image, not editable text and shapes. If you need an editable PowerPoint, reveal.js isn’t the right source.

reveal.js vs Slidev vs Marp — which should I use? All three are open-source, code-first, MIT-licensed. Pick reveal.js for raw HTML control, Slidev for Markdown-plus-Vue components (great for live demos), and Marp for the simplest Markdown-only decks. None targets editable-PowerPoint output.

Do I need to know how to code to use reveal.js? Effectively, yes. reveal.js is a developer framework — you work in a text editor with HTML, Markdown, and CSS, not a drag-and-drop GUI. If you want to describe a deck in plain language instead, that’s the gap an agent-native workspace like Open Design fills.

The takeaway

reveal.js earns its 71.9k stars: it’s a free, MIT-licensed, HTML-native way to build slides that run anywhere a browser does, with real themes, clean PDF export, and total CSS control. Just go in clear-eyed — it’s a framework you write in, not an app you click through, and “export to editable PowerPoint” isn’t something it does. If you want to author decks as code, reveal.js (or Slidev / Marp) is a great home. If you’d rather describe a deck and have your agent generate an editable, on-brand one you own, that’s where an Agent-Native Design Workspace picks up.


← Back to Blog View source on GitHub ↗