Skip to content
VVoid FabricLOCAL LAB
ToolsGames & TestsGuidesAbout the project ↗
FIELD NOTES / 2026-10-24

Input lag, display Hz and human reaction time

By Mihai

Separate the human response from the browser and device pipeline before interpreting a millisecond score.

A response travels through several stages

A visual reaction test is an end-to-end observation. JavaScript changes a page, the browser schedules a frame, the display presents it, you notice the cue and act, and the input device sends a response back through the operating system. The page receives an event after that path. An apparently precise timestamp does not separate all those stages. The useful question is what changed under a controlled setup, rather than how many decimals the timer can print.

What the browser clock tells us

performance.now supplies a monotonic time value suitable for elapsed intervals. It avoids wall-clock adjustments affecting a short measurement, but browsers can reduce timing precision. The reaction game records the cue-state change in an animation callback and listens to pointerdown for the response. That avoids including the whole button hold before a click event, while still including presentation and event-delivery effects. It does not observe the physical light transition on the display.

Refresh intervals are not reaction-time corrections

At 60 Hz, a nominal frame interval is about 16.67 ms; at 144 Hz it is about 6.94 ms. Those intervals explain why visual presentation granularity matters. They do not justify subtracting one interval from every reaction score. Scheduling phase, scanout and panel behavior vary. The monitor tester estimates foreground animation cadence from a short sample, which can be capped or affected by browser and power settings. The physical panel may have a different configured or variable rate.

Motion sampling is another observation

Mouse hardware, the operating system and the browser can handle motion at different rates. A browser can group multiple samples into a pointermove event; getCoalescedEvents can expose that group when supported. The polling tester uses unique delivered sample timestamps and reports the rate it sees. It does not inspect USB traffic. A frame-aligned reading may describe browser delivery even if a device is configured for a much higher report rate. More digits do not remove that limitation.

Build a comparison you can explain

Keep the browser, display, pointer, zoom and input method constant for a baseline. Run several sessions and note distractions or changed settings. Use the five-round mean alongside the fastest round instead of selecting only the best-looking result. A population percentile would require a named dataset collected under compatible conditions; Void Fabric does not infer one. For a hardware investigation, change one condition at a time and distinguish an observed event-rate change from a claimed cause. A browser practice score is not a clinical assessment.

Try the related games & tests

  • Reaction Time Test
  • Browser Aim Trainer
  • Typing Speed Test — English & Code
  • Mouse Polling Rate Checker
  • Keyboard Ghosting & Rollover Test
  • Dead Pixel & Refresh Rate Test

Sources and further reading

  • developer.mozilla.org/en-US/docs/Web/API/Performance/now
  • developer.mozilla.org/en-US/docs/Web/API/Window/requestAnimationFrame
  • developer.mozilla.org/en-US/docs/Web/API/PointerEvent/getCoalescedEvents

Use the related tools in the toolbox ↗

Void Fabric

Small tools. Less friction. Built with love by Mihai.
© 2026 Void Fabric

AboutContactPrivacyTermsEditorial policyPrivacy & cookie settings