Valid-sample histogram
After a valid run, the histogram shows the dense part of the sample set and the long tail from slow events. The text result remains the primary answer.
Press a normal key repeatedly to estimate the scheduling delay from the browser event timestamp to the start of JavaScript handling, then review the median, P95, and sample distribution.
Test settings and live samples
Enter 10–200 whole-number samples; the default is 50. The run ends automatically at the target.
Enter a whole number from 10 to 200.
Current phaseNot started
The result describes only the browser event-dispatch stage. It is not, by itself, the keyboard hardware, USB/Bluetooth link, or total key-to-screen latency.
After a valid run, the histogram shows the dense part of the sample set and the long tail from slow events. The text result remains the primary answer.
When Event.timeStamp is an epoch timestamp, subtract performance.timeOrigin to convert it to the current page's relative time. For one sample, dispatch delay dᵢ = performance.now() − normalizedEventTimestamp. Reject samples with a negative deviation beyond 1 ms or a value above 10,000 ms. Mean, MAD, median, and P95 use unrounded samples; P95 uses linear interpolation.
Unrounded millisecond values are kept internally. The page displays two decimal places, and sample sufficiency and quantiles use the original values.
Independent tests cover relative and epoch timestamps, negative-deviation tolerance, extreme-value rejection, linear-interpolated P95, MAD, sample boundaries, histogram bins, repeat and composed-input filtering, Tab navigation, focus invalidation, and multiple viewport sizes.
A web page cannot see physical key actuation, so this is not pure end-to-end hardware latency. CPU load, extensions, background tabs, input methods, timer precision, and privacy protections affect the result. Repeat events, composed input, Tab, Ctrl, Alt, Meta, and modifier-only keys are excluded. Losing focus or backgrounding the page discards the unfinished run.
The tool puts Event.timeStamp and performance.now on the same time base, then subtracts the event timestamp from the start of event handling. The statistics come from valid, unrounded samples.
No. A page cannot see the physical actuation time. The result combines device firmware, the connection, the operating system, browser dispatch, and current main-thread load, so it is best used to compare consistency in the current browser environment.
P95 is the value at or below which about 95% of valid samples fall. It shows a slow-event tail better than the mean, but it is still unstable when the sample count is small.
All key events and statistics are processed locally in this browser. Nothing is uploaded, no remote API is called, and nothing is written to the URL or local storage.
This tool uses no third-party runtime code or assets. The algorithm and interface are independently implemented; external links only explain browser event and high-resolution timing standards.