Learn how to implement accessible video captions under WCAG 1.2. Practical guide covering Amara, Rev.com, 3Play Media, WebVTT, SRT formats, and audio description for full web accessibility compliance.
Why Video Captions Are Far More Than a Nice-to-Have
Think about the last time you watched a video on mute — maybe on a crowded train, in a noisy coffee shop, or late at night with someone sleeping next to you. You turned on the captions, right? Now imagine you are deaf or hard of hearing, and captions are not a convenience but your only gateway to the content. That is the gap between comfort and fundamental right.
According to the World Health Organization (WHO), over 1.5 billion people globally live with some degree of hearing loss, and that figure is expected to exceed 2.5 billion by 2050. In the United States alone, approximately 48 million people experience significant hearing difficulties. Captions are not optional; they are essential.
Personally, I believe the biggest mistake web developers make is treating captions as an afterthought — something to bolt on at the end. That "end" rarely arrives, and in the meantime, millions of people are locked out of your content.
WCAG 1.2: The Success Criteria for Time-Based Media
The Web Content Accessibility Guidelines (WCAG), published by the W3C through the Web Accessibility Initiative (WAI), devote the entire 1.2 guideline to time-based media: audio, video, and multimedia. Let us break it down so you know exactly what each criterion demands.
Breakdown of the SC 1.2.x Sub-Criteria
| Criterion | Level | What It Requires |
|---|---|---|
| SC 1.2.1 | A | Alternative for pre-recorded audio-only and video-only: transcript or text description |
| SC 1.2.2 | A | Captions for pre-recorded video with audio |
| SC 1.2.3 | A | Audio description or text alternative for pre-recorded video |
| SC 1.2.4 | AA | Captions for live content (real-time captions) |
| SC 1.2.5 | AA | Audio description for pre-recorded video (when main audio track does not cover all visual info) |
| SC 1.2.6 | AAA | Sign language interpretation for pre-recorded video |
| SC 1.2.7 | AAA | Extended audio description (pausing video if needed) |
| SC 1.2.8 | AAA | Full text alternative for pre-recorded time-based media |
| SC 1.2.9 | AAA | Alternative for live audio-only content |
If you are aiming for Level AA — the benchmark required by the European Accessibility Act (Directive 2019/882), the EN 301 549 standard, and Section 508 in the US — you need criteria 1.2.1 through 1.2.5 at a minimum. Sounds like a lot? Take a deep breath; we will work through each one step by step.
Captions vs. Subtitles vs. Closed Captions: Clearing Up the Confusion
There is a persistent mix-up around these terms, so let us set the record straight once and for all.
- Subtitles: a translation of dialogue into another language. They do not include ambient sounds or speaker identification.
- Captions (closed captions / CC): a full transcription of the audio, including sound effects, music cues, and speaker labels. Designed for deaf and hard-of-hearing viewers.
- Open captions: burned into the video stream; the viewer cannot toggle them off.
- Closed captions: delivered in a separate file (WebVTT, SRT) so the viewer can choose to enable or disable them.
When WCAG references "captions" in SC 1.2.2 and SC 1.2.4, it means closed captions — the full audio transcription, synchronized with the video. Why closed rather than open? Because the user must have the choice to activate or deactivate them.
Caption File Formats: WebVTT, SRT, and Beyond
Not all caption formats are created equal. Each has strengths and a natural habitat.
| Format | Extension | Key Strengths | Recommended Use |
|---|---|---|---|
| WebVTT | .vtt | W3C standard, CSS styling, positioning, voice markup | HTML5 <track>, modern web players |
| SRT (SubRip) | .srt | Dead simple, near-universal compatibility | YouTube, Vimeo, desktop players |
| TTML/DFXP | .ttml/.xml | Rich styling, broadcasting support | Television, professional streaming (Netflix) |
| SSA/ASS | .ssa/.ass | Advanced styling, free positioning | Anime, fansubbing communities |
For the web, WebVTT is the W3C-recommended standard and the only format natively supported by the HTML5 <track> element. My advice is straightforward: use WebVTT for your own site and export to SRT only when you need compatibility with external platforms like YouTube.
Professional Tools for Creating Accessible Captions
You do not need to transcribe everything by hand. There are powerful tools that combine artificial intelligence with human review for production-quality results.
Captioning Tool Comparison
| Tool | Type | AI Accuracy | Approximate Price | Best For |
|---|---|---|---|---|
| Amara | Open-source collaborative platform | Auto-transcription + human editing | Free (community edition) | NGOs, educational projects, collaborative teams |
| Rev.com | Professional service | 99% with human review | From $1.50 USD/min (human) | Businesses requiring maximum accuracy |
| 3Play Media | Enterprise platform | 99%+ with humans | Custom pricing | Large corporations, universities |
| YouTube Auto-captions | Built-in AI | 85-95% depending on language | Free | First drafts, informal videos |
| Otter.ai | Conversational AI | 90-95% | From $16.99 USD/month | Meetings, podcasts, informal content |
Personally, my favourite workflow is: generate a first draft with YouTube's AI or Otter.ai, export the SRT file, import it into Amara for collaborative editing, then convert it to WebVTT for deployment. Is it perfect? No. Is it efficient? Absolutely.
Audio Description: The Forgotten Pillar of Video Accessibility
Captions address the auditory side, but what about visual information? A chart that flashes on screen, a meaningful gesture, a scene change — all of that is lost for a blind or low-vision viewer if audio description is missing.
Audio description (SC 1.2.3 and SC 1.2.5) is an additional audio track that narrates visually significant elements during natural pauses in the dialogue. Think of it as a narrator telling you what is happening on screen while the action unfolds.
Is it mandatory? For Level AA, yes: SC 1.2.5 requires audio description for pre-recorded video. For Level A, you can provide a full text alternative instead (SC 1.2.3). But let us be honest: audio description delivers an incomparably better user experience.
Practical Tips for Creating Audio Description
- Plan audio description from pre-production: leave natural pauses in the script for descriptions.
- Describe only what matters: do not narrate every detail, focus on information essential to understanding the content.
- Keep a neutral, objective tone: audio description informs, it does not interpret.
- Hire professionals or train your team: audio description is a specialist skill that requires practice.
Technical Implementation: The <track> Element in HTML5
Adding captions to your website is easier than you might think. The <track> element inside <video> is your best ally.
Within your <video> tag, you add one or more <track> elements with these attributes: src (path to the .vtt file), kind (captions for subtitles, descriptions for audio description), srclang (language code), and label (the name the user sees in the player menu). The "default" attribute indicates which track activates automatically.
Key points you cannot afford to ignore: make sure the WebVTT file is properly encoded in UTF-8, that synchronization timing is accurate (± 0.5 seconds maximum), and that you identify speakers when more than one person is talking.
Caption Colour Contrast: The Link to WCAG 1.4.3 and 1.4.6
Did you know that captions must also meet colour contrast requirements? SC 1.4.3 (Level AA) demands a minimum contrast ratio of 4.5:1 for normal text, while SC 1.4.6 (Level AAA, enhanced contrast) raises the bar to 7:1.
For captions overlaid on video, this means: white text on a semi-transparent dark background (or the reverse). Avoid captions with no background over light imagery — they become unreadable. Platforms like YouTube and Netflix already apply dark backgrounds by default; you should do the same in your custom player.