Skip to content
HTML decks, packaged.

Present HTML decks.
Anywhere.

Pack any HTML, reveal.js, or impress.js deck into a portable .stage container. Play it from file://, GitHub Pages, or your own platform — browser-native, zero backend, full presenter tools.

metaBrowser
Browser-native
metaBackend
Zero backend
metaLicense
metaI18n
EN / 中文
my-deck.stage·01 / 05·Cover
  • Runs from file://
  • No account, no upload
  • PowerPoint-grade presenter tools
  • Open source

Everything a deck container should be.

A strict manifest, capability-gated sandbox, and byte-reproducible zip — wrapped around the HTML you already wrote.

01

Browser-native

No installer, no electron wrapper. Open a .stage in any modern browser and present immediately, even from file://.

  • Chrome≥ 109
  • Firefox≥ 115
  • Safari≥ 16
  • file://works
02

.stage container

A signed, byte-reproducible zip with a strict manifest. Same input, same SHA-256, every time.

{
"schema": "slidestage@1.0",
"totalSlides": 12
}
03

Presenter tools

Laser pointer, persistent ink, multi-color highlighter, blackout, second-screen audience window — all PowerPoint-grade, all keyboard-driven.

laserok
inkok
highlighterok
blackoutok
audience windowok
04

Multi-framework

reveal.js, impress.js, html-ppt-skill, huashu-design, or plain HTML. Auto-detected, packed without modification.

reveal.js detected
impress.js detected
html-ppt detected
plain-html detected
05

Offline-ready

pnpm mirror folds every external image, font, and CSS into the .stage so the deck plays identically with no network.

  • imagesinlined
  • fontsinlined
  • cssinlined
  • scriptsopt-in
06

Bilingual UI

English and 简体中文 out of the box. URL ?lang= → localStorage → navigator resolution, full key parity tested.

  • enparity
  • zh-CNparity
  • ?lang=override
  • localStoragesticky

From HTML to .stage in one command.

No build step, no install step. The packer reads your folder, writes a strict manifest, and ships a single .stage zip.

The same packer powers SlideStageLite's in-browser converter and the slidestage-pack Cursor skill.

~/my-deck — slidestage-pack
$ pnpm convert pack ./my-deck \
  --out ./my-deck.stage

✓ Packed: my-deck.stage
  Size:    123.4 KB
  Slides:  12
  SHA256:    abc1234…
  Source: reveal.js → wrap

$ 
DESKTOP APP

Prefer a native app? Get SlideStage Lite for desktop.

The desktop build is the same .stage runtime as the web app, packaged with Tauri — a multi-monitor presenter view, double-click .stage to open, and full offline use.

macOS · Windows

Free and open source. Builds are published as signed GitHub Releases.

Open a deck. Hit present.

No signup, no install. Drop a .stage into SlideStageLite or pack your existing HTML in 60 seconds.