WCAG 1.4.2 · Level A · EN 301 549 9.1.4.2

Audio Control

Requires a way to pause, stop or control the volume of any audio that plays automatically for more than three seconds, independent of the system volume.

In brief

A page that starts playing music or speech on its own is a problem for everyone who uses a screen reader. The sound competes with the voice of the screen reader, and the user cannot hear the page they are trying to use.

This criterion requires that if any audio on a page plays automatically for more than three seconds, there is a way to pause or stop it, or a way to control its volume independently of the overall system volume. Because such audio can make the whole page unusable, the requirement applies to every item on the page, not only to the part that plays the sound.

What does it cover?

  • Which audio: Audio that starts without the user asking for it, for example background music, a video that plays with sound on load, or an auto-playing advert.
  • The three-second rule: Audio that plays for three seconds or less, then stops by itself, is allowed.
  • What counts as control: A pause or stop button, or a volume control that works independently of the system volume. The control must be easy to find, near the top of the page, and reachable with the keyboard.
  • Easy ways out: Do not auto-play with sound, or start the media muted.
  • Muted media: A video that autoplays without sound has no audio to control, but it can fall under 2.2.2 (Pause, Stop, Hide) if it moves for more than five seconds.
  • Out of scope: Captions and transcripts are covered by 1.2. Content that flashes is covered by 2.3.1.

Who does it affect?

Screen reader users, who cannot hear their screen reader over the sound. People with attention, hearing or cognitive differences, who find sound that they did not choose distracting. Anyone who opens a page in a quiet place, in a meeting or at night.

In the EAA and EN 301 549

The European Accessibility Act (Directive (EU) 2019/882) applies to in-scope products and services placed on the market after 28 June 2025. Recital 47 names four principles for websites and mobile applications: perceivable, operable, understandable and robust. Control over automatic sound is part of "perceivable" and "operable".

The technical counterpart is the standard EN 301 549, which incorporates WCAG 1.4.2 by reference and turns it into separate clauses for each kind of ICT.

Where WCAG 1.4.2 appears in EN 301 549
ClauseType of ICTWhat it requires
9.1.4.2Web pagesWeb content must satisfy WCAG success criterion 1.4.2.
11.1.4.2Non-web software (native mobile apps)Software that plays audio automatically must offer a way to pause, stop or control its volume.

Whether and how the criterion applies to non-web documents is stated in clause 10 of the standard. Clause numbers follow the "9. + WCAG number" pattern of EN 301 549. In V3.2.1 the software clause is divided into further subclauses for open and closed functionality. Check the exact numbers in the standard when you cite them.

Standard version: EN 301 549 V4.1.1 (September 2026) is based on WCAG 2.2 and is the first version prepared specifically for the EAA. It has not yet been cited in the Official Journal of the European Union, so for now it is best treated as a voluntary technical route to the EAA's requirements. Once cited, it will give a presumption of conformity. The text of criterion 1.4.2 is the same in WCAG 2.1 and 2.2.

A note on EAA scope: Article 2(4) of the Directive excludes certain content from the requirements, for example office file formats published before 28 June 2025 and archives that are not updated after that date. Content you publish or change after that date is not covered by these exclusions.

Directive (EU) 2019/882, EUR-Lex, opens in a new tab

Code examples for the web

1. Autoplaying video with sound

Do not start a video with sound on page load. If the video must start, start it muted and let the user turn the sound on.

Incorrect
<video src="intro.mp4" autoplay loop></video>
Correct
<video src="intro.mp4" autoplay muted loop controls
       aria-label="Product intro"></video>

2. Background audio

Let the user start the audio. If it must play on its own, offer a pause button at the top of the page.

Incorrect
<audio src="ambient.mp3" autoplay loop></audio>
Correct
<audio id="ambient" src="ambient.mp3" loop></audio>
<button type="button" id="play" aria-pressed="false">
  Play background music
</button>

<script>
const audio = document.getElementById("ambient");
const btn = document.getElementById("play");
btn.addEventListener("click", () => {
  const on = audio.paused;
  on ? audio.play() : audio.pause();
  btn.setAttribute("aria-pressed", String(on));
});
</script>

3. A pause control at the top

If sound starts automatically, put the pause control first in the page, before other content, so a keyboard or screen reader user can reach it at once.

Incorrect
<body>
  <nav>…</nav>
  <main>…</main>
  <button id="pause">Pause audio</button>
</body>
Correct
<body>
  <button id="pause">Pause audio</button>
  <nav>…</nav>
  <main>…</main>
</body>

4. Embedded players

Embedded players can autoplay too. Leave autoplay off, or mute and show the controls.

Incorrect
<iframe src="https://www.youtube.com/embed/VIDEO_ID?autoplay=1"
        title="Product tour"></iframe>
Correct
<iframe src="https://www.youtube.com/embed/VIDEO_ID"
        title="Product tour"></iframe>

5. Sound played by script

A script that plays a sound on load, for example a welcome chime, must stop within three seconds or have a control.

Incorrect
window.addEventListener("load", () => {
  new Audio("welcome-long.mp3").play(); // 20 seconds
});
Correct
// Play only after a user action
button.addEventListener("click", () => {
  new Audio("click.mp3").play();
});

Code examples for mobile

The same rule applies in native mobile apps. Do not start audio on its own. If a video starts automatically, mute it and give the user a visible pause control.

iOS (SwiftUI)

import SwiftUI
import AVKit

struct HeroVideo: View {
    @State private var player = AVPlayer(
        url: URL(string: "https://example.com/hero.mp4")!
    )
    @State private var playing = true

    var body: some View {
        VStack(spacing: 8) {
            VideoPlayer(player: player)
                .frame(height: 200)
                .onAppear {
                    player.isMuted = true   // No sound on its own
                    player.play()
                }

            Button(playing ? "Pause video" : "Play video") {
                playing.toggle()
                playing ? player.play() : player.pause()
            }
        }
    }
}

Android (Jetpack Compose)

import androidx.compose.foundation.layout.Column
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.*
import androidx.compose.ui.viewinterop.AndroidView
import androidx.media3.exoplayer.ExoPlayer
import androidx.media3.ui.PlayerView

@Composable
fun HeroVideo(player: ExoPlayer) {
    var playing by remember { mutableStateOf(true) }

    LaunchedEffect(Unit) {
        player.volume = 0f            // No sound on its own
        player.playWhenReady = true
    }

    Column {
        AndroidView(factory = { context ->
            PlayerView(context).apply { this.player = player }
        })
        TextButton(onClick = {
            playing = !playing
            player.playWhenReady = playing
        }) {
            Text(if (playing) "Pause video" else "Play video")
        }
    }
}

How to test

  • Open each page with the sound on: Does anything play by itself? Listen for three seconds. Check the home page, landing pages and pages with embedded media.
  • Look for a way to stop it: Is there a pause, stop or volume control that you can find with the keyboard and a screen reader? Is it near the top of the page?
  • Check the code: Search for autoplay on audio, video and embedded players, and for scripts that call play() on load.
  • Check muted media: If a video autoplays muted, is it really muted and does it have controls?
  • Check mobile: Does the app start sound on its own? Does the control work with the screen reader?
  • Use a screen reader: Turn on NVDA, VoiceOver or TalkBack. Can you still hear it over the page?
  • Use a checker as a start: Automated tools can find the autoplay attribute, but they cannot tell whether sound plays or whether the control is easy to find.

Common mistakes

  • Autoplaying video with sound: The most common failure of this criterion.
  • Background music on load: It talks over the screen reader.
  • Hiding the pause button at the bottom of the page: A screen reader user has to hear the whole page to reach it.
  • A pause control that works only with the mouse: It must be reachable with the keyboard.
  • Relying on the system volume: The user cannot turn the system volume down without silencing the screen reader.
  • Autoplay in embedded players: The autoplay=1 parameter counts as well.
  • Sounds in adverts: Adverts are part of the page and must meet the criterion too.
  • Forgetting loops: A short sound that repeats forever is still audio that plays for more than three seconds.

Sources

Standard version: EN 301 549 V4.1.1 (2026-09), WCAG 2.2. This page is for informational purposes only and is not legal advice. For binding requirements, refer to the official texts of the European Accessibility Act (Directive (EU) 2019/882) and EN 301 549.

Corpowid is recognized by Gartner

Corpowid has been recognized by Gartner, a leading global research and advisory firm, for our innovation and performance in digital accessibility. These badges reflect our commitment to creating inclusive, AI-powered web experiences.

Have questions about Corpowid?

Let’s connect.

We will get back to you as soon as possible.