Mouse Test
Four pointer tests on one stage: your mouse's real DPI against the number on the box, its true polling rate in Hz, a switch that fires twice from one press, and your clicks per second.
Measure the real counts per inch and compare it to the box.
Locking the pointer means the cursor can never hit a screen edge and stop reporting movement half way through your drag. Press Escape to release it.
- Measured DPI
- —
- Spread
- —
- Takes
- 0
- vs advertised
- —
Press Space to start a take and Space again to end it. Space rather than a click, because pressing a mouse button nudges the sensor a few counts.
Enter the DPI your mouse is set to and this compares it with the measurement.
Record three takes and the spread tells you whether the number is trustworthy.
No takes yet. Three or more makes the spread meaningful.
Everything runs locally. This mode uses no camera, no microphone and no network requests of its own. Your calibration is saved only in this browser, and no measurement ever leaves the machine.
Turn pointer acceleration off first
With it on you are measuring how fast you swiped, not how far, and the DPI you get back is meaningless. Put the pointer-speed slider on the middle notch too: it is the only position where one sensor count moves the cursor one pixel.
Windows 11 and 10
- Settings, then Bluetooth and devices, then Mouse.
- Additional mouse settings.
- The Pointer Options tab.
- Untick Enhance pointer precision.
- Drag "Select a pointer speed" to the middle notch, 6 of 11.
macOS
- System Settings, then Accessibility, then Pointer Control.
- Turn off pointer acceleration if your build exposes it.
macOS bakes acceleration into the driver, so the reliable fix is Terminal: defaults write .GlobalPreferences com.apple.mouse.scaling -1, then log out and back in. Without that, treat the result as invalid.
Linux
- Set the libinput acceleration profile to flat.
- GNOME: Settings, then Mouse and Touchpad, then Mouse Acceleration, then Flat.
- Per device: xinput set-prop ID "libinput Accel Profile Enabled" 0 1
If the DPI mode reports raw input active you can skip all of this, because raw pointer input bypasses the OS pointer pipeline entirely. Chromium browsers grant it; Firefox and Safari do not, and there the result is labelled an estimate.
The seven standard polling rates
Real mice always report at one of these, and measured values sit a little below the true rate, which is why the result snaps to the nearest one.
| Rate | Report interval | What it means |
|---|---|---|
| 125 Hz | 8 ms | The fixed rate of most office mice, and of old USB hubs and some KVM switches. |
| 250 Hz | 4 ms | A step some mouse software offers between 125 and 500. |
| 500 Hz | 2 ms | A hair behind 1000 Hz, and worth dropping to only if old games stutter. |
| 1000 Hz | 1 ms | The gaming standard. Every gaming mouse handles it with no downside. |
| 2000 Hz | 0.5 ms | Above 1000 Hz the gains are fractions of a millisecond. |
| 4000 Hz | 0.25 ms | Mostly useful on a 240 Hz or faster monitor. |
| 8000 Hz | 0.125 ms | Often needs a special wireless dongle, and can cost CPU in some games. |
What counts as a good CPS
The bands the CPS mode scores against.
| CPS | Rating | What it is |
|---|---|---|
| 3-5 | Average | normal clicking |
| 6-8 | Good | solid for Minecraft PvP |
| 9-12 | Fast | jitter or butterfly clicking territory |
| 13+ | Elite | drag clicking or very practiced |
Technique matters more than raw speed. Jitter clicking, tensing your forearm, reaches 10 to 14 CPS. Butterfly clicking, alternating two fingers, reaches 15 to 25. Drag clicking can exceed 30, though many servers consider it unfair. Those techniques really do produce gaps under 70 ms, so do not run the double-click mode while using them: it will honestly flag them as chatter.
Reading the gap distribution
A gap is the time from releasing a button to pressing it again. Where your gaps land is the whole diagnosis.
- Under 20 ms. No finger releases and re-presses a switch this quickly. There is one deliberate exception: drag-clicking drags a fingertip across the shell so friction vibrates the switch, and that produces genuine sub-millisecond gaps on a perfectly healthy mouse. If you are clicking normally and this column has counts, the switch is firing on its own.
- 20 to 70 ms. Suspicious. Chatter reaches this band as it worsens, but so do drag-clicking and butterfly-clicking. Click normally and re-test before concluding anything.
- Over 100 ms. That is you. Deliberate fast clicking lives here, and so does every normal double click. For deliberate repeat clicking most people land between 120 and 250 ms, and the fastest sustained normal clicking sits around 60 to 80 ms.
- Shortest press under 12 ms. Release bounce, the drag-dropping variant of the same fault. A worn contact bounces on release too, so the button briefly reports as let go part-way through a drag and the file, window or text selection is dropped.
What is actually being measured
DPI is counts divided by inches, and nothing else
A mouse sensor is a tiny camera. It photographs the surface a few thousand times a second, works out how far the texture shifted between frames, and reports that shift as a whole number of counts. DPI, more correctly CPI or counts per inch, is how many counts the sensor emits per inch of physical travel. It is a property of the sensor and its firmware and has nothing to do with your monitor, your resolution or your game.
So the measurement is trivial in principle: move a known number of inches, add up the counts, divide. Everything hard about it lives in the two links of the chain between the sensor and this page.
Link one: the operating system rewrites the numbers
Counts do not reach the browser untouched. On Windows the pointer-speed slider is a straight multiplier and only the middle notch is 1:1. The notches below it shrink your movement, down to a thirty-second, and the ones above multiply it, up to 3.5 times. Get that wrong and your DPI reads exactly that factor off.
Enhance pointer precision is worse, because it is not a constant. It is a velocity curve: move slowly and a count is worth less than a pixel, flick and it is worth several. The counts you accumulate then depend on the speed of your swipe, so two careful drags over the same 4 inches will disagree by 10 to 20%. That is the classic cause of a wide spread across takes.
There is a way out. Chromium browsers can request pointer lock with unadjustedMovement: true, which hands the page the raw HID deltas straight from the device: no speed multiplier, no acceleration curve, no display scaling. When the panel reports raw input active, none of the OS settings matter.
Link two: the pixel-unit trap that makes most DPI tools wrong
In the fallback path the browser reports movement in CSS pixels, and a CSS pixel is not a device pixel. At 150% display scaling one CSS pixel is 1.5 device pixels, and it is device pixels the cursor actually moves in. A tool that treats reported movement as counts under-reports by exactly 1.5 times on that machine: you set a 1600 DPI mouse and it confidently says 1067. On a Retina Mac the same bug goes the other way.
This mode resolves the unit two ways. Before the pointer is locked it compares reported movement against the cursor’s travel in layout coordinates, which are unambiguously CSS pixels, and snaps the ratio to whichever of 1 or your display scale it matches. On macOS it knows the pointer moves in points rather than backing pixels and applies no scaling at all. The factor it applied is printed on screen rather than hidden, and Movement scale overrides it.
The honest limit: that unit sample can only be taken while the pointer is free, because a locked pointer stops moving layout coordinates altogether. Browser engines are known to report locked deltas in a different unit from unlocked ones, so on a scaled display the sample is the best available assumption rather than proof. Two things make it a non-issue in practice: raw pointer input sidesteps the question, and at 100% display scale there is no ambiguity at all.
Why the credit card goes on the screen, not the desk
Screen pixel density cancels out of the DPI equation. Counts divided by inches of desk travel is the whole calculation. What the card calibration buys is everything around the number: a ruler on this page that is genuinely true to size, your display’s real pixel density instead of the 96-per-inch fiction the web assumes, and the cursor-gain figure that says how far your hand has to move to cross the monitor. The card is also the best ruler in the room: every ISO/IEC 7810 ID-1 card is 85.60 mm wide to a tenth of a millimetre.
What chatter is, and why it appears overnight
Inside almost every mouse button is a tiny mechanical switch, an Omron D2FC or one of its clones, where a sprung copper leaf snaps against a fixed contact. That snap is not clean. The leaf bounces off the contact several times before it settles, opening and closing the circuit for a few hundred microseconds. Every switch does this, brand new, out of the box.
The firmware hides it with a debounce window: once it sees an edge it ignores any further change on that input for a fixed time, typically 8 to 20 ms. A healthy switch settles in well under a millisecond, so the debounce swallows the bounce whole and the computer sees one clean click.
Wear changes the timing, not the mechanism. Contacts oxidise, the leaf loses tension, the plating pits. A bounce that used to last 0.3 ms starts lasting 5 ms, then 15 ms. Nothing happens at all until the bounce outlasts the debounce window, and then the extra edge escapes and becomes a real second click. That is why chatter seems to appear from nowhere and then get worse fast: you are watching a threshold being crossed, not a slope.
Why coalesced events matter for polling rate
Browsers batch, or coalesce, mouse movement and deliver roughly one pointermove per display frame, so a naive tester can never read above your monitor’s refresh rate. This mode unpacks each batch with getCoalescedEvents() and, in Chromium, listens to pointerrawupdate, which fires off the frame clock. Both capability chips are printed above the arena so you know which regime produced your number.
What a bad result looks like, and what to do
DPI
- Takes disagree by 5 to 20%, faster drags reading higher. Acceleration is still on. Some gaming mouse drivers re-enable it and a few games reset it on exit.
- Every take is off by a clean 2, 1.5 or 0.5 times. That is a scale factor, not a bad sensor: the pointer-speed slider is off the middle notch, or Movement scale needs the override.
- The path-length warning keeps firing. Your drag is curving. The tool measures the straight line between where you started and stopped, so a banana-shaped swipe reads short. Slide the mouse along a ruler edge.
- Counts drop out mid-drag. Glass, gloss, plain white and very dark surfaces defeat optical sensors, and lifting the mouse even a millimetre silently loses counts. A cloth pad fixes both.
- Deviation over 10%. Real, and worth correcting. Raise or lower the in-game sensitivity by the same percentage, or pick a DPI step that measures closer.
The arithmetic is exact but your ruler is not. Over a 4 inch drag, being an eighth of an inch out at either end is a 3% error, larger than the deviation most sensors have. The spread printed with the result is the spread across your takes only; it cannot see how well you measured the desk.
Polling rate
- Browser ceiling. Without coalesced-event support, readings cap near the display refresh rate. Chrome and Edge are the most accurate.
- Movement too slow. If the mouse does not move at least one count per polling interval it skips reports. Fast circles, not tiny wiggles.
- System overhead. A busy main thread, battery-saver mode, virtual machines and remote desktop all drop or delay events.
- Wireless power saving. Many wireless mice lower their report rate on battery or when the link is congested.
- USB path. Old hubs and some KVM switches force 125 Hz. Plug straight into the PC, and use the high-speed dongle for 2000 Hz and faster wireless mice.
- A reading a bit under nominal, say 970 for a 1000 Hz mouse, is normal. That is exactly why the result snaps to the nearest standard bucket.
Double click
- Every button flags at once. Five switches did not fail on the same afternoon. Look at macro or remapper software with a double-click binding, an accessibility click-assist feature, a remote desktop or screen-share layer re-injecting input, a KVM switch, a failing USB cable or hub, or a wireless mouse on a low battery in a congested 2.4 GHz room. Try the mouse on another machine: the fault follows the hardware.
- One button flags and the rest are clean. The classic dying switch. Cheapest first: raise the debounce time in the mouse’s own software if it exposes one, which buys weeks or months at the cost of that much click latency; burnish the contact, which is fiddly and temporary; or replace the switch, a few pennies of parts and the only permanent fix. Hot-swappable mice make that a 30-second job. If it is under warranty, claim it.
- A gap printed as 0. Browsers deliberately blunt their clock: Chrome rounds timestamps to 0.1 ms, Firefox and Safari to 1 ms. Zero means under one millisecond, not exactly zero.
- The page navigates when you press button 4 or 5. The pad cancels the default action, but a few builds handle back and forward above the page anyway. That is the browser, not your mouse.
- A trackpad flagging doubles. Trackpads report as a mouse but most laptops have no mechanical click switch. Tap-to-click can still produce genuine doubles, and that is a driver sensitivity setting, not a failing part.
The verdict stays blank until one button has 20 timed gaps, because a single flag proves nothing. Healthy means zero flags; early signs means one lone flag or under 3% of gaps flagged; failing means two or more flags and 3% or higher.
How to run each mode
DPI
- Kill acceleration first, using the box above. If the panel says raw pointer input is active you can skip it, but the pointer-speed slider still has to be on the middle notch for the fallback mode.
- Mark a distance on your mousepad. Two strips of tape, two pen marks, a ruler laid alongside: anything you can start and stop against precisely. No ruler? A bank card is exactly 3.370 in or 85.60 mm wide, so use the card-width presets.
- Pick that distance. Longer drags are proportionally more accurate: an eighth of an inch of sloppiness is 3% over 4 in but only 1.2% over 10 in.
- Press Lock pointer. The cursor disappears, which is the point: nothing can clamp your movement at the edge of the screen any more.
- Put the mouse on the start mark and press Space. Space rather than a click, because pressing a mouse button nudges the sensor a few counts. Drag straight to the end mark in one smooth motion without lifting, then press Space again.
- Do it at least three times, then compare with the box. A spread under ±1% means you can trust the number. Under 3% deviation is normal manufacturing variance; over 10% is worth acting on, because it scales your sensitivity in every game you play.
Polling rate
- Move your mouse in fast circles inside the arena. A mouse only sends a report when it moves, so continuous fast movement is what exposes its full polling rate.
- The page counts every HID input event in a rolling one-second window, and that count is the live Hz. Peak is the best full window seen; average is events divided by active movement time.
- The peak is snapped to the nearest standard rate on a log scale, because real mice always use one of the seven and measured values sit a little below the true rate.
Double click
- Click 30 or more times with the button you suspect, at a normal, comfortable pace. Do not butterfly- or drag-click while testing: those techniques really can produce sub-70 ms gaps, and the tool will honestly flag them.
- Read the trace left to right. Each click is one dip. The upper bar is the gap since your last release, the lower one is how long you held the button. A healthy click is a wide upper segment of 200 ms or more, a 50 to 150 ms lower segment, then another wide upper segment. Chatter is a press, a hair-thin gap, then another press.
- Test the other four buttons, then repeat the whole thing while dragging: press inside the pad, move the mouse a few centimetres, release. Some worn switches only misbehave under sideways load, which is exactly why files get dropped mid-drag.
- If the verdict is failing, press Copy report before you contact support. The click count, flag count and shortest recorded gap are the reproducible evidence a warranty claim needs.
CPS
- Pick a run length of 1, 5 or 10 seconds.
- Click the pad. The clock starts on your first click, not on the Start button.
- The score is clicks divided by the run length, and a two-second cooldown follows each run because the clicks still in flight would otherwise start the next one.
What this page does not do
Nothing here asks for a camera, a microphone or any other device permission. The DPI mode asks the browser to lock the pointer and that is all. No measurement leaves your machine, no score is submitted anywhere, and the only thing written to your browser is the optional screen calibration.
FAQ
How do I find my mouse's real DPI?
Measure it. Pick a target distance, mark the start and the end of it on your mousepad, lock the pointer to the pad above, then drag the mouse in a straight line from one mark to the other while the page counts the sensor reports. DPI is simply counts divided by inches. Take three runs and compare them: numbers that repeat are numbers you can trust.
Why is my measured DPI different from the number on the box?
Sensor calibration varies. A few percent off is completely normal even on flagship sensors, and firmware DPI steps are often rounded to tidy numbers. Deviations above roughly 10 percent are worth knowing about, because your effective sensitivity in every game is scaled by exactly that amount: a mouse sold as 1600 DPI that really runs at 1800 makes every in-game sensitivity 12.5 percent faster than the number suggests.
Do I have to turn off mouse acceleration?
For the standard measurement, yes. Enhance pointer precision on Windows makes the pointer travel further when you move faster, so counts stop being proportional to distance and the answer depends on how quickly you swiped. If your browser grants raw pointer input the tool bypasses the OS pointer pipeline entirely and acceleration no longer matters. The panel tells you which mode you are in before you measure.
Why does the tool ask me to hold a card against the screen?
An ISO/IEC 7810 ID-1 card, meaning any bank card, ID card or driving licence, is exactly 85.60 mm wide, so it is a ruler almost everyone already owns. Matching the on-screen outline to it gives your display true pixels per inch, which makes the on-screen ruler true to size and lets the page work out how far your hand actually has to move to cross your monitor.
Does the screen calibration change the DPI reading?
No. DPI is sensor counts divided by how far the mouse moved on the desk, so only your physical measurement of that distance affects it: screen pixel density cancels out of that equation. The calibration powers the true-size ruler, your display real pixel density and the cursor-gain figure. It is useful, but it is not part of the DPI calculation, and a tool that claims otherwise is doing algebra that cancels.
How accurate is the DPI measurement?
The counting is exact; your ruler is not. Over a 4 inch drag, starting or stopping an eighth of an inch early is a 3 percent error, so use the longest distance you can and mark both ends properly. Three takes agreeing within about 1 percent is a good result. A wide spread means acceleration is still on, the drag curved, or the mouse lifted off the pad mid-swipe.
How do I check my mouse polling rate?
Move your mouse in fast, continuous circles inside the arena. The tool counts real HID events per second using coalesced pointer events, so it is not limited by your monitor refresh rate, and snaps the peak to the nearest standard rate: 125, 250, 500, 1000, 2000, 4000 or 8000 Hz. Give it 3 to 5 seconds of fast movement and read the Peak value. A mouse only reports while it is moving, so slow movement reads low. Chrome or Edge give the most accurate reading.
Does polling rate matter for gaming, and is 1000 Hz better than 500 Hz?
Yes, up to a point. Polling rate is how often your mouse reports position: 125 Hz is every 8 ms, 1000 Hz is every 1 ms. Going from 125 to 1000 Hz removes up to 7 ms of input delay and makes aim feel noticeably smoother, which is why 1000 Hz is the gaming standard. Against 500 Hz the difference is 1 ms versus 2 ms, so motion is a touch smoother and latency a hair lower; most people cannot reliably feel it, but virtually all gaming mice handle 1000 Hz with no downside, so there is rarely a reason not to use it. Only drop to 500 Hz if you hit stutters in old games or on weak CPUs. Above 1000 Hz the gains are fractions of a millisecond, mostly useful on 240 Hz and faster monitors, and very high rates can cost CPU time in some games.
How do I change my mouse polling rate?
Through your mouse software: Logitech G HUB, Razer Synapse, SteelSeries GG, Corsair iCUE, Glorious Core and similar apps all have a polling or report rate setting, usually 125, 250, 500 or 1000 Hz, with 2000 to 8000 Hz on supported mice, sometimes needing a special wireless dongle. Some mice also switch rates with an onboard button combo, often holding a DPI button while plugging in. Office mice without software are typically fixed at 125 Hz. Re-run this test afterwards to confirm the new rate.
Why does my 8000 Hz mouse read lower here?
Ultra-high rates stress the whole chain: the browser, OS scheduling and even the event timestamps. Chromium delivers coalesced events well past 1000 Hz, but under load some reports arrive late and land outside the measuring window. Treat 6000 to 8000 readings as a confirmed 8000 Hz mouse, and make sure 8K mode is actually enabled in your mouse software.
How do I know if my mouse is double-clicking on its own?
Click the pad 30 or more times at a normal pace with the button you suspect. Every press and release is timed to the millisecond, and any second press that lands within 70 ms of the previous release is flagged. A finger cannot press again that fast after letting go, so a flag during ordinary clicking means the switch fired twice on its own.
What causes a mouse to double click?
The metal contacts inside the click switch physically bounce apart for a fraction of a millisecond every time they close. Mouse firmware hides that with a debounce window, usually 8 to 20 ms. As the switch wears, the bounce lasts longer, and once it outlasts the debounce window the extra edge escapes as a second click. It is a mechanical fault inside the switch, not a Windows or driver problem.
Can I fix mouse chatter with software?
Only as a stopgap. Some mice expose a debounce or click-latency setting in their configuration software, and raising it to 12 or 20 ms hides a mildly worn switch at the cost of that much extra click latency. It buys weeks or months, it does not repair the contacts. The real fix is replacing the switch, or replacing the mouse.
What is a normal gap between two separate clicks?
For deliberate repeat clicking most people land between 120 and 250 ms from release to next press, and the fastest sustained normal clicking sits around 60 to 80 ms. Genuine switch chatter looks nothing like that: the second press almost always arrives less than 20 ms after the release, and often under 5 ms. That is why the sub-20 ms count is shown separately.
My mouse only double clicks when I drag something. Is that the same fault?
Yes, and it is usually the same switch. A worn contact often chatters on release rather than on press, so the button briefly reports as let go part-way through a drag and the file, window or text selection is dropped. Test it by pressing inside the pad, moving the mouse, then releasing: any press shorter than 12 ms is flagged as a runt press.
Is a recorded double-click rate enough for a warranty claim?
Usually, yes. Support teams want something reproducible, and a click count, a suspected double-fire count and the shortest recorded gap is exactly that. Use the copy button to grab a plain-text summary, add your mouse model, the purchase date and which button is affected, and send it with the claim.
Does the CPS mode submit my score anywhere?
No. Nothing in the Bench posts a score. The old CPS page had a weekly leaderboard and a daily challenge; this one counts your clicks, prints the number and forgets it. Nothing leaves your browser in any of the four modes.