reveal.js 6.0: The HTML Presentation Framework That Still Rewards Hand-Written Slides
The HTML Presentation Framework. It enables anyone with a web browser to create beautiful presentations for free.
At a glance
- What is it?
- reveal.js is a browser-based presentation framework with nested slides, Markdown, Auto-Animate, and PDF export. Version 6.0 landed in March 2026, and the project remains a solid choice for developers who want slides as code, but it has trade-offs for non-programmers.
- Who is it for?
- Adopt reveal.js if you are a developer or technical writer who wants version-controlled slides, precise layout control, and a framework that runs in any browser without a backend. Skip it if you need a graphical editor or rapid visual design; Slides.com exists for that, but it is a separate paid service.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 5 days ago.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What Problem Does reveal.js Actually Solve?
reveal.js addresses a specific pain: slides that live in a binary file format, like PowerPoint or Keynote, are hard to version, diff, and automate. The framework turns a presentation into a web page, so your slides are HTML, CSS, and JavaScript. That means you can put them in a Git repository, review changes in a pull request, and regenerate them with a build script. It is for people who already think in code. The README says it enables anyone with a web browser to create presentations for free, but the real audience is developers and technical presenters. A designer who wants drag-and-drop will not find it here. The project is MIT licensed, which removes most licensing friction for commercial use. It has been around since 2011, and the copyright notice in the README confirms that. Longevity is not a guarantee of quality, but it does mean the project has survived multiple browser generations.
The Architecture: Slides as a Web Document
The core idea is that a presentation is a single HTML file with a specific structure. You write sections and the framework turns them into slides. The README points to the markup documentation for the exact syntax. Nested slides are a distinctive feature: you can create vertical slides that navigate down, not just horizontally. This gives you a two-dimensional grid of slides, which is useful for drill-down content. The framework also supports Markdown, so you can write your slide content in a lighter syntax instead of raw HTML. That is a significant ergonomic win for people who want to focus on content. Auto-Animate is another mechanism: it animates changes between slides automatically, so you do not need to write CSS transitions by hand. The framework loads in the browser and handles navigation, keyboard events, and touch gestures. It is not a server-side tool; everything runs client-side. The documentation covers an extensive API, so you can control the presentation programmatically, which opens the door to integrations like remote control or embedded analytics.
Getting It Running: Real Commands and Config Keys
The README points to the installation page for the actual commands, but the standard approach is to download the release or install via npm. The repository has a default branch named master, and the latest release is 6.0.1, pushed on April 11, 2026. The installation page (not in the README but linked) typically instructs you to run `npm install reveal.js` and then import the CSS and JavaScript files. You would create an HTML file with a `<div class="reveal">` container and `<div class="slides">` inside, then initialize with `new Reveal()` and call `initialize()`. The API documentation covers configuration options like `transition`, `controls`, and `progress`. For Markdown, you use `<section data-markdown>` and include a separate Markdown file or inline content. PDF export is built in: you add `?print-pdf` to the URL and print the page. These are concrete steps from the official docs, not guesses. The key point is that you do not need a build tool; a browser is enough. But you do need to understand HTML structure and basic JavaScript to get the most out of it.
Where It Falls Short: The Wrong Tool for Some Jobs
The most obvious limitation is the learning curve. If you are not comfortable editing HTML and JavaScript, you will struggle. The README mentions a visual editor, Slides.com, but that is a separate product, not part of the open source project. That means the framework itself has no GUI. Another failure mode is collaborative editing. Because slides are static files, real-time co-editing, like in Google Slides, does not exist. You would need to handle merge conflicts manually. Also, the framework is browser-based, so if you need to present offline on a machine without a modern browser, you are out of luck. The README says it works in any web browser, but older browsers may not support all features, especially Auto-Animate, which relies on the Web Animations API. The documentation is extensive, but the README is thin; you have to visit the site to learn the actual syntax. For someone who wants a quick presentation without reading a manual, this is a barrier.
Alternatives: A Real Comparison with Different Approaches
The most direct alternative is Slides.com, which the README itself promotes as a graphical editor for reveal.js. The difference is fundamental: Slides.com is a hosted, visual tool where you drag and drop elements, and it generates the reveal.js code for you. It is made by the same people, so the output is compatible, but the workflow is opposite. With reveal.js, you write code; with Slides.com, you point and click. Another alternative is other HTML presentation frameworks like impress.js or remark, but the README does not mention them, so I cannot compare specifics. The key difference between reveal.js and a traditional tool like PowerPoint is the file format and the rendering engine. reveal.js renders in the browser, so you get web-native features like embedded iframes, live code demos, and CSS styling. PowerPoint is a native application with its own rendering engine, which is more predictable but less flexible. For a developer, the browser is the natural medium; for a non-developer, the learning curve is steep. The existence of Slides.com shows that the authors recognize this gap.
Maintenance and Upgrade Cost: What the Release History Says
The release history shows a clear pattern: 5.2.1 came out in March 2025, then 6.0.0 in March 2026, and 6.0.1 a month later. That is a major version bump, which usually indicates breaking changes. The README does not list them, so you must read the release notes on the GitHub releases page. The project is actively maintained, with the last push in April 2026. The MIT license means you can modify and redistribute the code, but you must retain the copyright notice, which is stated in the README. The upgrade cost is moderate: if you have a custom theme or plugins, you need to test them against the new version. The project has a stable API, but the move from 5.x to 6.x could affect initialization. The documentation is the primary resource, and it is likely updated for 6.0. There is no built-in migration tool mentioned in the README, so you should plan to manually check your presentations after upgrading. For a framework that generates static files, that is a manageable cost, but it is not zero.
Editorial conclusion
Adopt reveal.js if you are a developer or technical writer who wants version-controlled slides, precise layout control, and a framework that runs in any browser without a backend. Skip it if you need a graphical editor or rapid visual design; Slides.com exists for that, but it is a separate paid service. Before adopting, verify the 6.0 release notes for breaking changes from 5.x, especially if you rely on plugins or custom themes, and check the documentation for the new initialization options.
Community notes