Content does not flash more than 3 times per second
Why it matters
Content that flashes more than three times per second can induce photosensitive seizures in users with photosensitive epilepsy — an estimated 3 in 100,000 people worldwide, with real documented harm. WCAG 2.2 SC 2.3.1 (Three Flashes or Below Threshold) is a Level A requirement. This is not a theoretical risk: the Pokémon seizure incident in 1997 caused over 600 hospitalizations. Strobe-effect loading animations and attention-seeking flashing banners are the most common sources.
Severity rationale
Low because most applications do not produce high-frequency flashes — this applies only to explicit animations with rapid brightness cycling — but when it occurs it poses a direct physical safety risk and violates WCAG 2.2 SC 2.3.1 at Level A.
Remediation
Replace any high-frequency flashing animation with a smooth, low-frequency alternative that pulses rather than flickers.
/* Bad — flashes at ~2Hz (above the danger threshold on short loops) */
@keyframes flash {
0%, 49% { opacity: 1; background: white; }
50%, 100% { opacity: 1; background: black; }
}
.bad-loader { animation: flash 0.3s infinite; } /* 3.3 Hz — dangerous */
/* Good — gentle fade at 0.5 Hz, well below the 3Hz threshold */
@keyframes pulse {
0%, 100% { opacity: 0.6; }
50% { opacity: 1; }
}
.loader { animation: pulse 2s ease-in-out infinite; }
Also apply @media (prefers-reduced-motion: reduce) { .loader { animation: none; } } to disable all motion for users who have requested it in their OS settings.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Accessibility WCAG Compliance Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- wcag:2.2 · 2.3.1 — Three Flashes or Below Threshold
- section-508:2018-refresh · 501.1 — Scope
Taxons
History
- 2026-04-18·v1.0.0·Initial import from accessibility-wcag·automated