Operable · 2.3 Seizures and Physical Reactions

Three Flashes WCAG 2.3.2 · Level AAA

Nothing on a page may flash more than three times in any one-second period, whatever the size, brightness or color of the flash. Unlike 2.3.1, there is no threshold exception.

Level
AAA
Since
WCAG 2.0
Principle
Operable
Guideline
2.3 Seizures and Physical Reactions

Live demo

Count the flashes of a tiny light

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.

Compare the one-second strips for both versions: the light is tiny in both, but at this level only the number of flashes counts. Nothing here flashes.

Live example

Passes

Recording light

In a video call, a recording light about 24 by 24 pixels blinks between white and dark grey twice a second.

Viewed at 1024 by 768, it covers less than 1 percent of a 10 degree field of vision.

What happened

    Why it passes

    Two flashes a second is within the limit of three, so the light passes whatever its size or color.

    Why it fails

    Five flashes a second fails at this level even though the light covers less than 1 percent of a 10 degree field. There is no size exception here.

    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.

    01What changes 2 lines

    Fails

    Status light blinking five times a second

    Live preview

    CSS
    /* 12 by 12 pixels, five flashes a second */.rec-light {  width: 12px;  height: 12px;  border-radius: 50%;  animation: rec-blink 0.2s infinite;}@keyframes rec-blink {  0%, 49% { background: #ffffff; }  50%, 100% { background: #333333; }}

    The light is far too small to cross the Level A thresholds, but at AAA anything that flashes more than three times in one second fails.

    Passes

    Slow the light to once a second

    Live preview

    CSS
    .rec-light {  width: 12px;  height: 12px;  border-radius: 50%;  animation: rec-blink 1s 4;}@keyframes rec-blink {  0%, 49% { background: #ffffff; }  50%, 100% { background: #333333; }}

    One flash a second is within the limit of three (technique G19). Stopping after four seconds also keeps the blinking under the five seconds that 2.2.2 allows without a pause control.

    Fails

    Toggling a class every 100 milliseconds

    Live preview

    JavaScript
    // .is-bright switches the icon between white and dark greysetInterval(() => {  liveIcon.classList.toggle("is-bright");}, 100);

    A flash is a pair of opposing changes, so switching every 100 milliseconds gives five flashes a second, which fails at any size.

    Passes

    A steady light with a word

    Live preview

    HTML
    <span class="recording">  <span class="rec-dot" aria-hidden="true"></span>  Recording</span>

    A steady dot next to the word Recording shows the state without any flashing, and the word also helps people who cannot tell the color.

    Why it matters

    Who it helps

    It removes flashing risk entirely for people with photosensitive epilepsy and other seizure disorders, including people sensitive to small flashes that fall below the Level A thresholds.

    W3C: Understanding 2.3.2
    • Level AAA

      Level AAA is the highest level. It is not required for whole sites, but it is worth meeting where you can.

    • In WCAG versions

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

      WCAG 1.0 checkpoints: 7.1

    • Where it is required

      No law on this site requires Level AAA criteria for whole sites.

    How to test

    Checking it

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

    1. Find every element that flashes, blinks or strobes, however small, including icons, animations and video.
    2. Confirm none flashes more than three times in any one-second period, since no size or color threshold applies at this level.

    Common failures

    Where it breaks

    • A small status icon blinks between light and dark more than three times a second.
    • A video contains rapid strobe or camera-flash sequences, even though they fill only a small part of the frame.