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

CSS
.flicker { animation: flash 0.1s infinite; }

The fix

CSS
@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.