Familiar presentation and annotation experience

Make your slides in HTML because AI is good at it

Runs everywhere · Open source · Free

Frank Huettner

Press A and scribble across this slide

Built by the model, owned by you

A reveal.js deck is just HTML.

  • An LLM can write and revise the whole deck from a prompt — text is its home turf.
  • The deck opens in any browser and looks the same everywhere, fonts and all.
  • It's your file: nothing to buy, nothing to lock you in.

A polished deck is now a prompt away — and it stays entirely yours. That's a genuinely nice place to be.

Fresh, yet familiar

A presenter toolbar that hides until you reach for it.

Pen, highlighter, text, boards, navigation, and export — laid out the way you'd expect, then out of the way so the slide gets the whole screen. Drawing on a reveal deck isn't new; making it feel this obvious is the point. One file, no separate CSS to include.

Draw on it live

Press A, or the pen button , and write right here.

Try it now — scrawl a note, circle a word, underline this line.

Keys on this slide

Colours and three pen widths in the bar · E eraser (per stroke, not clear-all) · Ctrl+Z undo · Ctrl+Shift+Z redo · X clear this slide · Esc exit.

Ink lands exactly under the cursor at any window size or zoom — and it survives reloads, and even editing the deck later.

Highlight what matters

Press H for the highlighter .

Swipe it across this whole sentence and watch it glow.

A broad, translucent marker that lays down under your pen ink — so your circles and arrows still read on top. It shares the pen's colour palette; pick the amber swatch for the classic look.

The same palette, four ways

White slide or dark board · on screen or through a projector.

On screen
Through a projector
white slide
dark board
12%

Drag the slider to raise the room light and watch the projector column wash out. Each hue ships in two shades — a calmer one and a more luminous one; you might reach for the calmer shades on white and the luminous ones on a board, but several read nicely on white too — so judge by eye. Swatches and slider are live, interactive HTML right in the slide — dragging adjusts the room light without advancing to the next slide (reveal.js normally reads a drag as a swipe; taps on a control don't, like the aspect-ratio buttons a few slides on).

Type, don't just scribble

Press T , click, and type.

Drop a label on this slide — your name, a date, a caption.

That's the whole interaction: click, type, done. Because it stays real text, on export it simply merges into the slide's HTML — selectable in the PDF, editable anywhere, never a flattened image. Drag to move, click to re-edit.

A whiteboard, mid-sentence

The board button drops a blank board into the deck — without leaving your talk.

Whiteboard or blackboard (the pen colour swaps to stay visible), in the deck's own slide format. It's a real slide.

It shows in the overview, the speaker view, and the PDF export — and it's uncounted, so your audience-visible slide numbers don't shift.

Your ink is real geometry

Draw a circle, then switch the deck format:

The circle stays a circle — strokes remember their aspect ratio and are aspect-fit, not stretched. Ink is stored relative to the slide box, not as pixels, which is why it survives resize, reload, and deck edits. (The buttons also show that taps on interactive elements never trigger slide navigation.)

Save it. Ship it. Print it.

Portable copy

One self-contained HTML file with your ink baked in as SVG and your text as real HTML. Opens anywhere, even without the plugin — and re-absorbs into the editable model wherever the plugin loads.

Clean copy

The shareable deck, annotations stripped.

PDF export

One click; ink as crisp vector overlays, text as selectable HTML, boards as real pages. Or export clean.

All from the download / print button in the toolbar. Live ink lives in localStorage per deck; nothing leaves your machine unless you export it.

What about the slide editors?

Some build web decks by hand — slides.com (from reveal's own author), parallax-presentations, icp-editor. And the classics — PowerPoint, Keynote, Google Slides — aren't going anywhere. Point-and-drag is a genuinely nice way to work.

Both ways have their place.

Reach for a visual editor when you want to arrange slides by hand; reach for code when you'd rather let a model build it. Either way, you can draw on your slides live — here, from one small toolbar that stays out of the way.

Real LaTeX, first-class

Write mathematics the way you already write it:

\[ e^{i\pi} + 1 = 0 \qquad \int_{-\infty}^{\infty} e^{-x^2}\,dx = \sqrt{\pi} \]

\[ \nabla \times \mathbf{B} = \mu_0\mathbf{J} + \mu_0\varepsilon_0\frac{\partial \mathbf{E}}{\partial t} \qquad \binom{n}{k} = \frac{n!}{k!\,(n-k)!} \]

LaTeX renders through the math plugin (KaTeX or MathJax) — inline like \( a^2 + b^2 = c^2 \) or displayed. It's typeset, selectable, and sharp at any zoom. And yes — you can draw straight on a formula.

It's a full reveal.js deck

Everything reveal does, untouched.

  • Points reveal one press at a time…
  • …in any order you set — this line jumped ahead.
  • …and a line can appear, then quietly bow out.
  • Markdown, code highlighting, auto-animate, backgrounds — all included.

Set data-fragment-index to reveal in any order; fade-in-then-out makes a fragment vanish again. Each step is one arrow press and gets its own PDF page.

…including Magic Move

Keynote's morph, in a plain HTML deck. Watch this token — press → and keep your eye on it.

data-id="thing"

…including Magic Move

data-id="thing"

That glide was auto-animate: give two elements the same data-id on consecutive slides and reveal animates the difference — position, size, everything. It's core reveal, not this plugin, and there's no build step. This deck just did it to that token — and it drives the code build on the last two slides too.

…including vertical stacks

Tuck optional detail below a slide, instead of after it.

Press to drop into the stack — the toolbar's up/down arrows appear only when a slide has somewhere vertical to go.

You're in a vertical stack

Nested slides let you tuck away optional detail. Honestly, they can also confuse an audience about where they are in the talk.

If that trips you up, just don't use them.

Plenty of great decks are a single straight line of slides — mine usually are. But if you do nest, every leaf keeps its own ink. Press to go back up.

References

Everything this demo is built with — plus the visual editors worth knowing if you'd rather place slides by hand.

The plugin is one line

This is the whole install — it adds the toolbar, ink, boards, and export.


        Reveal.initialize({
          plugins: [ RevealAutohideToolbar ],
        });
      

The look is a theme you own

The plugin adds tools, never a style. This deck's design is plain CSS:


        Reveal.initialize({
          width: 960, height: 540,   // the PowerPoint 16:9 box
          margin: 0, center: false,  // edge-to-edge, top-aligned
          transition: 'fade',        // dissolve, not slide
          plugins: [ RevealAutohideToolbar ],
        });
      
The fonts, colours, the letterbox and the cards are a <style> block in this same file — the plugin never touches them. Copy this deck's theme, or bring your own.

github.com/frankhuettner/reveal.js-autohide-toolbar · MIT · plugin, config, theme, even the cover image — all inlined in one HTML file (shared libraries load from a CDN).
This deck is the plugin's own test subject — it runs in CI on Chromium & WebKit × reveal 5 & 6.