Skip to the instrument
mouse-test.net

Mouse polling rate test

Move the mouse in fast circles inside the pad. The instrument reports the rate the browser actually receives.

Events: —Clock step: measuring…Isolation: —

Move the mouse in fast circles here for 5–10 seconds. Slow movement is ignored.

— Hz

Nearest standard rate
—
p1 · p50 · p99
—
Windows near that rate
—
Dropouts
—
250 ms windows
—
Rate per 250 ms window; dashed line is the nominal, grey bars are skipped windows.
Report intervals, 0.1–20 ms on a log scale.

Result

Waiting for input

Loading the instrument…

The polling rate is how often the mouse reports its position. This test reads every report the browser receives through pointerrawupdate, measures the interval between them in 250 ms windows during fast motion and snaps the result to the nominal steps 125, 250, 500, 1000, 2000, 4000 or 8000 Hz.

How to read the readings

ReadingMeaningThreshold
Ratemedian of 250 ms windowssnapped to a nominal within ±12 %
Windows on nominalshare of windows within ±10 % of the nominalpass at ≥ 90 %
A step lowerwindows more than 10 % below nominalmarginal at 10–30 %, fault above 30 %
Dropouts8–100 ms silences while moving fastfault above 1 % of the time
above ≈ 3000 Hzover 3000 Hz, or reports arriving in bunchesthe browser cannot separate higher rates; no verdict

What a browser cannot measure

  • The thresholds are provisional. They have not yet been checked against recorded traces from 4000 and 8000 Hz mice, so readings are worded as “looks like” and borderline cases are not graded.
  • Above about 3000 Hz the browser cannot tell 4000 from 8000 Hz: Windows groups reports and the clock step is 5 µs at best.
  • Safari and iOS deliver one pointer event per frame, so the reading is the screen rate, not the mouse.
  • macOS thins out mouse events; Chrome on a Mac often shows 125–500 Hz for a faster mouse. On a Mac the test reports the rate but grades only a clean result; anything else is marked as not measurable.
  • Without cross-origin isolation the clock step is 100 µs; this site is isolated, the header shows the measured step.

Fixing the fault

Windows
  1. Plug the mouse or its receiver into a rear USB port, not a hub.
  2. Set the rate in the maker’s software and save it to the mouse.
  3. Control Panel → Power Options → Change plan settings → Change advanced power settings → USB settings → USB selective suspend setting: Disabled.
  4. For wireless mice, put the receiver on an extension cable near the mouse.
macOS
  1. Expect a lower reading: macOS coalesces mouse events.
  2. Set the rate in the maker’s software; check it again in Chrome.
Linux
  1. Check usbhid polling: some kernels cap mice at 125 Hz unless mousepoll is set.
  2. Test on a rear USB port without a hub.

Questions

Why does my 8000 Hz mouse show “above ≈ 3000 Hz”?

Above about 3000 Hz browsers cannot separate rate steps: Windows delivers reports in bunches and timestamps have a limited resolution. The test says so instead of printing a number it cannot back up.

Why is the rate lower on a Mac?

macOS coalesces mouse events before the browser gets them, so Chrome on a Mac often shows 125–500 Hz even for a faster mouse. The test then shows the reading but does not grade the mouse.

Why must I move the mouse fast?

When the mouse moves less than one count per report, the OS drops empty reports and the rate looks lower. Slow stretches are ignored.

Does Safari work?

Safari only delivers one pointer event per frame, so it measures the screen, not the mouse. Use Chrome, Edge or a recent version of Firefox.

Method and algorithm version

Algorithm version 1 (2026-10). Source by quality: pointerrawupdate, then coalesced pointermove, then plain pointermove (frame-limited, no verdict). Motion is split at pauses over max(25 ms, 8 × the rolling median interval); the first 50 ms of each run and stretches with less than 2 counts per report are discarded. Windows overlapping main-thread long tasks are skipped. The clock step is measured from the timestamps, not assumed.