WCAG Success Criteria · Level AA

WCAG 1.2.5: Audio Description (Prerecorded)

WCAG 1.2.5 requires that audio description is provided for all prerecorded video content in synchronized media, ensuring that users who are blind or have low vision can access visual information that is not conveyed through the audio track alone.

  • Level AA

What This Rule Means

\n

WCAG 1.2.5 — Audio Description (Prerecorded) is a Level AA success criterion under Principle 1: Perceivable. It requires that audio description is provided for all prerecorded synchronized media that contains video. Audio description is a narration track added to the primary audio of a video that describes important visual information — such as actions, scene changes, on-screen text, facial expressions, and other visual elements — that are not communicated through the existing dialogue or audio.

\n

The criterion applies to synchronized media, defined by WCAG as content that combines audio and video tracks synchronized with each other or with time-based interactive components. This includes video tutorials, instructional films, recorded webinars, promotional videos, product demonstrations, and news broadcasts. It does not apply to audio-only content, video-only content (which is handled separately by 1.2.1), or live video streams (which are covered, if at all, by 1.2.6 at Level AAA).

\n

A pass requires that for every prerecorded video with audio, there is either an additional audio description track that can be activated by the user, or an extended audio description version of the video where pauses have been inserted to allow the narrator sufficient time to describe complex visual content. Alternatively, if the existing audio track already fully conveys all the visual information present in the video — meaning nothing meaningful happens visually that is not described in the existing narration or dialogue — then no additional audio description is required.

\n

A fail occurs when visual information critical to understanding the video content is presented solely through the image track with no corresponding verbal description. For example, a training video that shows a presenter clicking through software steps on screen, while only saying "click here, then select this option," fails this criterion because a blind user listening to the audio track would have no way to understand which UI element is being clicked or what is being selected.

\n

There is one important official exception: if the media is itself a media alternative for text — meaning a video was produced specifically to serve as an accessible equivalent to a text document — and it is clearly labeled as such, then audio description is not required for that content.

\n\n

Why It Matters

\n

Audio description is primarily a requirement for users who are blind or have significant vision impairment. According to the World Health Organization, approximately 2.2 billion people worldwide have some form of vision impairment. For these users, the default experience of a video without audio description can be disorienting or entirely uninformative when the narrative depends on visual context. A blind user relying on a screen reader can detect that a video is present on a page, but without audio description, they hear only whatever dialogue or environmental sounds were captured — leaving gaps that may make the content meaningless or misleading.

\n

Consider a concrete real-world scenario: a Turkish bank publishes a video tutorial on how to set up two-factor authentication in its mobile app. The video shows each screen of the app in sequence, with a narrator saying things like "now tap the settings icon" or "you'll see a confirmation message." Without audio description, a blind customer using a screen reader cannot determine where the settings icon is located visually, what the confirmation message says, or what the screens look like. They are effectively excluded from the self-service tutorial and may need to call customer support — incurring friction, cost, and a diminished user experience.

\n

Beyond users who are completely blind, audio description also benefits people with cognitive disabilities who may find it easier to process information when it is described verbally in addition to being shown visually. It can also benefit users in audio-only environments who cannot see a screen, such as while driving, or users who have difficulty reading on-screen text quickly enough as it appears in video.

\n

From an SEO and discoverability standpoint, video content that includes transcripts or description scripts contributes additional text that search engines can index, potentially improving ranking for relevant queries. More importantly, providing audio description signals to users and regulators alike that your platform takes inclusion seriously — which is increasingly a business and legal expectation in many markets.

\n\n\n

WCAG 1.2.5 requires manual testing. Automated tools like axe-core cannot programmatically determine whether the audio description present in a video is accurate, sufficient, or meaningful — this judgment requires a human reviewer who can both watch the video and evaluate whether all visual information is communicated through audio. There is no axe-core rule that can automatically flag a missing or inadequate audio description track.

\n
    \n
  • Manual review required — visual content audit: A human tester must watch the full video with the screen muted (or with only the audio description track enabled) and assess whether all visual-only information — including on-screen text, speaker actions, scene changes, charts, diagrams, and non-verbal cues — is adequately conveyed. Automated tools cannot parse the semantic meaning of a video frame or evaluate whether narration corresponds to what is shown visually.
  • \n
  • Manual review required — track detection: While axe-core can check for the presence of a <track> element with kind='descriptions' on a <video> element, it cannot verify whether the description track file actually contains meaningful and accurate descriptions. A video may have a descriptions track that is empty, machine-generated nonsense, or simply not synchronized — all of which would pass automated detection but fail the criterion in practice.
  • \n
  • Manual review required — alternative version check: Some implementations provide audio description by offering a separate URL or version of the video with the description baked into the main audio track. Automated tools have no way to detect the existence of, or navigate to, an alternative version of a video asset linked elsewhere on the page.
  • \n
\n\n

How to Test

\n
    \n
  1. Identify all prerecorded synchronized media on the page. Scan the page for <video> elements, embedded iframes (YouTube, Vimeo, third-party players), and any custom video player implementations. Note each video that contains both audio and video tracks and is prerecorded rather than live.
  2. \n
  3. Run an automated scan with axe DevTools or Lighthouse. Open the browser's developer tools, run axe DevTools on the page, and filter results for any rules related to video or media elements. Automated scans may surface missing <track> elements or ARIA roles on custom video players, but they will not confirm adequacy of audio description. Treat automated results as a starting point only.
  4. \n
  5. Watch each video with the screen obscured or eyes closed. Listen only to the audio — including any audio description track if one is provided. Ask yourself: is every piece of meaningful visual information communicated through sound? Can you follow the full narrative, understand all on-screen actions, and identify all displayed text and graphics from the audio alone?
  6. \n
  7. Check for an audio description track. Inspect the video player controls for a button or menu that enables audio description. For HTML5 video, inspect the DOM for a <track kind='descriptions'> element. Enable the descriptions track and verify it plays synchronized, accurate narration of visual content.
  8. \n
  9. Check for an alternative described version. Look for a clearly labeled link or button adjacent to the video that reads something like "Watch with Audio Description" or "Audio Described Version." Follow that link and verify the alternative version contains accurate, complete audio description baked into its audio track.
  10. \n
  11. Test with a screen reader. Using NVDA with Firefox, VoiceOver with Safari, or JAWS with Chrome, navigate to the video element. Confirm the screen reader announces the video control and any associated description track option. Play the video and verify the description track is audible and synchronized. Check that the screen reader does not suppress or conflict with the description audio.
  12. \n
  13. Evaluate the exception case. If the video is presented as a media alternative to a text document, confirm it is labeled as such directly adjacent to the video. If it is labeled correctly and fully represents the same content as the text, audio description is not required — but verify this labeling is present and unambiguous.
  14. \n
\n\n

How to Fix

\n\n

Video with no audio description track — Incorrect

\n
<!-- A training video with significant visual content and no audio description -->\n<video controls width='800'>\n  <source src='training-video.mp4' type='video/mp4'>\n  <track kind='subtitles' src='subtitles-en.vtt' srclang='en' label='English'>\n</video>\n<!-- Fails 1.2.5: subtitles are present but no descriptions track exists.\n     Visual-only information in the video is inaccessible to blind users. -->
\n\n

Video with audio description track added — Correct

\n
<!-- A training video with an audio description track provided -->\n<video controls width='800'>\n  <source src='training-video.mp4' type='video/mp4'>\n  <track kind='subtitles' src='subtitles-en.vtt' srclang='en' label='English'>\n  <!-- Audio description track added with kind='descriptions' -->\n  <track kind='descriptions' src='audio-description-en.vtt' srclang='en' label='Audio Description (English)'>\n</video>\n<!-- Passes 1.2.5: screen readers and description-aware players can\n     activate the descriptions track to narrate visual content for blind users. -->
\n\n

Embedded third-party video with no described alternative — Incorrect

\n
<!-- A YouTube embed with no accessible described alternative -->\n<iframe\n  width='560'\n  height='315'\n  src='https://www.youtube.com/embed/VIDEOID'\n  title='Product Demo'\n  allowfullscreen>\n</iframe>\n<!-- Fails 1.2.5: if the YouTube video itself does not have an audio\n     description track uploaded, there is no way for blind users to\n     access visual-only content in the video. -->
\n\n

Embedded video with clearly labeled described alternative — Correct

\n
<!-- A YouTube embed accompanied by a link to an audio described version -->\n<figure>\n  <iframe\n    width='560'\n    height='315'\n    src='https://www.youtube.com/embed/VIDEOID'\n    title='Product Demo'\n    allowfullscreen>\n  </iframe>\n  <figcaption>\n    Product Demo — visual walkthrough of the onboarding flow.\n    <!-- Alternative described version linked directly below the video -->\n    <a href='https://www.youtube.com/watch?v=DESCRIBED_VIDEOID'>\n      Watch the audio described version of this video\n    </a>\n  </figcaption>\n</figure>\n<!-- Passes 1.2.5: a clearly labeled alternative with audio description\n     is provided, allowing blind users to access the same content. -->
\n\n

Custom video player missing description toggle — Incorrect

\n
<!-- Custom video player with no mechanism to enable audio description -->\n<div class='video-player' role='region' aria-label='Product Tutorial'>\n  <video id='tutorial-video'>\n    <source src='tutorial.mp4' type='video/mp4'>\n  </video>\n  <div class='controls'>\n    <button id='play-pause'>Play</button>\n    <button id='mute'>Mute</button>\n  </div>\n</div>\n<!-- Fails 1.2.5: no descriptions track, no AD toggle, no alternative. -->
\n\n

Custom video player with audio description toggle — Correct

\n
<!-- Custom video player with accessible audio description toggle -->\n<div class='video-player' role='region' aria-label='Product Tutorial'>\n  <video id='tutorial-video'>\n    <source src='tutorial.mp4' type='video/mp4'>\n    <!-- Descriptions track linked; player JS activates it on toggle -->\n    <track id='desc-track' kind='descriptions' src='tutorial-desc.vtt'\n           srclang='en' label='Audio Description'>\n  </video>\n  <div class='controls'>\n    <button id='play-pause'>Play</button>\n    <button id='mute'>Mute</button>\n    <!-- Accessible toggle button for audio description -->\n    <button id='ad-toggle' aria-pressed='false'\n            aria-label='Toggle audio description'>\n      Audio Description\n    </button>\n  </div>\n</div>\n<!-- Passes 1.2.5: a descriptions track is present and the custom player\n     exposes an accessible toggle so users can enable it. Player JS\n     must set aria-pressed='true' when activated and enable the track. -->
\n\n

Common Mistakes

\n

    (Content truncated due to token limit — please retry this article.)