All video content has captions (open or closed) synchronized to audio
Why it matters
Captions are the primary mechanism through which deaf and hard-of-hearing users access spoken video content. WCAG 2.2 SC 1.2.2 (Level A) requires captions for all prerecorded synchronized media; SC 1.2.4 (Level AA) extends this to live video. Section 508 2018 Refresh 503.4 mandates caption controls for AT users. An uncaptioned product demo, testimonial, or tutorial video excludes deaf users entirely from that content. Auto-generated captions from hosting platforms (YouTube, Vimeo) are frequently inaccurate and do not satisfy the synchronization or accuracy standards required by Section 508 procurement evaluators.
Severity rationale
Medium because missing captions exclude deaf and hard-of-hearing users from video content specifically, but the failure is scoped to video elements rather than blocking site-wide navigation.
Remediation
For self-hosted video, generate a WebVTT caption file and attach it with a <track> element:
<video controls width="100%">
<source src="/videos/product-demo.mp4" type="video/mp4" />
<track
kind="captions"
src="/captions/product-demo-en.vtt"
srclang="en"
label="English captions"
default
/>
</video>
For YouTube embeds, ensure the original video on YouTube has accurate captions (not just auto-generated). Validate accuracy—auto-generated captions often fail on proper nouns, technical terms, and accented speech. For Vimeo, upload a .vtt file through Vimeo's caption manager. Use tools like caption.ninja or Otter.ai to generate a first-pass VTT file, then manually correct errors before publishing.
Detection
- ID:
video-captions - Severity:
medium - What to look for: Search for
<video>tags and embedded video players (YouTube, Vimeo, etc.) throughout the project. Check whether each video has captions or subtitles. Captions should be synchronized to audio and include speaker identification if multiple speakers are present. Closed captions (CC) are preferred and must be toggled on by default or always visible. - Pass criteria: Every video on the site has captions (open or closed) that are synchronized to the audio. At least 1 implementation must be verified. Captions are accurate and include speaker identification for multi-speaker content.
- Fail criteria: Any video lacks captions, or captions exist but are unsynchronized or incomplete.
- Skip (N/A) when: No video content is present on the site.
- Detail on fail: Count the videos and describe the caption status. Example:
"6 videos embedded via YouTube iframes. None have captions enabled or auto-generated. 2 product demo videos on /products have no captions. 1 testimonial video has open captions but they are misaligned with the audio by 2-3 seconds." - Remediation: For native
<video>elements, add<track>tags with VTT caption files:For YouTube embeds, enable captions in the embed settings or ensure videos on YouTube have captions. For Vimeo, use Vimeo's caption feature or upload a VTT file.<video width="640" height="480" controls> <source src="product-demo.mp4" type="video/mp4" /> <track kind="captions" src="captions-en.vtt" srclang="en" label="English" /> </video>
External references
- wcag:2.2 · 1.2.2 — Captions (Prerecorded)
- wcag:2.2 · 1.2.4 — Captions (Live)
- section-508:2018-refresh · 503.4 — User Controls for Captions and Audio Description
Taxons
History
- 2026-04-18·v1.0.0·Initial import from gov-section-508·automated