Camera
Idle
Camera feed appears here
Tap Start to begin
fps ·
How to aim Fill the frame with a bright white area on the display. Hold ~20cm (8 inches) away. Keep steady. If you're testing your computer monitor, open a blank white browser tab on it and use your phone to run this page.
Analysis
Awaiting signal
Flicker Frequency (estimate)
Hz
Start camera to measure
Modulation Depth
%
0% = steady light · 100% = full on/off
Row-luminance Signal the pattern your camera sees
Camera error

Your phone's camera can see flicker your eyes can't.

Phone and webcam sensors use a rolling shutter — they scan the sensor row by row instead of capturing the whole frame at once. When the light source is flickering, each row freezes a different phase of the on/off cycle. That turns invisible temporal flicker into visible horizontal banding.

01 · CAPTURE

Rolling shutter scan

The sensor exposes row 0, then row 1, then row 2, each ~20–50 microseconds apart. A steady light produces a clean image. A flickering light produces stripes — one row catches an "on" phase, the next a "off" phase.

02 · EXTRACT

Luminance per row

We draw each frame to a canvas, read the pixels, and collapse each row to a single brightness value. The result is a 1D signal — brightness versus row — shown in the waveform above.

03 · ANALYZE

FFT → frequency

An FFT on the row signal reveals the dominant spatial frequency of the banding. Multiply by the camera's row readout rate and you get flicker frequency in Hz. Peak amplitude vs. DC gives modulation depth.

What counts as safe.

There is no universal threshold, but independent research bodies (IEEE 1789, the EU's lighting guidance, and display-industry standards like TÜV Eye Comfort) converge on roughly these ranges.

Frequency (Hz)

< 200 Hz
Very likely to cause eye strain and headaches. Consciously perceptible as flicker for many people, especially in peripheral vision. Common on low-end LED lighting and some cheap displays.
200 – 1250 Hz
Below the IEEE 1789 "low risk" threshold. Not consciously visible but still reaches the retina. This is the OLED PWM danger zone (~240–480 Hz is typical).
> 1250 Hz
IEEE 1789 "no observable effect" zone. Considered flicker-safe. Some premium OLEDs (2024+ Samsung, high-end gaming monitors) now advertise ≥2000 Hz PWM.
None detected
DC dimming or no PWM in use. The ideal case for eye comfort.

Modulation Depth (%)

< 3%
Essentially flicker-free. You can stop worrying about this light.
3 – 8%
Low flicker. Comfortable for most people at typical use distances.
8 – 30%
Moderate. Can cause fatigue in sensitive users during long sessions, especially at lower brightness where duty cycles shorten.
> 30%
High. Typical of PWM-dimmed OLEDs at low brightness. Symptomatic users should raise brightness or use a gamma-dimming overlay like Tap Zap.

Honest caveats.

Tap Zap

Found flicker?
Zap it.

Tap Zap dims your display using software gamma tables instead of hardware PWM. Your backlight stays at 100% — no blinking, no eye strain, no flicker. System-level. Under 1MB.

$39 — one-time purchase, lifetime updates, 3 devices
Get Tap Zap →