Mouse / 07

DPI.

Browsers cannot read raw sensor counts. The closest honest method is to compare the cursor's on-screen travel to the physical distance you actually moved the mouse — corrected for device pixel scaling. Follow the steps below.

Notes

Method: we sum movementX between mousedown and mouseup, multiply by window.devicePixelRatio to convert CSS pixels back to device pixels, then divide by the physical inches you specify. Required: turn OFF 'Enhance pointer precision' in Windows mouse settings, set OS sensitivity to the 6th notch (the only 1:1 setting), and run multiple trials — we report the median.

Step 1
Disable Enhance pointer precision in Windows Mouse settings.
Step 2
Set Windows pointer speed to the 6th notch (the only 1:1 step).
Step 3
Hold left-click. Drag the mouse exactly the distance below using a real ruler. Release.
Hold left-click and drag right by the target distance
counts captured · 0 · screen movement 0 CSS px
Trials no samples yet
  1. no trials recorded
Target distance
6 inches works well. Longer distances reduce error.
devicePixelRatio
—
detecting…
Median DPI
—
run 3+ trials for a stable reading
Frequently asked

Can a website really measure mouse DPI?

Not directly. Browsers cannot read sensor counts from the mouse; they only receive cursor positions after the OS has already applied scaling, pointer acceleration, and DPI conversion. The honest method this tool uses is indirect: you move the mouse a known physical distance against a ruler, the page measures how many CSS pixels the cursor travelled, corrects for devicePixelRatio, and divides. With a steady hand and a 6-inch slide the result lands within 5 percent of the sensor's true CPI.

Why do I get a different DPI than what is shown in my mouse software?

Two reasons. First, Windows Enhance Pointer Precision applies a non-linear acceleration curve that inflates measured DPI on fast moves and deflates it on slow ones — disable it at Settings → Mouse → Additional mouse options → Pointer Options. Second, the Windows pointer speed slider scales sensor output by a multiplier from 1/32x to 3.5x at the 6th notch (the default). For a clean reading set the slider to the 6th notch and turn off Enhance Pointer Precision. /mouse/acceleration verifies the curve.

What is the difference between DPI and CPI?

Technically CPI (counts per inch) is the correct term for what a mouse sensor measures and DPI (dots per inch) refers to print resolution, but every gaming vendor uses DPI to mean CPI and the two have become synonymous. This tool reports CPI but labels it DPI to match user expectation. If you see a spec like 25,600 DPI, that is the same as 25,600 CPI — the number of distinct positions the sensor can resolve per inch of movement.

What DPI should I use?

There is no universal answer; the relevant number is eDPI, which is DPI multiplied by in-game sensitivity. Valorant pros average around 280 eDPI, CS2 pros around 800, Apex around 1600. For desktop work, 800 to 1600 DPI matches most monitors comfortably. Going above 3200 rarely helps because Windows still snaps cursor positions to pixels — extra resolution is wasted unless you also raise the polling rate and lower in-game sensitivity. See /mouse/accuracy to test how your current DPI feels in an aim trainer.

Why does the cursor jump pixels at low DPI?

Below roughly 400 DPI a small physical movement produces less than one full pixel of cursor travel, so the OS rounds and the cursor appears to skip. On 4K monitors the threshold is higher because each CSS pixel maps to multiple device pixels. Raise DPI until cursor motion is smooth at the speed you actually move, then leave in-game sensitivity to taste. Sub-pixel rendering of the cursor is a Windows 11 feature flag and is not enabled by default.

Does monitor scaling affect the DPI reading?

Yes, and the tool corrects for it. The reading uses window.devicePixelRatio so a 4K display at 150 percent scaling still produces accurate physical pixel measurements. If you change Windows display scale mid-test, refresh the page — devicePixelRatio is sampled on load. For laptops with a 1080p secondary monitor, drag the tab to the screen you actually want to measure on; the reading is specific to whichever display the page is rendered on.