Flash rate has a hard safety ceiling
Aliases: three flashes per second · flash frequency cap · general flash
What it is
The accessibility cap on flashing is not “don’t make it too flashy.” Three flashes threshold is a countable hard gate: in any one second, opposing light–dark (or saturated-red) transitions must not exceed three; more than that puts the content inside the frequency window for photosensitive seizure. That window runs roughly from 3 to 60 per second, with the peak often near 15–20. Pinning the cap at three per second is how product content is kept from stepping through the door.
A “flash” is not “the animation feels fast.” It is a pair of opposite-direction changes: lighter then darker, or the reverse. A specified “duration 200 ms” does not replace a count on pixels that were actually drawn.
Why it happens
This leaf does not explain why cortex can be paced by a rhythm—that mechanism sits on the visual-capacity side. As a product criterion it translates the clinical window into an executable counting rule: more than three flash-pairs in any one-second window means the content has entered a known dangerous band. Motion below three per second can still steal attention or cause discomfort; that is an attention adaptation, not this frequency gate.
The count has to run on frames that were actually painted. Stylesheet intent, a design file, even a source video’s nominal frame rate will lie: CSS loops, canvas, ad iframes, inversion under a dark theme, timing on a high-refresh panel, all change how many opposing transitions truly occur in a second. Frequency is not a property of the asset; it is a measurement on the playback path.
Studying it
Safety evaluation must not use photosensitive people as a threshold probe. The standard path is frame-by-frame analysis of the rendered result:
- Capture actual pixels at the display refresh (at least 60 frames per second), covering main content, overlays, embedded video and ad slots—not a design export.
- Convert each frame to relative luminance: linearise sRGB channels, then 0.2126 R + 0.7152 G + 0.0722 B.
- A general flash is a pair of opposing relative-luminance changes of 10% or more of maximum, with the darker side below 0.80. Count red flashes as opposing transitions involving saturated red; do not dismiss them with luminance swing alone.
- Slide a one-second window along the timeline; more than three flashes inside any window fails on frequency. Whether area and contrast pull that flash “below threshold” is the next layer of the criterion, not an excuse to skip the count.
- Run the same finished piece through the Photosensitive Epilepsy Analysis Tool (PEAT) or a Harding Flash and Pattern Analyser as used in broadcast. Tools emit time-coded risk segments, not taste scores.
Independent variables: flashes inside the one-second window, whether capture includes embeds, whether light and dark themes are run separately. Dependent variables: existence of any window >3, duration of risk segments.
Re-test after content updates, theme changes, and third-party swaps. Absence of discomfort reports is not a pass.
Where it stops holding
Backlight pulse-width modulation of the display is hardware refresh, not this content criterion. Flashing below three per second can still make attention-disability or vestibular users unable to work; pause and reduced motion still apply, but those controls do not replace the frequency gate—the flash may already have entered the field before pause. The highest conformance level allows no more than three flashes per second even for small areas; area exemptions fail at that level. Strobe on a set that a camera bakes into the finished piece becomes content flash on the playback path; measure the piece, not the room.
Applying it
- Put loading animation, alerts, transitions, full-screen video, canvas effects, and third-party embeds on the flash-rate review, not only the main chrome.
- Prefer stable states that do not switch on and off. If change is required, first push opposing transitions to three per second or fewer, then talk about area.
- Verify: capture the to-be-shipped interaction or master frame by frame, detect opposing relative-luminance changes, count with a one-second sliding window. Any window above three gets a time code and a new asset—do not sign off with “it doesn’t look like it flashes.” Run dark and light themes, windowed and full-screen. A tool report of risk segments blocks release.
Related
- Same group: J4.10.2 Large, high-contrast flashes are the highest risk · J4.10.3 The harm is medical, not a matter of taste
- Nearby: A1.08 Flicker fusion and display refresh · D1.09 Flashing alerts · U11.03 Pausable animated charts
- Search terms:
three flashes threshold·PEAT·Harding FPA·general flash