Flicker has published thresholds, so use them

Making something pulse is the cheapest way to draw the eye, so it ends up everywhere: warnings, pickups, low-health vignettes, rate meters, transitions. There are published numbers for when that becomes a problem, they are specific, and almost nobody building an effect has them to hand.

The same 2Hz pulse, drawing attention two ways. Left: modulating luminance. Right: modulating size and rim width at near-constant mean brightness. Both are deliberately below the 3Hz threshold.

Both halves read as alive from across a room. Only one of them is a luminance flash, and the right one would still be safe if you tripled its rate.

The numbers

WCAG 2.3.1 draws the line at three flashes in any one second, and 2.3.2 takes the stricter position of no flashing above three per second at all. A "flash" in that definition is not any change: it is a relative luminance change of 10% or more, where the darker state is below a relative luminance of 0.80, over a region larger than about 25% of a 10 degree visual field.

Two consequences fall straight out of that and they are the practical half:

The band that matters is roughly 3 to 30Hz, worst around 15 to 20. Below 3 is safe by the standard. Above about 50 the eye fuses it and it stops being a flash at all, but a game cannot rely on that because frame rate is not a constant.

Where this hides in a field renderer

The effects most likely to cross the line are not the ones anyone would describe as flashing:

What to modulate instead

The useful reframing is that attention is drawn by change, and luminance is only one of the things available to change. These read nearly as strongly and are not flashes:

Testing it without instruments

A frame-differencing pass over a capture gets you most of the way: render the effect, compute mean luminance per frame over the region, and look at how many times per second it swings by more than 10%. That is a short script, it runs on a video file, and it turns an argument about whether something is too much into a number.

The Harding test is the industry instrument for this and broadcasters require passing it. It is worth knowing it exists before shipping something with a lot of combat flash, though for most work the frame-difference check catches the problem long before anyone needs it.

And the honest note: this page exists because a demo elsewhere on this site had rate bars pulsing at 8 to 12Hz, squarely inside the band, two pages away from a warning about exactly that. Writing the rule down is not the same as following it, which is why the check needs to be mechanical.

Rules of thumb

  1. Three flashes per second is the line. Below 3Hz is safe by the standard.
  2. A flash is a 10% relative luminance change over more than about a quarter of the field. Area is part of the definition.
  3. Saturated red has its own stricter rule. Damage and alarm states are where that bites.
  4. Anything whose blink rate encodes a value will sweep the entire risk band. Clamp the rate, not just the maximum.
  5. Modulate size, position, rim width or hue instead. They draw the eye about as well and none of them is a flash.
  6. Measure it by frame-differencing a capture. An opinion about whether it is too much is not a check.

All 61 notes How to use them Credits