Photon Lab · phone camera and microphone as the sensor

System Latency Test (Photon Lab)

Measure click-to-photon system latency with a phone: the PC flashes on each click, the phone hears the click and sees the flash, and reports the median with an honest ± range.

Photon Lab · click-to-photon system latencyEmitter on the PC · sensor on the phone · no extra hardware

Open this page on the PC you want to measure and switch to Emitter. The panel stays black and flashes white on every mouse click or key press.

Open the same page on a phone, switch to Sensor, allow camera and microphone, and frame the flashing panel inside the target box from about 30 cm away.

Run the sensor's audio calibration once, then click the mouse on the PC ten to fifteen times with a second between clicks. The phone hears each click and sees each flash; the difference is your system latency.

Boundary: the phone camera quantises time to its frame interval (16.7 ms at 60 fps, 33 ms at 30 fps) and the microphone adds a capture delay that calibration removes. The result is an estimate with a stated ± range, not a laboratory photodiode measurement. It still captures the whole chain: mouse switch, USB, operating system, game or browser, GPU and panel.

Words on this page
Click-to-photon

The complete delay from pressing the button to light changing on the screen, including the mouse, the operating system, the game and the display.

Input latency

The delay between your action and the result appearing. What a browser can see is one slice of it: the event arriving and the next frame being drawn.

Refresh rate

How many times per second the display redraws. It caps how quickly anything you do can become visible, whatever the rest of the chain does.

Quick answers before you test

Input lag test vs system latency test

Browser latency tests stop at the page. Photon Lab measures the whole chain — mouse switch, USB, operating system, browser, GPU and panel — because the phone observes the physical click and the physical light change.

How precise can a phone be?

The camera quantises time to its frame interval: ±8 ms at 60 fps, ±17 ms at 30 fps. Ten or more pairs and the median shrink the noise, and the ± is always printed next to the number.

Browser-only latency lab →

Why calibrate the microphone?

Microphones add a capture delay before the browser hears a sound. The phone plays a beep and times how long it takes to hear itself; that offset is removed from every pair so the click is placed at its true moment.

What the result actually measures

The emitter page paints a white flash on every click or key press and logs its own click-to-paint delay. The sensor page analyses the camera feed for rising luminance edges inside a target region using per-frame capture timestamps, detects click transients in the microphone with an audio worklet, pairs each flash with the click that preceded it within 400 ms and summarises the pairs as median, spread and an uncertainty of half a camera frame plus the spread. A calibration beep measures the microphone capture offset.

Measurement boundary: The estimate carries the camera frame quantisation and any uncorrected microphone offset, and it needs a quiet room, a steady hand and a click that is actually audible. It cannot separate display latency from input latency on its own; compare two runs where only one variable changed.

How to interpret the output

Median latency

Under 30 ms is esports-class, 30–50 ms competitive, 50–80 ms typical desktop, above 80 ms noticeable. Judge with the ± shown; a 45 ± 9 ms result cannot be distinguished from 52 ± 9 ms.

Spread

The median absolute deviation between pairs. Large spread with a stable setup usually means missed camera frames or double clicks; keep clicks a second apart.

Click → paint on the emitter

The browser's own share of the latency. Subtract it mentally to see how much sits in the display and the input device.

Troubleshooting unexpected results

No flashes are seen

Fill the target box with the panel, avoid reflections, lower ambient light and keep the phone still. The luminance jump must exceed 40 levels; a dim monitor or a tilted phone can fail that.

No clicks are heard

Move the phone within 30–40 cm of the mouse, use a mouse with an audible switch, and disable noise suppression if the browser exposes it. The audio meter should twitch on every click.

Calibration fails

Raise the phone volume so the beep is audible, keep the room quiet during the three beeps and retry. Without calibration the result is still shown, labelled as uncorrected.

Frequently asked questions

Is this as accurate as an LDAT or a photodiode?

No. Dedicated hardware resolves sub-millisecond events; the phone resolves a camera frame. The lab prints its uncertainty so the number is honest, and differences between two runs on the same phone are far more precise than the absolute value.

Does anything get recorded or uploaded?

No. Video frames are reduced to one luminance number and discarded; audio is reduced to onset timestamps inside an audio worklet. Only the summary can be saved to your passport or shared as a card.

Can I measure a console or TV?

Only if the console can show a flash on your click, which this page cannot cause. The method works for anything that runs this page: PCs, laptops, cloud-gaming browsers and phones as emitters with a second phone as the sensor.

Can a chatbot tell me my system latency?

It can quote typical numbers for a class of hardware. Photon Lab measures your mouse, PC, browser and display together, on your desk, today.