Keyboard Polling Rate Test

Press groups of keys at once and the tester finds the interval your keyboard reports in, from the gaps between the key events.

Size
Keys
Shape
F-keys

Listening: press any key. Hold Esc for 1 second to release the keyboard (e.g. to use Tab).

Keys tested
0%
0 of 104 keys
Last key
–
press any key
Held now / max
0 / 0
keys at the same time
Key presses
0
No chatter found
EscF1F2F3F4F5F6F7F8F9F10F11F12PrtScScrLkPause~`!1@2#3$4%5^6&7*8(9)0_-+=BackspaceTabQWERTYUIOP{[}]|\Caps LockASDFGHJKL:;"'EnterShiftZXCVBNM<,>.?/ShiftCtrlWinAltAltWinMenuCtrlInsHomePgUpDelEndPgDn↑←↓→Num/*−789+456123Enter0.

Tip: click a key in the picture if your keyboard doesn’t have it, so it doesn’t count against the score.

Timing tests

Put a flat hand on the keyboard so 4–8 keys go down at once, lift it, and repeat about 15 times, or drum your fingers across the letters. The keyboard sends each change with its next report, so the gaps between those key events step in whole polling intervals.

Polling rate
–
press keys together
Interval
–
average
Spread
–
standard deviation
Gaps
0
between key events

Press several keys at once to start.

Gaps between key events up to 10 ms, in 0.25 ms steps. A 1000 Hz keyboard makes peaks at 1, 2, 3 ms; 125 Hz at 8 ms.

Chatter (double-typing) detector

A worn or dirty switch can register one press twice. Type normally for a minute, then press any suspect key 20–30 times.

Rollover & ghosting test

Held now0
Most at once0
  • none
Best combination:
  • –

Hold down more and more keys (try ASDFJKL). If the count stops at 6 of these, the keyboard is 6-key rollover. Shift, Ctrl, Alt and Win don’t count toward that limit.

Event log

EventkeycodekeyCodeLocationRepeatTime (s)Δ ms
Key events appear here.

How the measurement works

A USB keyboard doesn’t send a key the instant it goes down. The computer asks it for its state at a fixed interval, set by the keyboard’s USB descriptor or by its software: every 8 ms is 125 Hz, the usual rate for office keyboards, and every 1 ms is 1000 Hz, the usual gaming rate. 8000 Hz needs a USB high-speed connection, where the bus runs in 125 µs microframes.

So when several keys go down within a few milliseconds, they reach the browser in separate reports, and the gaps between their key events are whole multiples of the interval: 8, 16 or 24 ms at 125 Hz, 1, 2 or 3 ms at 1000 Hz. The tester keeps every gap under 20 ms, merges the key events that came in the same report, and picks the longest standard interval that at least 80% of the gaps fit, as long as that is clearly more than chance would give and hardly any gaps fall halfway between its steps, where a keyboard twice as fast would put them. The histogram shows the same data: sharp peaks one interval apart.

Running the test

Put a flat hand on the letters so four to eight keys go down together, lift it, and repeat about fifteen times. Drumming your fingers across the row works too. You need 24 gaps for a result; more makes it steadier. Keep the keyboard picture on screen while you press.

The limits, honestly

Browsers round event times to 0.1 ms (the W3C High Resolution Time spec asks for this coarsening on normal pages), and some round to whole milliseconds, which the tester detects and says so. That’s enough to tell 125, 250, 500 and 1000 Hz apart and to estimate 2000 Hz, but not to confirm 4000 or 8000 Hz. Many gaps under 0.6 ms hint at a faster keyboard, and the tester says so, but timing noise produces such gaps too, so it never reports them as a rate. The times also pass through the operating system and the browser, which add jitter; a busy computer can blur the peaks until no rate fits. Close heavy programs and try again, or compare with Chrome or Edge, which time keys to 0.1 ms on every platform.

Polling rates and what this test can see

Every key change waits for the next report, so on average a press arrives half an interval late. The last column is what the tester reports with Chrome’s 0.1 ms clock.

Polling rateIntervalAverage waitIn a browser
125 Hz8 ms4 msMeasured: gaps step in whole intervals
250 Hz4 ms2 msMeasured: gaps step in whole intervals
500 Hz2 ms1 msMeasured: gaps step in whole intervals
1000 Hz1 ms0.5 msMeasured: gaps step in whole intervals
2000 Hz0.5 ms0.25 msEstimated from 0.5 ms steps
4000 Hz0.25 ms0.125 msCan’t be confirmed: at most a hint
8000 Hz0.125 ms0.0625 msCan’t be confirmed: at most a hint

Keyboard TesterSomeone shared their result

Suggested