WCAG 2.1 · Level A · Operable
WCAG 2.3.1 — Three Flashes or Below Threshold, explained with examples
Content must not flash more than three times in any one-second period, or the flash must stay below the general flash and red flash thresholds. Photosensitive users can suffer seizures from flashing content. This is a safety criterion, not just an accessibility one.
- Number
- 2.3.1
- Level
- A
- Principle
- Operable
- Guideline
- 2.3 Seizures
Why this criterion exists
Photosensitive users can suffer seizures from flashing content. This is a safety criterion, not just an accessibility one.
If you only remember one thing: content must not flash more than three times in any one-second period, or the flash must stay below the general flash and red flash thresholds. Everything else on this page is detail.
Who feels it when this fails
Accessibility criteria sometimes feel abstract until you see who pays the cost when a site ignores them. Three Flashes or Below Threshold affects:
Users with photosensitive epilepsy
How sites typically fail it
These are the patterns we see week after week. None are intentional — they are accidents of how teams build interfaces under deadline. Knowing the failure modes is the fastest path to writing them out of your component library.
Strobe-like loading animations
Decorative video with rapid cuts
How to test for it
Use the Photosensitive Epilepsy Analysis Tool (PEAT) on suspect media.
Automated scanners catch this criterion most of the time, but never all of the time. Manual testing with the keyboard and a screen reader closes the gap.
A code fix you can copy
Slow the animation, respect reduced-motion, and never show large strobing red areas.
The problem
.flicker { animation: flash 0.1s infinite; }The fix
@media (prefers-reduced-motion: reduce) { .flicker { animation: none; } }
.flicker { animation: flash 0.5s infinite alternate; } /* 2/sec, safe */Slow the animation, respect reduced-motion, and never show large strobing red areas.
Other Operable criteria
Find every accessibility issue on your site in 60 seconds.
Free public scan. No card. AI-generated fixes for every issue we find.