Skip to main content
Perceivly: Perceivly home

1.2.2 Captions (Prerecorded)

Level A · added in WCAG 2.0

Prerecorded video with sound needs captions. Captions show the dialogue in sync with the video and name speakers when it isn't obvious. They also describe sounds that matter, like a doorbell or laughter.

Who it helps

Deaf and hard-of-hearing people need captions to follow speech and sound in video. Captions also help people watching in a noisy place or with the sound off, and people learning the language.

How to meet it

Examples

Fails:A video with sound and no captions track
<video controls width="640">
  <source src="/video/onboarding.mp4" type="video/mp4">
</video>
Fails:A chapters track is not a captions track
<video controls width="640">
  <source src="/video/onboarding.mp4" type="video/mp4">
  <track kind="chapters" src="/video/onboarding-chapters.vtt" srclang="en">
</video>
Passes:A WebVTT captions track, shown by default
<video controls width="640">
  <source src="/video/onboarding.mp4" type="video/mp4">
  <track kind="captions" src="/video/onboarding.en.vtt"
         srclang="en" label="English" default>
</video>
Passes:Captions alongside the chapters track
<video controls width="640">
  <source src="/video/onboarding.mp4" type="video/mp4">
  <track kind="captions" src="/video/onboarding.en.vtt"
         srclang="en" label="English" default>
  <track kind="chapters" src="/video/onboarding-chapters.vtt" srclang="en">
</video>

Can a scanner detect this?

Partly

axe-core's video-caption rule checks each video element for a <track kind="captions"> child, and asks for a review when it finds none. It can't see captions burned into the video or supplied by a third-party player. No tool can judge whether captions are accurate, complete and in sync, so watch each video with captions on.

axe-core rules that test it

Common mistakes

Official W3C explanation of 1.2.2

Check your own page

See which automated WCAG checks your page fails, with the failing elements and how to fix them.

Enter a page address, for example example.com/shop.

Reviewed November 2, 2026