WCAG 2.2 success criterion, Level A
WCAG 2.3.1 Three Flashes or Below Threshold
Nothing on the page may flash more than three times in any one second, unless the flashing is small enough and faint enough to fall under the general and red flash thresholds.
- Number
- 2.3.1
- Level
- A
- Added in
- WCAG 2.2
- Guideline
- 2.3 Seizures and Physical Reactions
- Principle
- Operable
What it asks
Flashing content can cause seizures in people with photosensitive epilepsy. Unlike most accessibility problems, this one is not a barrier to using the page. It is a danger to the person looking at it, in the first seconds it plays. That is why it is one of the four non-interference criteria: it must hold for everything on a page, including content otherwise outside a conformance claim.
The rule has two parts. Nothing may flash more than three times in any one second period. Or, if it does, the flashing must be below both the general flash threshold and the red flash threshold. A flash is a pair of opposing changes in brightness: lighter then darker, or darker then lighter. Three flashes is three such pairs.
The thresholds come from research on seizure risk and they are precise. A general flash is a pair of opposing changes in relative luminance of 10% or more of the maximum, where the darker image is below 0.80 relative luminance. A red flash is any pair of opposing transitions involving a saturated red. Flashing is below the thresholds if there are no more than three general flashes and no more than three red flashes in any one second, or if the flashing area is small: no more than 0.006 steradians, which the W3C describes as about 25% of any 10 degree visual field at a typical viewing distance. For a screen at 1024 by 768 pixels viewed normally, the W3C gives a rectangle of 341 by 256 pixels as a working size.
The Level AAA version, 2.3.2 Three Flashes, drops the thresholds and bans any flashing above three per second, whatever its size.
Its official name is success criterion 2.3.1 Three Flashes or Below Threshold, at Level A. It was added in WCAG 2.2, under guideline 2.3 Seizures and Physical Reactions and the principle Operable. The W3C’s normative text says, in part:
“Web pages do not contain anything that flashes more than three times in any one second period, or the flash is below the general flash and red flash thresholds.”
From WCAG 2.2, W3C. Full explanation: Understanding 2.3.1 Three Flashes or Below Threshold.
Who it helps
People with photosensitive epilepsy, for whom flashing in the right frequency range, especially bright flashes and red flashes over a large area, can trigger a seizure. Some people with migraine and some vestibular conditions are also affected by rapid flashing, though the thresholds were set for seizure risk.
What passes and what fails
These pass
- A video whose fastest flashing was checked with an analysis tool and found to be under the thresholds.
- A loading indicator that pulses once a second.
- A notification badge that blinks twice and then stays lit.
- A strobe effect in a video that occupies a small corner of the frame, below the area threshold, and avoids saturated red.
- A page with no video, animation or GIF that changes brightness quickly. The criterion does not apply.
These fail
- A strobing intro sequence in a hero video, flashing white at more than three times a second across the whole frame.
- An animated GIF that loops rapidly between light and dark frames.
- An alert animation that flashes a large red panel on and off several times a second.
- A game or reward effect that fills the screen with rapid bright flashes.
- Lightning in a video that flickers more than three times within a second.
How to test it by hand
- List every piece of content that can change brightness quickly: video, animated GIFs and images, canvas or WebGL animations, CSS animations and transitions, and scripts that toggle styles.
- Watch each one through, looking for anything that flickers, strobes or flashes, and note the moment it happens.
- For anything suspicious, use a flash analysis tool. The Trace Center’s Photosensitive Epilepsy Analysis Tool (PEAT) is free and measures video against the general and red flash thresholds. Capture a screen recording of CSS or script animations so they can be analysed the same way.
- Content that flashes no more than three times in any one second passes. Content that flashes more often passes only if the tool reports it under both thresholds.
- Record what was analysed and what the tool found, because a pass on this criterion should rest on a measurement, not a glance.
What automated testing can decide
What a machine can decide
The flash thresholds are arithmetic over the frames of a video or animation: measure the brightness of each frame, count opposing changes in each one second window, and measure the area and the red content of the changes. Given the real frames, software can do that, and tools such as PEAT exist to do it for video.
What it cannot
The catch is getting the frames. To count three flashes a second reliably, a tool needs the real video or animation frames, not occasional pictures of the page. A page scanner that looks at a page now and then cannot tell a strobe from a steady image, and a number produced that way would be wrong with confidence. Content that only plays on a click is often never seen at all.
How Dreven handles it
Dreven sends this criterion to a person rather than decide it itself. Where a page has video, animation or other content that could flash, the audit lists it, with the page and the element, so the reviewer knows what to test.
The reviewer tests that content with a flash analysis tool such as PEAT and records the result against the criterion. Dreven never marks 2.3.1 as passed because nothing was found.
No automated check makes a site conform. In Dreven, a person reviews the results and signs the report.
Related criteria
- 2.2.2 Pause, Stop, Hide (Level A). Moving and blinking content needs a pause, stop or hide control.
- 1.4.2 Audio Control (Level A). Another non-interference criterion: audio that starts by itself must be stoppable.
- 2.1.2 No Keyboard Trap (Level A). Another non-interference criterion: the keyboard must never be trapped.
- 2.2.1 Timing Adjustable (Level A). Time limits, the other thing a page may impose on people without asking.
Questions people ask
What counts as a flash in WCAG 2.3.1?
A flash is a pair of opposing changes in brightness, lighter then darker or darker then lighter. The criterion allows at most three in any one second period unless the flashing is below the general and red flash thresholds.
What are the general and red flash thresholds?
A general flash is a pair of opposing changes in relative luminance of 10% or more of the maximum, where the darker image is below 0.80 relative luminance. A red flash is any pair of opposing transitions involving a saturated red. Flashing is below the thresholds if there are no more than three general and no more than three red flashes in any second, or if the flashing area is no more than 0.006 steradians, about 25% of a 10 degree visual field at a typical viewing distance.
Can an automated tool test 2.3.1?
Only with the actual video or animation frames, enough of them to count flashes. A page scanner that looks at a page now and then cannot. Use a flash analysis tool such as PEAT on the media itself, and record the result.
What is the difference between 2.3.1 and 2.3.2?
2.3.1 is Level A and allows flashing above three per second if it stays under the general and red flash thresholds, which depend on size and brightness. 2.3.2 Three Flashes is Level AAA and allows no flashing above three per second at all.