1.4.2 Audio Control

WCAG 2.2 · 1.4.2 A Perceivable

What it requires

If any audio plays automatically for more than 3 seconds, the user must be given a mechanism to either pause or stop that audio, or a mechanism to control its volume independently from the overall system volume level. The control has to be easy to find — ideally near the top of the page and reachable by keyboard — so it can be used before the sound interferes with anything else.

The simplest way to satisfy the criterion is to not auto-play audio at all: let the user choose to start it. Auto-playing audio of 3 seconds or less is not covered, but anything longer needs a control. Adjusting the operating-system volume does not count, because that affects everything; the control must act on the page audio specifically.

  • Screen-reader users. Auto-playing audio competes with the synthesised speech of the screen reader, making the page impossible to navigate by ear.
  • People with low vision who magnify the screen and may not see a small, distant stop button while sound is already playing.
  • People with cognitive or attention-related disabilities, for whom unexpected sound is distracting or disorienting.
  • Anyone in a shared or quiet environment who needs to silence the page quickly — a usability win for everyone.

How to detect it

Ways to check Audio Control
Check How Pass condition
Auto-play audit Load the page with sound on; note any audio that starts on its own. No audio auto-plays, or it stops within 3 seconds.
Control present If audio plays > 3 s, look for a pause/stop or independent volume control. A working control exists and silences the page audio.
Keyboard / screen reader Tab to the control with the keyboard; confirm a screen reader announces it early in the page. Control is focusable, labelled, and operable without a mouse.
Automated tools Run axe, WAVE, or similar. Cannot reliably detect auto-playing audio — manual testing is required.

How to fix it

  1. Prefer not auto-playing audio: require an explicit user action to start it.
  2. If audio must auto-play, ensure it lasts 3 seconds or less, or add a control.
  3. Provide a visible, keyboard-operable pause/stop button (or independent volume control) placed early in the DOM.
  4. For embedded media, expose the player's native controls and avoid the autoplay attribute.
  5. Re-test by ear with a screen reader running to confirm the page can be silenced quickly.
<!-- No autoplay: user starts it, native controls let them stop it -->
<audio src="welcome.mp3" controls>
  Your browser does not support audio.
</audio>

Copy-paste tests

Automated coverage

The axe-core rule no-autoplay-audio flags failures of this criterion. Run it via the axe DevTools browser extension or axe-core in CI. Automated tools catch only some failures, so manual review is still required.

Run this in the browser console

audio-control-check.js
// Surfaces media that may play sound automatically. Read-only.
const suspects = [...document.querySelectorAll('audio, video')].filter(
  (m) => m.autoplay || (m.hasAttribute('autoplay') && !m.muted)
);
console.table(
  suspects.map((m) => ({
    tag: m.tagName,
    autoplay: m.autoplay,
    muted: m.muted,
    controls: m.controls,
    src: m.currentSrc || m.src
  }))
);
suspects.forEach((m) => (m.style.outline = '3px solid red'));
console.log('Auto-playing media found:', suspects.length);

What to check manually: play the page and confirm any sound that starts automatically stops within 3 seconds, or that an independent pause/volume control is available. A script cannot judge actual loudness or whether sound truly auto-starts on load.