# Mouse Test

> Check all five mouse buttons, spot double-click chatter on a histogram, count scroll wheel notches and estimate polling rate in Hz — in the browser, free.

- URL: https://bytescope.dev/en/mouse-test/
- Locale: en · Also: [ja](https://bytescope.dev/ja/mouse-test.md) · [zh-Hant](https://bytescope.dev/zh-Hant/mouse-test.md)
- Runs: Everything runs locally in your browser — nothing is uploaded.
- Requires: Any modern browser (Chrome, Edge, Firefox, Safari), desktop and mobile.
- Updated: 2026-09-08

## What it does

Plug in the mouse you suspect and this page becomes a four-instrument bench. The button test lights up an on-screen mouse diagram as you press left, middle, right and the two thumb buttons, keeping a seen mark and a press count for each, so "does button 4 work at all" takes five seconds to settle — the page suppresses the context menu and does its best to stop the thumb buttons triggering back and forward, though not every browser allows it. The double-click test times every press and release on a target and plots the gaps as a histogram. The wheel test logs direction, notches and pixels for each scroll and keeps a running notch total, so you can turn the wheel exactly ten clicks and check none were skipped or doubled — it also normalises the raw values, because `deltaY` is not a notch count — Chrome sends 100 per notch on Windows and 120 on Linux, both scaled by page zoom, while Firefox reports 3 lines — so the page counts notches from the legacy `wheelDelta`, a fixed ±120 per click. Finally, sweep the pointer across a target and the page estimates its report rate in `Hz`, naming the nearest standard rate from 125 up to 8000 and how confident it is. You need a real mouse: on a trackpad, only the scrolling and movement instruments give meaningful results.

### Reading the chatter histogram

A worn microswitch bounces: the contacts flutter as they open, and the mouse reports one physical press as two. On the histogram that shows up as release-to-press gaps under about 50`ms` — physically too fast for a human to have let go and pressed again. Treat it as evidence, not a diagnosis: in a single sample, a genuinely fast double-click looks identical. So click the target a few dozen times at an ordinary pace. A healthy switch leaves the region below 50`ms` empty; a chattering one keeps filling it in. Even a clear pattern only tells you the switch is bouncing — it is strong grounds for opening the mouse or filing a warranty claim, not proof the switch has failed.

### What a browser can and cannot measure

The polling-rate figure measures how fast the browser delivered pointer events, not the mouse's true report rate. Browsers coalesce pointer events down to the display refresh; this page calls `getCoalescedEvents()` to recover the merged reports, which helps a great deal but is still not reading the USB bus. Treat the number as a lower bound and a sanity check — a machine busy in the background or a 60`Hz` display will drag it down. And DPI is off the menu entirely: the browser sees movement in CSS pixels after the operating system has already applied pointer acceleration and scaling, so there is no way back to counts per inch. Any site claiming to measure mouse DPI in a browser is inferring it from a value you typed in — and this page refuses to pretend otherwise.

## Limits

Does not measure true hardware polling rate or fix drivers; it reports the events and rates the browser sees.

## FAQ

### My mouse sometimes double-clicks on its own — how do I confirm it's chatter?

Use the double-click test and press the target a few dozen times at your normal pace — single clicks, not deliberate double-clicks. Then read the histogram: release-to-press gaps under about 50`ms` are faster than a human can physically release and press again, so a cluster down there from single clicks means the switch is reporting one press as two. One or two stray fast gaps prove nothing; a pattern that keeps growing across a run of presses is real evidence — enough to justify opening the mouse or claiming warranty, though it is still evidence, not a lab diagnosis.

### Why does the polling rate read around 60 Hz when my mouse is rated 1000 Hz?

Because browsers hand pointer events to a page at the display's refresh rate, folding the mouse's faster reports into them. This page calls `getCoalescedEvents()` to unpack those folded reports, which is what makes readings above the refresh rate possible at all — but if the figure still sits near 60, look at the machine first: a 60`Hz` display or a system busy in the background will cap it. The number is a lower bound on what the mouse delivered, not a reading from the USB bus.

### Can I run this on a laptop trackpad?

Only partly. Two-finger scrolling registers in the wheel test, and pointer movement is tracked — but the button diagram and the chatter test are built around a physical mouse with microswitches, and the numbers a trackpad produces there don't mean anything. If there's a specific mouse you're worried about, plug that one in and test it directly.

### Why doesn't the page show my mouse's DPI?

Because a browser cannot measure it, and this page won't fake it. Movement reaches the page as CSS pixels after the operating system has applied pointer acceleration and display scaling — the original counts per inch are gone by the time any web page sees them. Sites that display a mouse DPI figure are inferring it from a value you typed in: that's an estimate built on your own input, not a measurement. For your real DPI, check the manufacturer's software or the spec sheet.

### I double-click fast — will the test flag my clicks as chatter?

Not if you use it as intended. A deliberate fast double-click and a chattering switch produce the same gap in a single sample — which is exactly why a single sample means nothing here. The test expects a run of ordinary single clicks: press the target repeatedly at a relaxed pace, and any release gaps under 50`ms` that still appear were not your finger. If you're worried your speed pollutes the data, click slower on purpose — chatter doesn't care how slowly you click; the bounce rides along on every press.

## Related tools

- [Keyboard Tester](https://bytescope.dev/en/keyboard-test.md) — Test every key on a visual keyboard, with N-key rollover and key chatter detection.
- [Gamepad Tester](https://bytescope.dev/en/gamepad-test.md) — Test controller buttons, sticks and triggers, measure stick drift and try vibration.
