2.3.2 Three Flashes
Level: AAA | Principle: Operable | Since: WCAG 2.0 | Automation: Manual
What This Means
No content on the page may flash more than three times per second, period. Unlike the Level A criterion (2.3.1) which allows flashing content if the flashing area is small enough (below the "general flash threshold"), this AAA criterion has no size exception. Any flashing, regardless of how small the area, is prohibited if it exceeds three flashes per second.
Flashing content can trigger seizures in people with photosensitive epilepsy. While 2.3.1 allows small flashing areas because the risk is lower, 2.3.2 eliminates even that risk. This is the safest approach for users with seizure disorders.
A "flash" is defined as a pair of opposing changes in relative luminance — a quick bright-dark-bright cycle. This includes animations, videos, GIFs, and any dynamic content that creates rapid luminance changes.
Who This Affects
- Users with photosensitive epilepsy — flashing can trigger seizures that are medically dangerous
- Users with migraine conditions — flashing content triggers migraines and visual disturbances
- Users with vestibular disorders — rapid visual changes cause nausea and disorientation
- Users with attention disorders — flashing content is distracting and prevents focus
Common Pitfalls
1. Animated GIFs with rapid frame changes
<!-- Bad: animated GIF that flashes rapidly -->
<img src="flashy-banner.gif" alt="Sale now on">
<!-- Good: static image or slow animation -->
<img src="sale-banner.png" alt="Sale now on">
2. CSS animations with rapid color alternation
/* Bad: rapid flashing animation */
@keyframes flash {
0%, 100% { background: white; }
50% { background: black; }
}
.alert { animation: flash 0.2s infinite; }
/* Good: gentle pulse that does not flash */
@keyframes pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.7; }
}
.alert { animation: pulse 2s infinite; }
3. Video content with strobe effects
<!-- Bad: video with uncontrolled flashing -->
<video src="concert-footage.mp4" autoplay></video>
<!-- Good: warning and user control -->
<p><strong>Warning:</strong> This video contains flashing lights.</p>
<video src="concert-footage.mp4" controls>
<!-- No autoplay, user decides to play -->
</video>
How to Test
- Review all animated content on the page: GIFs, CSS animations, JavaScript animations, videos, and any dynamic visual effects.
- Count the number of luminance changes per second in every animated element, regardless of how small the flashing area is.
- Flag any content that flashes more than 3 times per second, even in a tiny area.
- Check for user-triggered animations (hover effects, click animations) that might produce rapid flashing.
- Pass: No content on the page flashes more than 3 times per second, regardless of area size.
- Fail: Any content flashes more than 3 times per second, even in a small area.
How to Fix
- Remove all content that flashes more than three times per second
- Replace flashing animations with slow fades, gentle pulses, or static content
- For video content, edit to remove strobe effects or rapid luminance changes
- If flashing content is unavoidable (such as user-submitted video), provide a warning and require explicit user action to play
- Use
prefers-reduced-motionCSS media query to disable animations for users who request it