Captions (Live)
Captions are provided for all live audio content in synchronised media — webinars, live streams, virtual events.
Who this affects
Deaf and hard-of-hearing users, who are excluded from live events in real time. A transcript published afterwards does not satisfy this criterion.
The failure and the fix
Each example below is a self-contained page, loaded in a frame so its markup cannot affect this page. Open either one on its own to test it with a keyboard or screen reader.
Fails 1.2.4
Open the failing example in a new tab
fail.html — the problem
<h1>Live: Spring festival opening</h1>
<!-- FAILURE: a live stream with no real-time captions.
There is no captions track, no CART operator, and no live transcript pane.
A deaf or hard-of-hearing attendee is excluded from the event AS IT
HAPPENS - which is the whole point of attending something live. -->
<div class="stage">
<p><span class="live-dot" aria-hidden="true"></span><strong>LIVE</strong> — streaming now</p>
<p>Opening remarks from the festival director</p>
</div>
<!-- FAILURE 2: the common excuse, stated openly. Publishing a transcript
afterwards does NOT satisfy 1.2.4. The criterion is about access at the
time of broadcast: a recording posted tomorrow means a deaf attendee could
not ask a question, could not react with everyone else, and could not
participate. -->
<p>A full transcript will be published within 48 hours of the event.</p>
Meets 1.2.4
Open the passing example in a new tab
pass.html — the fix
<h1>Live: Spring festival opening</h1>
<div class="stage">
<p><span class="live-dot" aria-hidden="true"></span><strong>LIVE</strong> — streaming now</p>
<p>Opening remarks from the festival director</p>
</div>
<!-- FIX 1: real-time captions, delivered during the broadcast. In production
this pane is fed by a live captioning service (CART) or by the streaming
platform's live caption track.
aria-live="polite" so new text is announced without interrupting, and
aria-atomic="false" so only the newly added line is read rather than the
whole pane each time - which is what makes a live caption pane bearable
to listen to. -->
<h2 id="cc-h">Live captions</h2>
<div class="cc" role="log" aria-live="polite" aria-atomic="false" aria-labelledby="cc-h" id="cc">
<p>[applause]</p>
<p>DIRECTOR: Good evening, and welcome to the Spring festival.</p>
</div>
<!-- FIX 2: tell people what access provision exists BEFORE the event, so they
can decide whether to attend. This is not required by the criterion, but
it is what makes it usable in practice. -->
<h2>Access at this event</h2>
<ul>
<li>Live captions are provided throughout by a human captioner.</li>
<li>A British Sign Language interpreter is on the stream from 7pm.</li>
<li>A corrected transcript will be published within 48 hours.</li>
</ul>
<!-- Practical notes:
- Automatic live captions are better than nothing, but their accuracy on
names, place names and technical terms is poor. For an event that
matters, budget for a human captioner.
- The recording you publish afterwards is PRERECORDED media, so it falls
under 1.2.2 and needs its own corrected captions. Live captions being
provided does not exempt the recording. -->
How to test it
Attend or review a recording of the live stream as delivered. Confirm real-time captions were available during the broadcast, with acceptable accuracy and latency.
-
Automated
Requires observing a live event as it happens.
No axe rule maps to this criterion. It has to be checked by a person.
-
Keyboard
Unplug the mouse. Move through the page with Tab, Shift+Tab, Enter, Space and the arrow keys. See the keyboard testing script.
-
Screen reader
Listen to both examples with NVDA, JAWS, VoiceOver or TalkBack and compare what is announced. See the screen reader cheat sheets.
-
Visual
Zoom to 200% and 400%, narrow the viewport to 320 px, and apply the text-spacing overrides. See the visual testing procedures.
Related criteria
In the specification
- Understanding 1.2.4 Captions (Live) — the W3C explanation, intent and exceptions
- 1.2.4 in the WCAG 2.2 Recommendation — the normative wording
WCAG 2.2 Demo Suite