Input TestsBrowser test

Mouse Polling Rate Test

Run a mouse polling rate test using browser-observed pointer updates. Review median Hz, event-source and coalescing context, Pointer Lock, and local aggregate history—not raw USB telemetry.

  • Browser-observed
  • Pointer Lock only when requested
  • Optional history in this browser
  • No account or upload

Important

  • Browser pointer updates are scheduled and may be coalesced; pointerrawupdate support still does not expose raw USB polling. Touch and pen samples are excluded, while some trackpads may appear mouse-like.
Test instrumentInput Tests

Start, then move the mouse inside this area.

Primary metric: Browser-observed update rate · 1000 / median accepted interval

Measurement path: Pointermove fallback

Move a physical mouse continuously when possible. Some trackpads can appear mouse-like to the browser.

Fullscreen not supportedWake Lock not supported

Browser-observed pointer timing (frozen after stop)

Browser-observed update rate
—

1000 / median accepted interval

Live browser-observed rate
—

Throttled while capturing

Measurement path
Pointermove fallback
Sample status
Limited sample

Based only on accepted browser intervals

Median interval
—
Mean interval
—
P95 interval
—
Minimum interval
—
Coefficient of variation
—

Lower means less interval variation

Peak 250 ms event density
—

Scaled browser-event window; not the primary rate

Browser dispatches
0
Browser-exposed updates
0
Valid mouse-like updates
0
Accepted intervals
0
Zero-movement samples excluded
0
Touch/pen samples excluded
0
Unknown pointer-type moves
0
Invalid intervals excluded
0
Long gaps (>250 ms) excluded
0
Dispatches with coalesced updates
0
Max updates in one dispatch
0
Pointer types observed
—
Elapsed capture
—
Capture state
Ready
Interruption
—

Recent accepted intervals (chronological)

No accepted intervals yet.

Primary Hz uses the most granular browser-exposed update timestamps available from the selected event source. Coalesced updates replace their outer dispatch in the timing stream rather than being counted twice. This is not raw USB telemetry or hardware certification.

No coalesced browser updates were exposed in this run. API support varies.

High-frequency mice can exceed what a browser can observe consistently. A lower browser-observed rate does not prove the mouse is configured lower. A stable high result can support comparisons of this browser/system path, but it does not certify the native device report rate.

Hardware polling reference — not measured directly

These are theoretical device-report intervals for context only. They are not browser gaps, rating bands, nearest-target matches, or proof of a device setting.

125 Hz
8 ms
250 Hz
4 ms
500 Hz
2 ms
1000 Hz
1 ms
2000 Hz
0.5 ms
4000 Hz
0.25 ms
8000 Hz
0.125 ms

Local run history (aggregate only)

Only aggregate summaries from normally stopped runs stay in this browser. Raw movement samples, coordinates, event timestamps, intervals, and coalesced arrays are not persisted or uploaded.

No local history yet. Complete or manually stop a run with at least one accepted interval to save an aggregate summary.

How to use

  1. Choose a 3, 5, or 10 second capture. Pointer Lock is optional and only helps reduce cursor clipping during fast movement.
  2. Press Start and, after the capture begins, move a physical mouse continuously inside the focused test area. The page prefers raw pointer updates when the browser exposes them and otherwise uses pointermove.
  3. Stop freezes the browser-exposed samples. A blur, hidden page, or unexpected required Pointer Lock exit interrupts the run and does not save history.
  4. Review the browser-observed update rate, measurement path, interval distribution, sample status, exclusions, and dispatch/coalescing context. The result is not a USB or sensor report.
  5. Reset clears the current run but preserves aggregate local history. Repeat with the same browser, device, motion pattern, display, and system load for comparison.

What the result means

  • Browser-observed update rate is 1000 divided by the median interval between accepted, nonzero, mouse-like browser updates from one measurement path. Mean, P95, and minimum intervals show other parts of the accepted timing distribution.
  • Raw pointer updates are preferred when supported; pointermove is the fallback. If a dispatch exposes coalesced PointerEvents, their individual timestamps supply the detailed stream and the outer dispatch is not counted again.
  • Zero movement, invalid intervals, and gaps longer than 250 ms are excluded and counted. Touch and pen samples are excluded from primary stats; empty or unknown pointer types are accepted as mouse-like and counted separately.
  • Browser dispatches and browser-exposed updates remain separate context. Sample status describes the amount of usable browser evidence only; it is not an accuracy, hardware-health, or outcome grade.

Limitations

  • Browser pointer updates are scheduled and may be coalesced; pointerrawupdate support still does not expose raw USB polling. Touch and pen samples are excluded, while some trackpads may appear mouse-like.
  • The primary stream is browser-observed PointerEvent timing from pointerrawupdate when supported or pointermove as fallback—not USB, HID, firmware, sensor, or device-report telemetry.
  • Event.timeStamp and browser-exposed coalesced events provide more detailed browser evidence, but timer precision, browser implementation, scheduling, and coalescing can still change what is observed.
  • Operating-system load, browser work, CPU scheduling, display timing, movement pattern, focus, background activity, and device behavior can all affect the sample stream.
  • Pointer Lock only reduces cursor clipping; it does not change the measurement into a hardware polling report. Permission denial continues as an unlocked run.
  • Touch and pen samples are excluded, but pointerType is a browser label and some trackpads may appear mouse-like. This page does not certify a physical mouse.
  • Zero movement, non-positive intervals, and gaps over 250 ms are excluded from interval statistics. A short or paused run can have no usable rate.
  • A high peak or a lower browser-observed rate is not proof of a good, bad, failed, or misconfigured device. Do not map results to a nearest hardware tier.
  • Fast device reports such as 2,000, 4,000, or 8,000 Hz can be under-observed by a browser event stream; theoretical intervals are shown only as context.

Troubleshooting

Observed Hz is blank or low
Move continuously with nonzero motion, keep the surface focused, and allow enough time for accepted intervals. Reset and repeat with the same motion path and conditions.
A specified 1,000, 4,000, or 8,000 Hz mouse looks lower
Browser dispatch, scheduling, coalescing, display timing, and system load can reduce observed events. This page cannot certify the USB or sensor rate.
Coalesced browser updates were returned
Their individual browser timestamps replace the outer dispatch in the detailed timing stream. Dispatch counts remain separate, and neither value reveals raw USB reports.
Pointer Lock is denied
Continue unlocked or allow Pointer Lock and retry. It is only a clipping aid, so the browser-observed measurement remains available without it.
Results vary between runs
Use the same duration, mouse, browser, system load, focus state, and movement pattern, then compare aggregate rows in Local history. Variation is expected in browser timing.

Related tools

FAQ

What does this mouse polling rate test measure?

It summarizes accepted, nonzero PointerEvent timing exposed to this browser while a mouse-like pointer is moving. It prefers pointerrawupdate when available and falls back to pointermove; neither path is a hardware report rate.

Why can the result differ from a mouse specification?

A mouse specification describes device or USB behavior, while this page observes a browser event stream after operating-system and browser processing, scheduling, movement, and possible coalescing.

Does Pointer Lock make the result more accurate?

No. Regular Pointer Lock can reduce cursor clipping during fast movement. It does not expose raw USB reports or guarantee a hardware polling measurement.

Why are touch and pen events excluded?

The primary task is a mouse-like movement check. Touch and pen pointer types are counted as excluded; an empty or unknown pointer type is retained as mouse-like because browsers may omit the label.

Can a trackpad be tested here?

A trackpad can produce browser pointer events and may appear mouse-like, but the page cannot prove the physical device class or treat its result as mouse hardware evidence.

Are runs uploaded or saved as raw traces?

No. Normally stopped runs can save aggregate timing summaries in this browser. Raw movement samples, coordinates, timestamps, intervals, and coalesced arrays are not persisted or uploaded.