ByteScope

Mouse Test

Five buttons, a chatter histogram, a notch-exact wheel counter and an honest polling-rate estimate — one bench for the mouse you're about to blame.

Your files never leave your browser — all processing is local.

1. Buttons

Press each button over the diagram below. A button lights up while it is held and keeps a green outline once it has been seen, so you can confirm all five one at a time.

ButtonPressesStatus
Thumb back0not seen
Left0not seen
Middle (wheel)0not seen
Right0not seen
Thumb forward0not seen

The page asks the browser not to let the thumb buttons trigger back and forward. Not every browser agrees, so if the test navigates away that is the browser's decision, not a broken button.

2. Double-click and chatter

Click the target at your normal pace — single clicks, not deliberate double-clicks. Around 30 presses is where a clean result starts to mean something.

No presses recorded yet.

A gap under 50 ms is faster than a person can release and press again, which is what a bouncing microswitch looks like — but one very fast deliberate double-click looks identical. Read it as evidence, not a diagnosis: a stray gap proves nothing, while a pattern that keeps growing over 30 or more ordinary clicks is worth acting on.

3. Scroll wheel

Scroll inside the box — the page will not scroll while the pointer is in there. Turn the wheel exactly ten clicks and check the total: skipped or doubled notches show up here.

Scroll here
Notches (Y)
-notch
Pixels (Y)
-px
Raw deltaY
-
deltaMode
-
Total turned
0.00notch
Net (Y)
0.00notch
Events
0events
Notches (X)
-notch

One physical click arrives as deltaY 100 in Chrome and deltaY 3 in Firefox — same notch, different units. The notch figures above are normalised so the two agree; the raw values sit next to them.

4. Polling rate

Sweep the pointer around inside the box for a few seconds. Below 30 intervals the estimate is labelled low confidence.

Move the pointer in here
Delivered rate
-Hz
Nearest standard
-Hz
Confidence
-
Median interval
-ms
Intervals
-
Discarded
-

This measures how fast the browser delivered pointer events, not how fast the mouse reports. Event coalescing, the display refresh rate and background load all sit in between, so treat the figure as a lower bound.

DPI cannot be measured here at all: movement reaches the page as CSS pixels, after the operating system has already applied pointer acceleration and display scaling.

About this tool

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 one notch arrives as deltaY: 100 in Chrome and deltaY: 3 in Firefox. 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 50ms — 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 50ms 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 60Hz 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.

Frequently asked questions

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 50ms 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 60Hz 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 50ms 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.