A controller's polling rate is how often it sends its state to the computer, in hertz. The interval between reports is 1000 divided by the rate: 125 Hz is 8 ms, 250 Hz is 4 ms, 500 Hz is 2 ms, 1000 Hz is 1 ms.
- In Chromium browsers the Gamepad API cannot show more than the browser's own polling: Chromium polls gamepads every 4 ms, about 250 Hz (kPollingIntervalMilliseconds = 4 in device/gamepad/gamepad_provider.cc, read 2026-10-29).
- WebHID, in Chrome and Edge with your permission for the device, delivers each report the controller sends, so the interval between them is the controller's own.
- Neither is input lag. The time from a press to the screen changing needs a camera or a photodiode, and no browser can measure it.
The short answer
Polling rate is a report interval. A faster rate means a press waits less for the next report, on average half an interval: 2 ms at 250 Hz, 0.5 ms at 1000 Hz. To see your controller's rate, measure the interval between its reports; to see it beyond the browser's cap, use WebHID.
We have no recorded runs of this test in our validation notes yet, so this guide quotes no measured results. Every line and constant below is the one the test's code applies.
Two sources, kept apart
The Gamepad API gives every browser the controller's state with a timestamp that changes when there is new data. The controller polling test reads it in a tight loop on the page, not once a frame, which would cap it at the display's rate, and keeps each new timestamp. The interval between them is what the browser delivered.
In Chromium that delivery is capped by its 4 ms polling. When the median interval sits within 15% of 4 ms, our line, the test says the figure is the browser's cap and the controller may be faster. Other engines do not state a figure we have checked, so no cap is assumed for them.
WebHID reads the device's input reports one by one. Each event is a report, so the interval is the controller's, plus a little jitter from delivering the event, which makes the measured spread an upper bound.
How a reading is taken
A measurement runs 5 seconds while you move a stick in circles: a stick held still sends nothing new. Pauses over 100 ms are left out as the hand resting, and a figure needs at least 100 intervals. Those are our lines. The result is the median interval, the rate it implies, and the spread from the 10th to the 90th percentile, which over Bluetooth is often as telling as the median.
Why the link matters
The same controller can report at different rates over a cable, a wireless adapter and Bluetooth, and some pads send a short report over Bluetooth until a host asks for the full one. The test names the source and, for the two Sony pads over WebHID, which report the pad is sending. Compare a controller with itself on the same link, in the same browser.
Terms used here
Questions
- Why does my controller read 250 Hz in the browser but more in other tools?
- Because Chromium polls gamepads every 4 ms, so the Gamepad API cannot deliver updates faster than about 250 Hz. Use the WebHID reading, where the controller offers HID, for its own rate.
- Does overclocking a controller's polling rate help?
- It shortens the average wait for a report by half the change in interval, which is a millisecond or two at most. Measure before and after on the same link; the spread can matter more than the median.