Reference

Every option the a11y plugin accepts.

The complete a11y configuration: the options and their defaults, the keyboard shortcuts, what persists, and the print behaviour.

Enabling the plugin

format:
  revealjs:
    revealjs-plugins:
      - a11y
    revealjs-a11y:
      high-contrast: false

Options sit under revealjs-a11y, inside the revealjs format.

Options

Options under revealjs-a11y.
Option Default Description
skip-navigation true A skip link for keyboard users.
focus-indicators true Enhanced visible focus rings.
viewport-zoom true Overrides RevealJS’s viewport meta so the deck can be zoomed, as WCAG 1.4.4 requires.
reduced-motion true Disables transitions for readers who ask for reduced motion.
high-contrast false Starts in high contrast. Togglable from the menu regardless.
font-size-controls true Font size by keyboard and menu.
font-selection true Font family choice from the menu.
font-families seven built-in families The families to cycle through, each with name, value, and an optional url. Replaces the built-in list rather than adding to it.
text-spacing true Line height, letter spacing, and word spacing controls.
link-highlight true Underlines links, so colour is not the only cue.
slide-landmarks true ARIA landmark roles and labels on slides. Slides other than the current one become inert, so their content stays out of the tab order and out of the accessibility tree. The overview, the print view, and the scroll view show every slide, so no slide is inert there. A reader who leaves a slide with the focus inside it keeps their place: the focus moves to the new slide. inert needs Chrome 102, Safari 15.5, or Firefox 112. Older browsers keep every slide in the tab order.
alt-text-warnings false Highlights images with no alt text, for authoring.
announce-slide-numbers true Announces slide numbers and titles.
announce-fragments true Announces fragments as they appear and disappear.
announce-language-changes true Announces a change of lang between slides.
transcript true true for the overlay, false to disable, or an object taking enabled and print.
pointer-indicator false true for the defaults, or an object taking enabled, size, colour, and shortcut.
slide-change-cue visual: true, audio: false true for both cues, false for neither, or an object taking visual and audio.
slide-menu-a11y true Patches the bundled RevealJS menu plugin so it is inert when closed, carries ARIA roles, and manages focus.
menu true The settings menu. An object takes enabled, shortcut, and position.
font-size-step 10 The font size increment, as a percentage. Values below 1 are raised to 1.
font-size-min 50 The lowest font size, as a percentage.
font-size-max 200 The highest font size, as a percentage.

The default font families are Default, System Sans, System Serif, System Mono, Atkinson Hyperlegible, Lexend, and OpenDyslexic. The last three are fetched from a webfont host the first time a reader selects them.

Invalid values for pointer-indicator fall back to the defaults with a console warning; its size is clamped to between 16 and 800 pixels, and its colour key is accepted as either colour or color.

Keyboard shortcuts

The default shortcuts.
Key Action
Tab Reach the skip link.
+ Increase the font size.
- Decrease it.
0 Reset it.
T Toggle the transcript.
P Toggle the pointer indicator.
A Toggle the settings menu.

Each key is bound only when its feature is on, so P does nothing until pointer-indicator is enabled. The menu and pointer shortcuts are configurable.

What persists

These are kept in localStorage, so a reader sets them once: high contrast, font size, font family, line height, letter spacing, word spacing, link highlight, the colour overlay, the visual and audio cue toggles, whether the pointer indicator is on, its size and colour, and whether the transcript is printed.

Printing

revealjs-a11y:
  transcript:
    print: true

puts the transcript below each slide in print-pdf output.

The transcript is not the only part that reaches the exported file. These run in print-pdf:

  • High contrast, from the document option. The stored reader choice is ignored there.
  • Link highlighting. The stored reader choice still applies, unlike high contrast.
  • The slide landmarks, which label each slide.
  • The alt text warnings, on the current slide only.
  • The transcript, when transcript is enabled and either transcript.print or the reader’s stored Print transcript choice is on. With transcript: false the plugin generates nothing, whatever the reader stored.
  • The fragment pages, when pdf-separate-fragments is on. RevealJS builds those, and the plugin leaves them alone.

Everything else is skipped: the reader controls, the settings panel, the menus, the announcements, the cues, the pointer indicator, the skip link, the focus indicators, the reduced-motion handling, and the viewport rewrite.

A .transcript div written by hand is shown in print-pdf by the stylesheet alone. It needs no option, and it prints even when transcript is off.

Limitations

  • RevealJS only.
  • A hand-written .transcript div is the only part the stylesheet shows on its own. The generated printed transcript is written by the plugin at export time, so it needs the plugin to run.
  • The plugin patches the bundled menu plugin for screen readers; a deck using a different menu keeps its own behaviour.
Back to top