Tools/Mouse Tests

Mouse Drift Test

Let go of the mouse and see if the pointer keeps moving. The still test sums that pointer movement, then a straight-line pass shows how much the cursor path wobbles.

Pointer movement
--px
Sum of pointer movement during the timer
Time
0.0/ 5 s
Move events
0
Max jump
0px
Net offset
0px

Rest the pointer here, click start, then take your hand off the mouse and trackpad. Recording begins after a 3 second countdown. Leaving this box does not stop the test.

Trail of the cursor, magnified ×20. The grey dot is the start.

Ready when you are

Take your hand off the mouse, trackpad and desk. Every non-touch pointermove during the timer is counted. Zero events means the pointer stayed put.

Distance is a sum of CSS pixels from the operating system pointer, not a raw sensor count. With pointer lock off, movement into a screen edge is not included. Pointer lock switches the sum to movementX and movementY. Touch is ignored. A shaky hand, a trackpad palm or a second mouse is counted the same way.

Jitter and straight-line test

Click the START mark, then move slowly to the right along the dashed line without holding a button. The run ends at the END mark or when you click again. On touch or pen, drag along the line and lift to finish. The trace is cursor position in CSS pixels, not a sensor reading.

Avg deviation
0px
Std dev
0px
Jitter
0px
Flattest run
0px

Surface and setup checklist

Work down the list and rerun the still test after each change. 0 of 8 done.

Why a mouse moves by itself

How the test works

After a 3 second countdown the page logs every non-touch pointermove for 5 or 10 seconds. It does not know whether a hand is on the mouse. With pointer lock off, each step is the change in cursor position. With pointer lock on, each step is movementX and movementY, which keeps counting past the screen edge. Both are CSS pixels from the operating system, not a raw sensor count. It sums the path, the net offset from the start and the largest step, and counts how many 500 ms slices contained a move. Zero events means the pointer stayed put. Events in at least half of the slices, and at least 10 of them, are labeled pointer kept moving. Otherwise a step of 20 px or more is a sudden jump, and otherwise a path of 10 px or less is minor movement. Anything else is some pointer movement. A shaky hand or a trackpad palm counts the same way.

Common causes

The usual culprit is a dirty sensor: a hair or speck of dust in the lens moves as the light flickers and the sensor reads it as motion. Glass, glossy and mirrored desks confuse optical sensors too. A high lift-off distance makes the mouse track a surface it is barely touching. Other causes are a second mouse, pen tablet or laptop touchpad sending small inputs, wireless interference from a far-away receiver or a USB 3 port next to it, a dying battery, and finally a failing sensor.

Fixes that usually work

Clean the sensor window with a dry cotton swab, never a wet one. Put the mouse on a cloth or hard matte mousepad. Unplug other pointing devices and disable the touchpad, then test again to see which device was moving. Update the mouse firmware from the maker's software and lower the lift-off distance if it offers that. If the pointer still moves on a new pad and on another computer, the sensor itself may be faulty, and a mouse still under warranty should be replaced.

Drift is not acceleration

This page cannot see your hand or the sensor. It sums pointer movement, so a touch and a mouse that moves the cursor by itself look the same. Acceleration changes how far the cursor travels depending on how fast you move, so a quick flick goes further than a slow push over the same distance. Acceleration comes from "Enhance pointer precision" in Windows or the macOS tracking curve and is a setting, not a fault. If the cursor only feels inconsistent while you move, check acceleration and your real DPI before blaming the sensor.

Related tools

Check every button with the mouse tester, see whether the advertised DPI is real with the mouse DPI test, test held clicks with the mouse drag test and measure the report rate with the mouse polling rate test.

FAQ

Frequently asked questions

What does the still test count?

After a 3 second countdown it logs every non-touch pointermove for 5 or 10 seconds. A step of 0 by 0 is skipped. With pointer lock off, each step is the change in cursor position. With pointer lock on, each step is movementX and movementY, which still counts past the screen edge. Both are CSS pixels from the operating system, not a raw sensor count. The big number is the sum of those steps. Net offset is the straight-line distance from the start, and the largest single step is shown beside it.

Why does the mouse have to stay still?

The page cannot tell your hand from a sensor. A shaky hand, a palm on a trackpad, a bumped desk or a second mouse all create pointermove events, and every one of them is added. Let go of the mouse and keep your hands off the desk and trackpad. The dashed box is only where you start. Leaving it does not stop the timer, and movement anywhere in the window still counts.

Is lift-off distance the same as drift?

No. This page does not measure height and it has no lift-off number. The still test only sums pointer movement during the timer. A high lift-off distance can make a hovering mouse keep moving the pointer, and that movement is counted like any other. Lowering lift-off is a setting in the mouse software, not a result this page calculates.

What do the still-test labels mean?

Zero pointer events is labeled no pointer movement. If events fall in at least half of the 500 ms slices and there are at least 10 events, it is labeled pointer kept moving. Otherwise a largest step of 20 px or more is labeled a sudden jump. Otherwise a total path of 10 px or less is labeled minor movement. Anything else is labeled some pointer movement. Those labels describe the pointer log. They mean a sensor is drifting only when nothing else was moving a pointing device.

What does the straight-line test measure?

It records cursor positions in CSS pixels while you move from the start mark to the end mark. It needs at least 20 points and 120 px of horizontal travel, or it shows no score. Average deviation is the distance from the dashed guide. Standard deviation is the spread around a best-fit line, so a slight tilt is not treated as wobble. Jitter subtracts a 9-point moving average and keeps the point-to-point shake. If the path is at least 300 px and the longest stretch with vertical change under 0.01 px is at least 85% of the span, the label is possible angle snapping. Otherwise jitter under 0.35 px is smooth, under 1 px is normal, and 1 px or more is jittery. A second click ends a mouse run. On touch or pen, lifting ends it.

Do the results leave this browser?

No. The path, the verdict and the line trace stay on the page until you reset or leave. Nothing is uploaded. Duration, the pointer-lock checkbox and trail zoom are saved in localStorage on this device (key mouseDriftTest_settings) so the next visit can reuse them. Checklist ticks and the line-test zoom are not saved.