Reference
Every option the a11y plugin accepts.
Enabling the plugin
format:
revealjs:
revealjs-plugins:
- a11y
revealjs-a11y:
high-contrast: falseOptions sit under revealjs-a11y, inside the revealjs format.
Options
| 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
| 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: trueputs 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
transcriptis enabled and eithertranscript.printor the reader’s stored Print transcript choice is on. Withtranscript: falsethe plugin generates nothing, whatever the reader stored. - The fragment pages, when
pdf-separate-fragmentsis 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
.transcriptdiv 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.