Search topics
Live streams with no captions, or only automatic ones
A software company streams its spring release as a live webinar with no captions, or with the platform's automatic captions, which mishear a number and turn "it doesn't" into "it does".
<iframe src="…/embed/live_stream?channel=…"> The problem
People who can't hear the live stream miss what is announced, and automatic captions give them the wrong numbers and the opposite answer.
A software company announces its spring release in a live webinar, streamed on its events page in an embedded player. The slides say only "Guest seats" and "Background exports"; everything else is said out loud. Alex announces that every plan now includes 15 guest seats, and that exports run in the background. Then Priya reads a question from the chat: does this include the free plan? It doesn't. The player has no captions, so a deaf customer watching sees the slides change and nothing more. On a second version of the page, the company has turned on the platform's automatic captions. They appear, a few words at a time, and say "every plan includes fifty guess seats", then run the question and the answer together as "does this include the free plan it does".
Success criterion 1.2.4 asks for captions for all live audio content in synchronised media: a live stream with speech needs them while it is live. Captions carry every word said, who is speaking, and the sounds that matter. A live stream with no captions fails outright. Automatic captions are on screen, but W3C's guidance is that automatically generated captions don't meet accessibility requirements unless they are confirmed to be fully accurate, and live, nobody can confirm them before they are shown. Here they change the number, drop the question mark, give no sign that a second person is speaking, and lose the "n't" that made the answer no.
A live stream runs at the speakers' pace, and in a webinar the moment to ask a follow-up question passes with it, so whatever the captions miss is lost for the event. Viewers watching at work or in a shared space with the sound off meet the same silence, and may leave rather than turn it up.
3 of 10 groups affected
- No vision (not affected)
- Low vision (not affected)
- Colour vision (not affected)
- No hearing (affected)
- Hard of hearing (affected)
- No speech (not affected)
- Motor (not affected)
- Reach, strength (not affected)
- Cognitive (affected)
- Seizures (not affected)
- Without hearing Everything announced is lost: how many guest seats, what changed, the answer to the question. Wrong automatic captions are worse than none, because they read as the announcement.
- Limited hearing A quiet voice, a fast speaker or a poor microphone on a remote guest is hard to follow live, at the speakers' pace. People who hear some of it use captions to fill the gaps and check the numbers.
- Limited language, cognitive and learning abilities Reading along helps people who process speech slowly or watch in a second language keep up with a stream that runs at the speakers' pace.
No scan can watch a stream before it is live, and axe has no rule for 1.2.4: its captions rule for video, written for 1.2.2, only looks for a <track kind="captions"> inside a <video>. EaseWeb's audit sends players that are recognisably live for review: YouTube's embed for a channel's live stream, Vimeo's live event embeds, Twitch channel players, and a page's own video with no end. A live stream embedded by its video id looks like any other video, and gets the general video lead, which asks for live captions too. Whether captions will be there on the day, and whether they are right, only a person can check, at a rehearsal and during the event. Automatic captions are speech recognition, the same kind of AI that drafts captions for recordings; live, there is no time to correct them.
Try it
Join the live webinar, then mute it. Can you still tell what it announces about guest seats?
The speakers talk in your device’s speech voices; mute the player to watch as someone who can’t hear it. In Broken 1 the player has no captions. In Broken 2, turn on the automatic captions with CC, and listen to what they get wrong. When the stream ends, what was said appears under it. Apply a fix to see a captioner’s captions in the player, or beside it; try full screen with each.
Broken Can you fix this?
Spring release, live
Thursday at 16:00 UTC. About 20 minutes, with questions at the end.
What was said appears here when the stream ends, to compare with what reached you with the sound off.
The fix
Caption every live stream with a person, captioning in real time, from the first word to the last question.
- 1Caption every live stream with speech, from the first word to the last question.
- 2Automatic captions alone don't count: a person captions in real time.
- 3Name each speaker when they change, and put sounds that matter in square brackets.
A live stream with no captions
<h2>Spring release, live</h2><p>Thursday at 16:00 UTC. About 20 minutes, with questions at the end.</p><!-- Captions: none --><iframe src="https://www.youtube.com/embed/live_stream?channel=UC…" title="Spring release, live stream" allow="fullscreen"></iframe>A live captioner, in the player's own captions
<h2>Spring release, live</h2><p>Thursday at 16:00 UTC. About 20 minutes, with questions at the end. Live captions by a captioner: turn them on with CC in the player.</p><!-- Captions: a live captioner, sent to the platform's captions input --><iframe src="https://www.youtube.com/embed/live_stream?channel=UC…" title="Spring release, live stream" allow="fullscreen"></iframe>Nothing sends captions to the platform, so the player has no captions button, and someone who can't hear the stream gets the slides.
A captioner, booked for the event, listens to the speakers and writes what they say in real time, by stenography or by repeating it to speech software trained on their own voice. Their software sends the captions to the platform's captions input, which shows them in the player a few seconds behind the speech. The captions name each speaker when they change, keep the numbers and the "doesn't", and say what the audio is doing when nobody speaks. Because they are the player's own captions, viewers turn them on and off with its CC button, and they follow the stream into full screen and the platform's own app.
Both pass 1.2.4 with a captioner writing the words. Send the captions into the player: the captions beside the player pass only while the page holds them together, while the player's own captions go wherever the stream goes, full screen included, and the platform shows them with the stream rather than on a clock of their own. Many streaming and webinar platforms have a captions input for this. Use the page beside the player only where the platform you have to use has no such input, and have the captioner caption from the stream as viewers see it, so the captions follow the picture rather than run ahead of it.
Book the captioner when you book the speakers. Real-time captioners (CART providers) work remotely, from the audio over a phone line or the internet, and they need the event's material in advance: speakers' names, product names, slides and any script. Book them for the whole event, questions included, and agree what happens when it overruns.
Each platform takes a captioner's captions its own way.
- YouTube Live: captions embedded in the stream by the encoder, or sent by the captioner's software to a captions ingestion URL from the stream's settings.
- Zoom meetings and webinars: the host assigns a third-party captioning service with an API token from the meeting, or assigns a participant to type captions.
- Microsoft Teams meetings: the organiser turns on CART captions in the meeting options and sends the captioner the link it gives.
Where the platform also offers automatic captions, the captions menu may list both. Where the platform lets you, label the captioner's track so viewers can tell them apart, or turn the automatic ones off. Automatic captions can still help on an internal call nobody booked a captioner for; they are not how a public stream meets 1.2.4. W3C's guidance on 1.2.4 is aimed at broadcasts: a call between a few people in a meeting app is not what it asks the app to caption, but a webinar or launch streamed to an audience is.
Questions typed in the chat are already text; questions asked out loud need captioning like the rest. Anything a speaker plays, such as a demo video, needs its speech captioned, or its sound described in brackets.
When the stream ends and its recording stays on the page, it is prerecorded video, and videos without captions, or with unchecked automatic ones applies: the captioner's text is a good start, corrected against the recording into a captions file. Sign language interpretation is a separate requirement at Level AAA, for prerecorded video only (1.2.6), and a live stream that is only sound, such as a radio show, is covered by 1.2.9.
Fixing this with an AI coding assistant? Get this guide as Markdown, or get every guide in your coding agent.
Verify the fix
5 checks, no mouse.
Test with: Sound off, Keyboard
Record the OS, browser and assistive-technology versions, the build, the date, and the actual result of each step. Repeat for each event: a new platform, room or captioner changes the setup.
Limits
This is a starting pattern, not a guarantee for every application. Live captions lag the speech by a few seconds and a captioner can mistype, so a recording still needs correcting. How captions reach the player depends on the platform, its plan and its settings, which change: check its current documentation and rehearse with the captioner. Test the whole event with people who rely on captions if you can.
This is a recreated teaching example, not a finding about a named client. The code is a starting pattern: test it in your own product. No completed assistive-technology test is claimed here.
Keep this fixed as your code changes.
Turn guides like this into rules your coding agents and CI follow, then have the result retested with a keyboard and screen readers.