What a mouse tester tells you
It counts what your mouse sends when you press, hold and scroll, and says whether that matches what your hand did. A healthy switch sends one press per press; a worn one sometimes sends two.
press 0 ms → release 6 ms → press 9 ms → one finger, two clicks: chatter, caught at 9 ms press to press
The capture area is what makes the test possible. Inside it the side buttons cannot send the page back, the right button opens no menu and the wheel scrolls nothing, so you can press everything as often as you like and only the counters move.
The capture area
Browsers act on mouse buttons before a page sees most of them: Back and Forward navigate on release, the middle button starts autoscroll, the right button opens a menu and the wheel scrolls. Inside the area each of those is cancelled, and a press that started there is cancelled wherever you let go — so a Back press dragged off the edge still does not leave the page.
What it cannot block is anything the browser never hands to a page. Some mouse software remaps side buttons to keystrokes before the browser sees them, and some browsers keep a button for themselves. A button that never lights up is one of those, not a broken switch — test it again with the vendor software closed.
Three ways a mouse fails
Other testers count double clicks. This one separates the three faults a browser can actually see, because each one has a different cause and a different fix.
| Fault | What the browser sees | What you notice | How it is caught |
|---|---|---|---|
| Chatter | Two presses of one button within milliseconds | Single clicks that open things, double clicks you did not make | Press to press inside the fault window, or a release-to-press gap under 12 ms |
| Drop | A held button released for a few milliseconds, then pressed again | A drag that lets go halfway, a selection that ends early | A hold of at least 200 ms broken for less than the fault window |
| Jump-back | One wheel notch the wrong way inside a steady scroll | A page that jerks back while you scroll down | A wrong-way notch with a same-way notch within 150 ms on each side |
Chatter and drops look alike on the wire — a release followed almost at once by a press — and only the hold before them tells them apart. Nobody holds a button for a fifth of a second and clicks it again inside fifty milliseconds, so a long hold followed by a short gap is a drop. A short gap after a short press is chatter.
Measuring the polling rate honestly
A browser delivers pointer movement once per screen refresh, so a tester that counts events measures your display — 60, 120, 144 — whatever the mouse is doing. Every report the mouse sent in between is still there, with its own timestamp, in getCoalescedEvents(). This tester reads those, so a 1000 Hz mouse reads as 1000 Hz on a 60 Hz screen.
The rate shown is from the median interval, not the average, so the moment your hand turns round does not drag it down. Stability is how much the intervals vary: a wired mouse sits within a few percent, a wireless one in power-saving mode wanders, and a large figure on a wired mouse usually means a busy USB hub or a driver that batches reports.
Move the mouse in quick, steady circles for a couple of seconds. A browser without coalesced events falls back to one sample per frame, and then the reading is your refresh rate, not the mouse’s.
Every setting, and when to change it
There is one setting. Everything else is a fixed threshold, listed under the table, because a diagnosis whose rules move is not evidence.
| Control | What it does | Reach for it when |
|---|---|---|
| Fault window | Sets how close, press to press, two presses of one button must be to count as chatter. 20 to 120 ms, 50 by default. | Raise it to catch a borderline switch; lower it if you click very fast on purpose and the tester flags you. |
| Hold test | Passes once any button has been held for 3 s without a break, and fails on any drop. | Drags fall out of your hand, or a selection stops short. |
| Report | Downloads a plain-text summary: the verdict for every control, the polling rate, and every fault with its time and measurement. | You are claiming a warranty, returning a mouse, or selling one. |
| Reset | Clears every count, the log and the polling reading. | You changed the fault window, or want to test a second mouse. |
?window= | Opens the tester with that fault window set, in 5 ms steps. | A support page wants every customer tested at the same threshold. |
The fixed thresholds: a release-to-press gap under 12 ms is chatter whatever the window, because no hand releases and presses that fast. A hold breaks only after 200 ms. A wheel jump-back needs same-way notches within 150 ms on both sides. A button is called healthy after 20 clean presses and the wheel after 30 clean notches; one fault makes it suspect, and three faults or a fault rate of 5% make it faulty.
Fifty milliseconds is twenty clicks a second from one finger, which nobody sustains — and it is the figure the vendor testers use, so a reading here means the same thing as a reading there.
A report you can send
“It double clicks sometimes” is a claim. “Eleven presses of the left button under 50 ms, the shortest 4 ms, over two minutes” is evidence. The report says exactly that, with the browser it was measured in and the threshold it was measured at.
It is plain text, because it is the one format every returns form accepts and every mail client shows inline. Times are counted from the first event, and the date is written in UTC, so whoever reads it sees the same thing you did.
On a phone or tablet
A phone has no mouse, so there is nothing for the tester to measure, and a tap is deliberately not counted as a click. When no mouse is detected a notice says so above the test area. Plug a mouse in by USB-OTG or pair one over Bluetooth — Android and iPadOS both take one — and the area works as it does on a desktop.
Two limits are the platform’s, not the tester’s. Android may treat the Back side button as the system Back gesture, which no page can cancel, and Safari on iPad may not pass side buttons to pages at all.
When to reach for it
Before a warranty claim, to turn a suspicion into numbers. Before buying or selling a used mouse, to check the switches in a minute. After cleaning or replacing a switch, to see whether the fix held.
And when a game feels off: the polling reading tells you whether the mouse is running at the rate you set in its software, and the stability figure whether something between it and the computer is getting in the way.
