mrkeyoor.com_
Tue 01 Sept 17:45 UTC
Webevaluationupdated 26 Aug 2026

reveal.js review

reveal.js is a browser-based presentation framework that turns HTML or Markdown into slide decks. It solves the problem of building and publishing presentations with web tools, including nested slides, code highlighting, speaker notes, animation, math, and PDF export.

+37stars / 7d
Verdict

Our reveal.js build finished in 20 seconds and all 52 executed assertions passed, but the test command still exited 1 after Chromium logged 14 browser errors. Use it for web-native decks when HTML control, plugins, and live presentation features matter more than a locked document workflow. Rehearse PDF export, speaker view, and the exact browser environment before the presentation becomes expensive to get wrong.

We ran it

Lab card: what happened when we ran reveal.jsScreenshot of reveal.js (revealjs.com)
Install✓ · 35s209 packages · 218 MB
Build✓ · 20s
Tests✗ · 13sran, no count parsed
Known vulns00 critical · 0 high · 0 moderate · 0 low (npm audit)
Repo184 files~18,034 lines of source · 6.6 MB · 2 CI workflows · tests dir

Answers from our run

Does reveal.js build from source?

Dependencies installed in 35 seconds (209 packages), and the build succeeded in 20 seconds. We cloned commit 807b430 into a clean Debian container with 3 CPUs and no project-specific setup.

Do reveal.js's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Does reveal.js have known vulnerabilities in its dependencies?

npm audit found none in the dependency tree at the time of our run.

Who should not use reveal.js?

Authors who want a full visual editor inside the open-source project: the README points them to the separate Slides.com service.

What are the alternatives to reveal.js?

Marp, Slidev, remark. Our reveal.

Setup4/535-second install and clean build; browser tests need a capable host
Docs5/5Focused guides cover markup, plugins, notes, export, and the API
Community5/572,199 stars with pushes and issue activity in August 2026
Maturity5/5Developed since 2011, MIT licensed, and released as 6.0.1

Discussed on

  1. hnReveal.js286 points
  2. hnreveal.js: HTML5 based Slide Presentation Tool110 points
  3. hnRvl.io: Online authoring and hosting of reveal.js presentations46 points
  4. hnForget PowerPoint: reveal.js5 points
  5. hnA framework for easily creating beautiful presentations using HTML.4 points

Who it’s for

Developers who want presentations stored as code and served like a website.
Technical speakers who need syntax highlighting, math, speaker notes, or custom JavaScript.
Teams that want decks in version control and can test them in the browser used for presenting.
Designers comfortable changing HTML and CSS beyond the supplied themes.

Who it’s NOT for

Authors who want a full visual editor inside the open-source project: the README points them to the separate Slides.com service.
Teams that require PDF output to match every live setting without checking it: issue 3924 reports that c/t slide-number formatting becomes a single number in PDF export.
Locked-down deployments whose Content Security Policy forbids inline styles: issue 3375 reports that the speaker view uses an inline style block.
React users expecting every plugin to behave like a native component: issue 3466 reports Markdown rendering trouble in a React integration.
Presenters who cannot rehearse on the target machine: our browser tests logged 14 errors even though all 52 executed assertions passed.

Setup reality

Our sandbox installed 209 npm packages in 35 seconds and used 218 MB. The build succeeded in 20 seconds. Tests exited 1 after 13 seconds: the runner said 52 of 52 tests passed, but also recorded 14 errors after Chromium reported pthread_create: Resource temporarily unavailable.

A basic deck needs a browser and HTML or Markdown. Development uses npm and Vite; optional capabilities load plugins for notes, Markdown, highlighting, math, search, and zoom. PDF export and the test suite depend on a browser path, so CI containers need enough browser support.

The 6.6 MB checkout contained 184 files and about 18,034 source lines. Npm audit found 0 known vulnerabilities. There is no Dockerfile, which is unsurprising for a static web framework, but deployment, asset hosting, fonts, and any remote media remain the author's responsibility.

reveal.js treats a presentation as a web application

A reveal.js deck is HTML rendered full-screen in a browser. Slides are usually section elements, with nested sections creating a vertical branch beneath a horizontal slide. Authors can write content directly in HTML or load Markdown through a plugin. That model makes links, video, interactive examples, custom fonts, and ordinary web layout available without waiting for a presentation application to support them. It also means the browser is part of the runtime.

The built-in range is unusually broad for a 6.6 MB source checkout. The README points to nested slides, Markdown, Auto-Animate, speaker notes, LaTeX typesetting, highlighted code, PDF export, and an API. Those pieces cover most technical talks without a plugin hunt. The API remains the escape route when a deck needs to react to navigation, synchronize another display, or control embedded content.

Version 6.0.1 is current, with 909 issues and pull requests open

GitHub recorded 72,199 stars and a last push on August 24, 2026. The latest release, 6.0.1, shipped on April 11, 2026 with Vite 8, TypeScript 6, a postMessage hardening change, and a PDF media-control fix. The 909 open items combine issues and pull requests, so that number is backlog size rather than a bug count. Fresh pushes plus actively updated reports show ongoing work.

Long history helps with browser edge cases, but it cannot make live HTML and printed output identical by definition. Issue 3924 reports that a deck configured to show current and total slide numbers displays the full format interactively, then prints only the current number in PDF output. An older report describes headings disappearing from later pages when printing through Firefox. Anyone distributing a PDF should inspect the exported file, not assume the live deck is the proof.

What happened when we ran it

Our sandbox installed 209 npm packages in 35 seconds and occupied 218 MB. The production build completed successfully in 20 seconds. Npm audit reported 0 known vulnerabilities across critical, high, moderate, and low severities. For a project that bundles TypeScript, Vite, Sass, Puppeteer, Markdown parsing, code highlighting, and ZIP packaging in its development tree, that is an easy first build.

The test command ended with exit code 1 after 13 seconds. Its summary said 52 of 52 tests passed, 0 failed, and 14 errors. Chromium logged pthread_create: Resource temporarily unavailable, then Puppeteer's launcher closed. The log also showed two individual HTML test pages completing. We cannot turn that into a passing suite: the assertions that ran passed, while the browser-backed runner still reported errors and a failed process.

Our fresh Debian container had 3 CPUs and 8 GB of RAM and ran without privileges or secrets. The repository had 184 files, about 18,034 lines of source, 2 CI workflow files, and a tests directory. It had no Dockerfile. That absence is reasonable for browser assets, though teams standardizing builds in containers will have to supply their own image and make browser requirements explicit for tests.

Speaker notes and PDF export need target-browser rehearsal

Speaker view is one of reveal.js's best practical features because it separates the audience display from notes, time, and navigation controls. The open CSP report in issue 3375 says this view includes an inline style block, which a strict policy can block. If a deck runs on a corporate domain with a locked policy, load speaker view there before event day and decide whether a policy exception or a code change is acceptable.

PDF export is similarly useful and similarly browser-shaped. A static PDF is often the artifact conference organizers and attendees keep, while the browser deck contains transitions and interactive material that paper cannot reproduce. Test page breaks, slide numbers, fonts, code overflow, videos, and SVGs in the export path you will use. One successful live rehearsal does not cover that second output.

Markdown is convenient until the deck becomes an application

Markdown keeps ordinary decks readable in a repository and reduces repetitive markup. Syntax highlighting and math plugins suit engineering and academic talks, while Auto-Animate can move matching elements between slides. Once a deck needs custom components, state, or framework integration, direct HTML and the reveal.js API become more important. The abstraction is intentionally close to the DOM rather than hiding it.

That choice can surprise React teams. Issue 3466 reports a minimal React setup where the Markdown plugin did not work as expected. The repository now includes a React area, but a buyer should test the exact mix of framework lifecycle and reveal.js plugins it needs. For a presentation with ordinary Markdown and a few code examples, adding a component framework may create more lifecycle work than value.

Choose reveal.js when the browser is an advantage

The strongest reason to pick reveal.js is control. A web developer can inspect every slide, version the source, publish it on static hosting, and add behavior with the same tools used for a website. MIT licensing keeps the framework easy to adopt. The 20-second build in our run makes experimentation cheap, while the browser errors show why CI and rehearsal still need a realistic host.

Choose Marp when the document and exported files matter most. Choose Slidev when Vue components and its authoring conventions are already desirable. reveal.js is the better fit when the live deck itself is a small web application. Keep a tested browser available, verify speaker view under the real CSP, and inspect the PDF separately before sending it out.

Alternatives

ProjectWhat it isPick it when
MarpA Markdown presentation ecosystem built around concise slide documents and export tooling.pick this instead when Markdown-first authoring and repeatable PDF or PowerPoint export matter more than browser-level customization.
SlidevA developer presentation system based on Markdown, Vue, and Vite.pick this instead when Vue components and a more opinionated developer deck workflow fit your team.
remarkA compact in-browser Markdown slideshow tool with a much smaller surface area.pick this instead when a simple Markdown deck is enough and you can accept a quieter maintenance history.

What people are saying

  1. [github-trending] hakimel/reveal.js

Sources

  1. reveal.js README
  2. reveal.js 6.0.1 release
  3. PDF slide-number report
  4. Speaker view CSP report
  5. React Markdown integration report

More web reviews

axios · super-productivity · Graphite · fastify · tabler · go-zero · the whole board →