Tools/Mouse Tests

Mouse Acceleration Test

Watch live pointer speed, then compare a slow swipe and a fast swipe over the same distance. The page cannot read Enhance pointer precision or turn acceleration off.

Live cursor speed

Speed now
0px/s
Peak speed
0px/s

Averaged over 0.1 s. With the pointer free, speed is screen pixels per second (CSS pixels times the display scale). While the swipe pad holds pointer lock, the same number is movementX and movementY with no scale multiplier. The cm/s line divides by the DPI you typed, so treat it as an estimate.

Acceleration check

  1. Put two marks on your desk or mouse pad (tape or a ruler works), A and B, about 10 cm (4 in) apart.
  2. Put the mouse on mark A, press and hold the left button on the pad below.
  3. Slide to mark B and let go. Do two slow swipes (about 2 seconds each), then two fast flicks.
  4. If the faster half travels at least 12% further than the slower half, the verdict says acceleration is on. That is a comparison of the two speeds, not a read of the OS checkbox.
Cursor · next: slow swipe

Slow swipe: hold here, then glide 10 cm to mark B over about 2 seconds.

The cursor is hidden and locked while you hold the button, so the screen edge won't stop the count. Press Esc to cancel.

Fast vs slow (cursor)
--
0 cursor swipes · flat is 0%
Verdict

A verdict needs at least two cursor swipes, and either a fast pass or a fastest swipe at least 1.8 times the slowest. The first fast pass is the third swipe. Four or more gives a steadier half.

This is a hand test: stopping a few mm early shows up as noise. The verdict calls 12% or more acceleration on, and from 6% up to but not including 12% only possibly on. Cursor mode sums movementX and movementY after the OS pointer curve. It does not read or change Enhance pointer precision. Raw mode asks for unadjusted pointer lock, which only Chromium browsers (Chrome, Edge, Opera) offer, and only on some systems. Those counts skip the OS curve, so they should stay flat and show whether the swipes were the same length.

How to turn mouse acceleration off

Windows 11: Settings, Bluetooth & devices, Mouse, Additional mouse settings. On Windows 10: Settings, Devices, Mouse, Additional mouse options. Open the Pointer Options tab and untick Enhance pointer precision, then click Apply.

Leave the pointer speed slider on the middle notch (6 of 11, or 10 in the Windows 11 slider) so one mouse count moves the cursor one pixel. Change speed with your mouse DPI instead. Mouse software such as vendor control panels can add its own acceleration, so check there too.

This page does not change that setting. After you change it yourself, run the swipes again. The verdict should read No acceleration detected when the fast half is under 6% ahead and not 10% or more short.

Is your cursor speed lying to your hand?

What mouse acceleration is

Acceleration makes the cursor travel further when you move the mouse faster. Move 5 cm slowly and the pointer might cross a third of the screen; flick the same 5 cm and it crosses the whole thing. Windows calls it Enhance pointer precision, macOS builds it into its tracking curve, and Linux uses an adaptive libinput profile. Without it, the mapping is linear: the same hand distance always gives the same cursor distance.

How the two speeds are compared

Every swipe uses the ruler distance you typed. Travel is the straight-line sum of movementX and movementY while the pointer is locked, not the path drawn on the screen. The page sorts cursor swipes by ruler speed and divides the faster half's movement per centimetre by the slower half's. The fastest swipe has to be at least 1.8 times the slowest before that ratio is used. Otherwise, once a fast pass exists, the label is Need a faster swipe. When the spread is wide enough, 12% or more is Acceleration is on, from 6% up to but not including 12% is Possibly on (slight), 10% or more short is Fast swipes fell short, and the band between those cuts is No acceleration detected. None of those labels is a read of the OS checkbox. The chart plots each swipe's travel, relative to the slow half, against speed.

Why gamers turn it off

Aim is muscle memory: a 180 degree turn should always take the same arm movement. With acceleration, that distance depends on how fast you moved, so flicks overshoot or undershoot. Most shooters read raw input, which skips the OS curve inside the game, but the desktop and some older titles still use it. Turn it off, then set sensitivity with your DPI and the eDPI you like.

When acceleration helps

It is not a defect. On a large or multi-monitor desk, with a low DPI mouse, on a small mouse pad, or for anyone whose wrist or arm does not travel far, acceleration lets small, slow motions stay precise while a quick push crosses the screen. For office work it is often the comfortable choice.

Related tools

Check the real sensor resolution with the mouse DPI test, convert settings with the mouse DPI calculator and the eDPI calculator, and see whether the cursor creeps on its own with the mouse drift test.

FAQ

Frequently asked questions

What does this test compare?

It compares pointer movement over one ruler distance at two speeds. It does not read the Enhance pointer precision checkbox, or a macOS or Linux acceleration switch. While the left button is held, the pad locks the pointer and adds movementX and movementY. Travel is the straight-line length of that sum, not the path drawn on the screen. Gain is that travel divided by the distance in centimetres. Speed is the same distance divided by the time from the first movement to the last. If that time is above 0 but under 8 ms, speed uses 8 ms. A time of 0 is thrown out. With at least two cursor swipes, the page sorts them by that speed and divides the mean gain of the faster half by the mean gain of the slower half. Each half is half the swipe count, rounded down, so an odd middle swipe is left out. The halves follow measured speed, not the slow or fast label you were asked to do. A distance of 0, or any distance that is not a positive finite number, is not divided, so the page does not show Infinity.

How do I run the slow and fast passes?

Type the distance between two marks. The default is 10 cm, and inches are converted at 2.54 cm each. A blank, zero, negative, or non-numeric distance will not start a swipe, and the same check runs again when you release the button. Use a mouse. Press and hold the left button on the pad, move from mark A to mark B, then release. Cursor and raw each keep their own count. In every set of four, the first two are slow and the next two are fast. About 2 seconds is only a guide for the slow pass, not a timer in the page. A fast pass should still stop on mark B. Travel under 30 units is discarded. A single event over 1500 units on either axis is ignored. Press Esc to cancel.

Does this page turn acceleration off or read the OS setting?

No. The page cannot see Enhance pointer precision, and it does not write any operating system or vendor setting. The steps under How to turn mouse acceleration off are instructions for you to follow outside this page. After you change the setting yourself, run the slow and fast passes again. The only signal here is whether the faster half moved the pointer further than the slower half over the same distance.

What do the verdict labels mean?

The verdict uses cursor swipes only. It appears when there are at least two, and either one of them was a fast pass or the fastest speed is at least 1.8 times the slowest. If a fast pass exists but the fastest is still under 1.8 times the slowest, the label is Need a faster swipe and the ratio is not used. Two slow passes with that spread can show a ratio before any fast pass. The first fast pass is the third swipe of that mode. When the spread is wide enough, fast-half gain against slow-half gain decides the label: 12% or more is Acceleration is on, from 6% up to but not including 12% is Possibly on (slight), 10% or more short is Fast swipes fell short, and a fast half under 6% ahead and under 10% short is No acceleration detected.

How is cursor mode different from raw counts?

Cursor mode locks the pointer normally, so movementX and movementY include the OS pointer curve. Raw counts asks for unadjusted movement. The raw choice is offered only when pointer lock exists and the browser looks like Chromium: a userAgentData brand named Chromium, or, when that list is missing, Chrome in the user agent. If that request fails with NotSupportedError, the page drops raw mode, switches the control back to cursor, and shows a message. The verdict ignores raw swipes. Once raw swipes have a 1.8 times speed spread, a fast-versus-slow ratio more than 0.08 away from 1 (more than 8%) means the swipes were not the same length. Otherwise the message says the raw counts stayed flat. The counts-per-inch note is the slow-half mean, in counts per centimetre, times 2.54. It is hidden when the typed distance is not a positive finite number.

What if pointer lock is refused, or I leave the page?

Pressing the left mouse button on the pad calls requestPointerLock. A device with no fine pointer, or a browser without pointer lock, hides the swipe pad and says so. The live speed readout still runs. If the browser refuses the lock, the swipe returns to idle and a message says it was refused. A new lock is often blocked just after Esc. Releasing the button exits the lock. If the lock ends before you release, the swipe is cancelled and a message says so. That pass is not recorded. Leaving the page exits a lock this pad still holds. If that request's promise resolves afterward, the lock is exited then. A grant that arrives within a second of leaving is exited as well.

What does the live speed show, and what is saved?

Live speed is the movement over the last 0.1 s. With the pointer free, each step is the change in clientX and clientY multiplied by the display scale, in screen pixels per second. While the pad holds pointer lock, each step is movementX and movementY with no scale multiplier: CSS pixels in cursor mode, counts in raw mode. The optional cm/s line is that rate divided by the DPI you typed, times 2.54. It is hidden when DPI is blank or not above 0, and it assumes one count per pixel. Peak is the highest rate since Reset peak. Nothing is uploaded. Distance, unit, DPI and mode are saved in this browser under mouseAccelerationTest_settings. On a non-Chromium browser the saved mode is put back to cursor.