Tools/Mouse Tests

Mouse Polling Rate Test

Move your mouse in circles over the test area. This page counts pointer events the browser delivers over a rolling 250 ms window and shows the live rate, average, peak and a 10 second chart. It does not read the USB polling rate. Free, runs in your browser.

Current
-
Average
-
Peak
-
Samples
0
Nearest standard rate
Move your mouse to start

Counted from pointer events, not the USB report rate.

Move your mouse quickly in circles here

The mouse only reports when it moves. A stopped pointer shows a dash, not 0 Hz. Keep it moving for a few seconds, then check the average.

Hz over the last 10 seconds

About mouse polling rate

What polling rate is

Polling rate, or report rate, is how often the mouse sends its position to the computer. At 125 Hz that interval is 8 ms, at 1000 Hz it is 1 ms, and at 8000 Hz it is 0.125 ms. This page cannot read the USB descriptor. It counts pointer events the browser delivers over a rolling 250 ms window and turns that count into Hz. Unlike DPI, which is about distance, polling rate is about time: how fresh the cursor position is when the game reads it.

1000 vs 4000 vs 8000 Hz

Going from 125 to 1000 Hz cuts up to 7 ms of delay, which you can feel. Going from 1000 to 8000 Hz cuts under 1 ms, and the gain keeps shrinking because each step halves an already tiny interval. Higher rates also cost CPU: every report is an interrupt, and some games and older CPUs stutter at 8000 Hz. For most people 1000 Hz is plenty. 4000 Hz is a fair middle ground on a fast PC with a high refresh monitor, and 8000 Hz mainly pays off at 240 Hz and above.

Why the browser may read lower than the box

Browsers often merge pointer events to the frame rate. pointerrawupdate reports them as they arrive. pointermove plus getCoalescedEvents can recover samples merged into one frame event. Plain pointermove has no merged samples and tops out near the display refresh rate. Some browsers still drop or bundle reports, especially at 4000 Hz and up. Laptops on battery can throttle input. A USB hub, front panel port or USB 3 port with interference can cap the rate, and many wireless mice drop to a lower rate in power saving or Bluetooth mode. The OS can smooth or batch input too. Expect a reading a few percent below the setting, with jitter, when the label says pointerrawupdate. A steady 950 Hz on a 1000 Hz mouse in that mode is a pass. A pointermove-only number near the refresh rate is not.

Checking an 8K mouse

Most mice ship at 1000 Hz even when the box says 8000 Hz. Open the vendor software and set the polling rate to 8000 Hz first. Many 8K mice only reach it wired or with the vendor high speed dongle, so test both. Plug the receiver straight into a rear USB port, run the test in Chrome or Edge, and make fast circles for a few seconds while the label says pointerrawupdate. If that average stays near 1000 Hz, the 8000 Hz setting is not taking effect. A plain pointermove result cannot show 8000 Hz, because it tops out near the refresh rate.

Related tools

Measure real sensor sensitivity with the mouse DPI test, check every button and the scroll wheel with the mouse tester, or catch a worn switch with the double click test. Polling rate only helps if your screen keeps up, so check it with the refresh rate test.

FAQ

Frequently asked questions

What does this test count?

A browser cannot read the USB descriptor or the mouse firmware setting. This page counts pointer events. It prefers pointerrawupdate. If that event never arrives, it counts samples from pointermove via getCoalescedEvents. If those samples are missing, it counts plain pointermove events only. Hz is the gaps in a rolling 250 ms window: (events minus one) divided by the span in seconds. A span under 120 ms is ignored, and a 0 ms span is never divided, so the result cannot be infinite.

Which browser API is in use right now?

The line under the numbers names the API for this visit: pointerrawupdate, pointermove + getCoalescedEvents, or pointermove only. pointerrawupdate is the closest a page can get to raw reports, and it is still not a USB read. pointermove is delivered around the frame rate; getCoalescedEvents can put the merged samples back when the browser includes them. If pointerrawupdate is present but no raw event shows up, the page switches to the coalesced or basic path after movement starts.

Why can an 8000 Hz mouse show a lower rate?

The page only sees events the browser delivers. Plain pointermove tops out near the screen refresh rate, often somewhere from 60 Hz to 240 Hz, no matter what the box says. Coalesced samples and pointerrawupdate can go higher, but browsers still drop or bundle reports, especially at 4000 Hz and above. Battery saver, a USB hub, a front port, Bluetooth or a wireless power-saving mode can also cut the rate. A lower number here is not proof of the USB setting.

How should I move the mouse?

Move quickly in circles inside the test area and keep going for a few seconds. The mouse sends reports only while it moves, so a slow or stopped pointer is not a rate. Wait until Current shows a number, then read Average. The chart is the last 10 seconds. Reset clears the samples, the average and the peak.

Why is the reading a dash instead of 0 Hz?

Before the first valid 250 ms window, and whenever the pointer is idle or the tab is hidden, Current is a dash. 0 Hz would look like a measured result. Average and Peak stay as dashes until one real window has been scored. Samples is a count, so it can be 0.

What happens if I hide the tab or leave the page?

Listeners come off when the page unmounts. While the tab is hidden, background timers and pointer events are throttled, so that time is not scored as a live rate. The window is cleared, the chart leaves a gap, and the average and peak are left as they were. Come back and move in circles again to continue.

How do I check a mouse that claims 8000 Hz?

Many mice ship at 1000 Hz until you change it. Set 8000 Hz in the vendor software, then test wired or with the vendor high speed dongle, plugged into a rear USB port. Use Chrome or Edge and move in fast circles while the label says pointerrawupdate. A pointermove-only result near the refresh rate cannot confirm or deny 8000 Hz. If pointerrawupdate stays near 1000 Hz, the high-rate setting is probably not active.