Skip to main content
Perceivly: Perceivly home

2.3.1 Three Flashes or Below Threshold

Level A · added in WCAG 2.0

Nothing on the page may flash more than three times in any one second. The exception is flashing below the general flash and red flash thresholds. In practice, faster flashing is allowed only if it is very small or very low in contrast.

Who it helps

People with photosensitive epilepsy can have seizures triggered by flashing content, especially bright, saturated red or large flashes. Other people can get migraines or feel unwell.

How to meet it

Examples

Fails:A full-width banner that strobes black and white 10 times per second
.alert-banner {
  background: #000;
  color: #fff;
  animation: strobe 0.1s steps(1, end) infinite;
}
@keyframes strobe {
  50% { background: #fff; color: #000; }
}
Passes:A slow, gentle pulse on a small icon, far below three flashes per second
.alert-banner { background: #1a1a1a; color: #fff; }
.alert-banner .icon {
  animation: pulse 2s ease-in-out infinite;
}
@keyframes pulse {
  50% { opacity: 0.6; }
}

Can a scanner detect this?

No

axe-core has no rule for flashing, because measuring flash rate, brightness and area means analyzing rendered frames over time. Use a dedicated flash analysis tool on videos and animations, and review anything that blinks.

No automated rule tests this criterion. Check it by hand.

Common mistakes

Official W3C explanation of 2.3.1

Check your own page

See which automated WCAG checks your page fails, with the failing elements and how to fix them.

Enter a page address, for example example.com/shop.

Reviewed November 2, 2026