Operable · 2.2 Enough Time

Pause, Stop, Hide WCAG 2.2.2 · Level A

Anything that starts automatically and runs alongside other content must offer a way to pause, stop or hide it if it moves, blinks or scrolls for more than five seconds, or if it auto-updates (where controlling the update frequency also counts), unless the motion or updating is essential.

Level
A
Since
WCAG 2.0
Principle
Operable
Guideline
2.2 Enough Time

Live demo

Read a rotating offers carousel

The same task, done two ways: switch between the version that passes and the one that fails, or put them side by side. Everything in the box is live, so try it with a keyboard, a pointer or a screen reader.

Try to read all three offers. In Passes, press Pause to stop them moving; in Fails nothing stops them.

Live example

Passes

This week's offers

  • Save 20% on all winter coats until Sunday.
  • Free delivery on every order over $50.
  • New spring shoes arrive in our stores on Friday.

What happened

    Why it passes

    The offers still rotate, but the Pause button, placed before them, stops the movement so you can read at your own speed and start it again later.

    Why it fails

    The offers change every four seconds with no way to stop them, so slow readers lose the text halfway through and the movement keeps pulling attention away.

    Examples

    Code that fails, and the fix

    Four examples, each one running: the usual ways this criterion fails, and code that passes. Listen to them, measure them, or copy the code.

    Fails

    News ticker that never stops

    Live preview

    CSS
    .ticker-text {  display: inline-block;  white-space: nowrap;  animation: ticker-scroll 20s linear infinite;}@keyframes ticker-scroll {  from { transform: translateX(100%); }  to { transform: translateX(-100%); }}

    The headlines scroll for as long as the page is open, and nothing lets the reader pause, stop or hide them.

    Passes

    Pause button for the ticker

    Live preview

    JavaScript
    const ticker = document.querySelector(".ticker-text");const pauseButton = document.querySelector("#ticker-pause");pauseButton.addEventListener("click", () => {  const paused = ticker.style.animationPlayState === "paused";  ticker.style.animationPlayState = paused ? "running" : "paused";  pauseButton.textContent = paused ? "Pause headlines" : "Play headlines";});

    A real button stops the scrolling and starts it again from where it stopped (technique G4). Put the button before the ticker so keyboard users reach it first.

    01

    Fails

    Carousel that rotates on a timer

    Live preview

    JavaScript
    let current = 0;setInterval(() => {  slides[current].hidden = true;  current = (current + 1) % slides.length;  slides[current].hidden = false;}, 4000);

    The slides change every four seconds for as long as the page is open, and there is no control to pause or stop them.

    Passes

    Carousel with Pause and Play

    Live preview

    JavaScript
    let current = 0;let timer = null;function showNext() {  slides[current].hidden = true;  current = (current + 1) % slides.length;  slides[current].hidden = false;}function play() { timer = setInterval(showNext, 4000); pauseButton.textContent = "Pause offers"; }function pause() { clearInterval(timer); timer = null; pauseButton.textContent = "Play offers"; }pauseButton.addEventListener("click", () => (timer ? pause() : play()));if (matchMedia("(prefers-reduced-motion: reduce)").matches) pause(); else play();

    The Pause offers button stops the rotation and Play offers starts it again. The carousel also starts paused when the system asks for reduced motion.

    Why it matters

    Who it helps

    Moving and updating content distracts people with attention deficits or cognitive disabilities and makes text hard to follow for people with low vision or who read slowly. Constant updates can also interrupt screen reader users.

    W3C: Understanding 2.2.2
    • Level A

      Level A is the minimum: failing it can shut some people out completely.

    • In WCAG versions

      Part of WCAG 2.0 since December 2008, and of every version after it.

      WCAG 1.0 checkpoints: 7.2, 7.3

    • Where it is required

      Required where the law names WCAG 2.0 or later at this level: the United States, Canada, the European Union, the United Kingdom, France, Germany, Italy, Spain, the Netherlands, Ireland, Norway, Switzerland, India, Japan, Australia, New Zealand and Israel.

    How to test

    Checking it

    A few concrete steps. Automated tools find some failures; most need a person.

    1. Load the page and note any carousel, ticker, animation, background video or live feed that starts on its own.
    2. For moving, blinking or scrolling items that last more than five seconds, confirm there is a keyboard-operable control to pause, stop or hide them.
    3. For auto-updating content such as feeds or live scores, confirm it can be paused, stopped or hidden, or its update frequency adjusted.

    Common failures

    Where it breaks

    • An auto-rotating carousel or news ticker has no control to pause or stop it.
    • A looping background video plays behind text with no way to stop or hide it.
    • A live score or stock ticker keeps updating with no way to pause it or change how often it refreshes.

    On the Accessibility Checklist