Captions
Definition
WCAG requires captions for prerecorded video with sound under success criterion 1.2.2, at Level A, and for live video under 1.2.4, at Level AA. On the web they normally arrive as a separate WebVTT file with a .vtt extension, referenced from a track element inside the video. SRT files are common in desktop players but browsers do not read them natively, so a .srt usually has to be converted before publishing. The other distinction is where the text lives: open captions are burned into the video frames and cannot be switched off, closed captions sit in the sidecar file and can be toggled, restyled and translated. Closed is the better default, because the text stays selectable, searchable and editable without re-encoding the video.
Why It Matters
Around 1.5 billion people live with some hearing loss, by WHO estimates, and the audience for captions is far wider than that — most feed video is watched with the sound off, and anyone in a shared office or on a train is in the same position. Accuracy is the part that gets skipped. Automatic speech recognition on clean studio audio is good; on two people talking over each other with product names in the mix it is not, and industry caption quality targets sit at around 99 per cent word accuracy for a reason. A five-minute demo has roughly 700 words in it, so 95 per cent accuracy means about 35 wrong words — enough to change what a viewer thinks your product does.
How It Works
A WebVTT file is plain text. The first line reads WEBVTT, then each cue is a timestamp range in the form 00:00:04.000 followed by an arrow and 00:00:07.500, with the caption text on the lines beneath and a blank line between cues. You reference it with a track element inside the video element, setting kind to captions, srclang to the language code, a human-readable label such as English, and the default attribute on the one you want enabled. Two serving details matter on a static host: the file needs the text/vtt MIME type, and if the caption file sits on a different origin from the page, the video element needs the crossorigin attribute and the caption host needs to send permissive CORS headers, or the track silently fails to load.
Real-World Example
A team publishes a 40 MB product demo as 'demo.mp4' at demo.99helpers.site, with 'demo-en.vtt' beside it in the same folder. Because both files sit on the same origin, no CORS setup is needed and the track loads on first play. The captions were machine-generated and then corrected by hand, which took about twenty minutes for five minutes of footage and fixed nine product names the recogniser had mangled. 99helpers serves both files as static assets with the right MIME types; it does not transcribe audio or generate captions, so you produce the .vtt with a captioning tool or service first and upload the result.
Common Mistakes
- ✕Publishing raw auto-captions without a correction pass — names, jargon and numbers are exactly the words recognition gets wrong, and exactly the words viewers need
- ✕Uploading an .srt and pointing a track element at it — browsers read WebVTT, so the track loads nothing and the video appears to have no captions
- ✕Captioning the speech and nothing else — a caption track has to name the speaker when it is not obvious and note meaningful sound, such as a door closing or an alarm
- ✕Serving the caption file from another domain without CORS — the video plays, the track fails, and the browser reports it only in the console
Related Terms
Transcript
A transcript is the full text of an audio or video recording, written out as a document rather than tied to the timeline. For audio-only content it is the text alternative; for video, a descriptive transcript also covers what is shown on screen.
Text Alternative
A text alternative is text that serves the same purpose as non-text content — an image, an icon, a chart, a map, an audio clip, a video. It is the principle that alt text, captions and transcripts each implement.
MP4 File
An MP4 file is a container holding compressed video and audio together, most often H.264 video with AAC audio. It is the safest video file to put on a web page.
WebM File
WebM is an open, royalty-free video container holding VP8, VP9 or AV1 video with Vorbis or Opus audio. It usually produces a smaller file than an H.264 MP4 at the same quality.
Large File Transfer
Large file transfer is the business of getting a file too big for email from one person to another. In practice it means uploading it once and sending an address.
Put a file online in seconds
Drop in a document, an image, a page or a whole static website and share the link — free, with no build step and no server to set up.
Host a file free →