Mouse DPI Estimator
{{ summaryTitle }}
{{ summaryLine }}
{{ exportStatus }}
{{ padLabel }}
{{ exportStatus }}
| Run | Estimated DPI | Disposition | Input source | Distance (in) | Net X (browser units) | Absolute X (browser units) | Absolute Y (browser units) | Events | Duration (ms) | Configured DPI | Reversal (browser units) | Vertical drift (%) | Copy |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ row.run }} | {{ row.included ? format(row.dpi,2) : 'Excluded' }} | {{ row.reason }} | {{ row.input_mode === 'synthetic_example' ? 'Synthetic example' : 'Raw request accepted' }} | {{ format(row.distance_inches,4) }} | {{ row.net_x }} | {{ row.absolute_x }} | {{ row.absolute_y }} | {{ row.events }} | {{ format(row.duration_ms,0) }} | {{ row.configured_dpi || 'Not supplied' }} | {{ row.reversal }} | {{ format(row.drift_percent,3) }} |
{{ exportStatus }}
No included sweep to plot.
Chart unavailable.
{{ sensitivityContext }}
Similar tools
- Mouse Test Check your mouse for unwanted clicks and scroll problems in your browser, then save a factual report for repair or warranty discussions.
- CPS Test Measure clicks per second in a timed browser trial, compare pace and consistency, and filter near-duplicate presses when checking switch bounce.
- Reaction Time Test Test your visual reaction time with simple or choice responses and compare repeated sessions with clear reasons for excluded attempts.
- Aim Trainer Practise pointer aim with repeatable target sequences and compare your speed and hit accuracy across sessions saved in your browser.
A mouse can feel faster after a software setting changes even when its DPI stays the same. The mouse reports movement across the desk, then the operating system or application translates that movement into cursor travel or camera rotation. A measurement of movement per inch helps compare mouse settings only when those separate quantities are understood.
- Mouse DPI and CPI
- DPI means dots per inch. Mouse makers also use CPI, or counts per inch, to describe how many movement counts a mouse reports for an inch of physical travel. A higher setting produces more counts for the same hand movement.
- Cursor speed and application sensitivity
- These settings control how reported movement becomes visible motion. Changing them can change the feel of the pointer or a game's camera without changing the mouse's configured DPI.
- Pointer acceleration
- Acceleration changes the response according to movement speed. Two sweeps over the same desk distance can therefore produce different cursor travel when one is faster.
- Screen resolution and display scaling
- Resolution describes the display's pixel dimensions, while scaling changes how content is presented. Neither supplies the physical distance traveled by the mouse.
A useful distance measurement follows the mouse itself with a real ruler. The same point on its body should move between two marks while the mouse keeps the same orientation. Rotating, lifting, or moving back toward the starting point breaks the simple relationship between a straight desk distance and reported horizontal movement. Measuring how far the cursor crosses a monitor introduces software and display behavior into that relationship.
Browsers receive movement through the computer's input system. Unaccelerated input requests ask for movement without operating-system acceleration, but acceptance of that request does not independently establish that each reported unit is one hardware sensor count. Browser movement can therefore be expressed in movement units per inch. It can help compare repeated observations with a known mouse setting, while the device's software remains the place to check its configured DPI.
Repeatability depends on keeping the mouse, surface, connection, browser, and settings consistent. A longer comfortable sweep reduces the relative effect of a small error at either ruler mark, provided it can be completed without lifting or turning. Closely matching repeats show consistency under those conditions. They can still share the same incorrect ruler distance or scaling error, so agreement alone does not establish physical accuracy.
How to Use This Tool:
Use a physical mouse and a real ruler on a surface with room for one uninterrupted horizontal sweep. Touch and pen input cannot supply this measurement.
- Mark the start and finish of the sweep. Keep the mouse facing forward and choose one point on its body to align with both marks.
- Enter the marked length in Physical distance and select cm or in. The default is 10 cm, and the accepted range is 0.1 to 100 cm inclusive, or its inch equivalent. Changing units converts a valid distance. If a distance warning prevents starting, replace the value with the actual measured length inside that range.
- Open Advanced if you want a comparison with a known setting, then enter it in Configured DPI comparison. Leave it blank for no comparison. Zero also disables comparison; a supplied positive value must be from 1 to 100,000. This value comes from you and is never detected from the mouse.
- Place the mouse at the starting mark and activate Start sweep without shifting it. Using Tab and Enter can help keep the mouse still. Capture begins only after the browser confirms unaccelerated pointer lock, which hides the cursor and directs movement to the sweep area. The distance and comparison setting are fixed for that run, and the setup inputs are disabled while capture is pending or active.
If unaccelerated capture is unavailable or denied, allow capture if prompted and try again from the active page. A request that remains unanswered expires after five seconds. If the browser cannot acknowledge unaccelerated input, try another browser that supports it. The tool does not fall back to accelerated movement.
- Move once to the finishing mark without lifting, rotating, or backtracking. Stop the physical motion, then click or press Enter to save the sweep. The Stop control also completes it. The moving dot indicates activity and is not a calibrated ruler.
Escape cancels the active sweep. Losing pointer lock, leaving the page's focus, hiding the tab, or reaching the 60-second capture limit also discards its partial movement. Earlier saved runs remain available.
- Repeat until you have at least three included sweeps under the same mouse settings, returning to the starting mark only after each capture ends. Check the Sweep ledger for exclusion reasons and compare the summary's range and spread. A session holds up to 20 saved runs, including excluded ones; retain any evidence you need before using Clear runs to begin another set.
Interpreting Results:
The Median browser DPI estimate summarizes included sweeps in browser movement units per inch. Raw request accepted records the browser's acknowledgement of capture. Hardware sensor counts and driver or firmware scaling remain unverified. One included sweep is enough to produce a number, but its 0% spread supplies no evidence about repeatability.
- The range shows the lowest and highest included estimates. Spread expresses the width of that range relative to the median. If repeated sweeps disagree, recheck ruler placement, mouse orientation, and unchanged settings before interpreting the difference.
- The Sweep ledger retains completed sweeps with their movement evidence and inclusion or exclusion reasons. Excluded rows do not affect the summary. CSV exports retain unrounded values and can include an arithmetic density for excluded sweeps, so keep the disposition and reasons with the numbers.
- Vs your setting compares the median with the comparison value currently entered. Each ledger row separately keeps the value recorded when its sweep began. A matching result is not a pass or a device-health verdict. After changing the mouse's actual DPI, begin a new set so the median does not mix different settings.
- Distance sensitivity uses the latest included sweep, holding its movement fixed while varying its assumed physical distance. It shows how a ruler-distance error would affect that sweep's density. The plotted values are hypothetical recalculations, not additional measurements or confidence bounds.
A saved sweep keeps its original distance. Editing a valid Physical distance value prepares the next sweep and does not revise earlier estimates or their sensitivity curve. If an earlier distance was wrong, record a replacement sweep with the corrected length.
Technical Details:
A horizontal sweep produces small signed movements along the browser's horizontal coordinate axis. Adding those movements gives net displacement. Adding their magnitudes gives total horizontal travel, which becomes larger than net displacement when the mouse backtracks. Vertical travel provides a separate check on how closely the sweep follows the intended direction.
Formula Core
Estimated density is the magnitude of net horizontal movement divided by the recorded physical distance in inches. Let E be that density in browser units/in, N the magnitude of net horizontal movement in browser units, and L the distance in inches. For a distance entered in centimeters, dcm is its numerical value.
One international inch is exactly 2.54 cm. The conversion changes the unit, not the physical length. N uses the absolute value of the signed horizontal sum, so a consistently leftward sweep and an equivalent rightward sweep give the same density. Vertical travel is not added to the numerator, and display resolution, browser zoom, or a guessed operating-system multiplier does not enter the calculation.
Reversal and vertical drift
Let A be the sum of the magnitudes of all horizontal movements and Y the sum of the magnitudes of all vertical movements, both in browser units. R measures horizontal travel against the net direction. V expresses total vertical travel as a percentage of total horizontal travel, so upward and downward motion cannot cancel each other out.
The inclusion rules below select completed sweeps suitable for this horizontal calculation. The 5% vertical-drift limit is a rule chosen for this tool, not a mouse-industry standard or a test of sensor quality.
| Check | Required condition | Otherwise |
|---|---|---|
| Capture | A completed sweep with acknowledged unaccelerated input, or an explicitly labeled synthetic example. | Unverified or incomplete capture does not contribute an estimate. |
| Usable movement | At least two nonzero movement reports and positive net horizontal magnitude. | No usable horizontal sweep. |
| Direction | No detected reversal. | Direction reversal excludes the sweep. |
| Vertical drift | 5% or less, including exactly 5%. | Drift above 5% excludes the sweep. |
Numerical comparisons allow 10−9 browser units of reversal and 10−9 percentage points above the drift boundary to absorb arithmetic rounding. These tiny allowances are not physical measurement tolerances. Zero horizontal movement cannot establish DPI, even if the vertical-drift calculation is zero.
Median, range, spread, and comparison
Each included sweep first receives its own density. The median M is the middle value after sorting those densities, or the average of the two middle values when their count is even. Every included sweep has equal weight; movement and distance are not pooled into one longer sweep. Emin and Emax are the smallest and largest included densities.
Spread S is the range width as a percentage of the median. Comparison C is the percentage difference from the positive configured value P supplied by the reader.
A positive comparison places the median above the supplied setting; a negative comparison places it below. Blank or zero comparison input leaves that comparison inactive. Excluded sweeps contribute neither to the median nor to the range. With no included sweeps, there is no usable summary estimate or sensitivity curve.
Fixed movement with a different assumed distance
For distance sensitivity, Nlast and Llast come from the latest included sweep. The distance factor f takes the values 0.90, 0.95, 1.00, 1.05, and 1.10. Each scenario divides the same movement by that fraction of the recorded distance.
Assuming a shorter distance raises the calculated density; assuming a longer distance lowers it. Because distance is in the denominator, a symmetric change in distance produces an asymmetric change in density. The middle scenario reproduces the latest included sweep, which may differ from the session median.
Precision and collection limits
Calculations retain unrounded values. The summary estimate and range endpoints display whole numbers, while the ledger shows up to two decimal places for included density, four for distance in inches, and three for vertical drift. Spread and comparison display up to two decimal places. These display choices do not establish physical precision.
Duration and movement-report count are recorded for inspection but are not factors in the density formula. Collection safeguards discard a partial sweep at 100,000 nonzero movement reports or if either absolute axis total exceeds 1,000,000,000 browser units. Neither the duration nor report count certifies mouse latency or polling rate.
Privacy Notes:
Captured movement and saved runs remain in the current tab's memory; the measurement does not upload those observations. Reloading or closing the page loses them. Copying or exporting creates a record you can retain outside the session.
The page address can carry the setup distance, its unit, and the optional configured-DPI comparison. It does not carry recorded sweeps. Sharing that address shares settings rather than measurement evidence.
Worked Examples:
A synthetic set with one excluded sweep
Explore synthetic example loads four invented sweeps recorded at 2 in, equivalent to 5.08 cm, without changing the current setup fields. Three have horizontal movement of 1,600, 1,616, and 1,584 browser units, giving densities of 800, 808, and 792 browser units/in. The fourth contains 10 browser units of reversal and about 9.877% vertical drift, so it is excluded. The three included rows give a median of 800, a range of 792 to 808, and a spread of 2%. The results and exports are labeled synthetic and never describe the reader's mouse. A successfully started real capture replaces the synthetic set, and examples cannot overwrite existing real runs.
Comparing the synthetic median with a supplied setting
With the synthetic set still displayed, entering 1,000 in Configured DPI comparison makes Vs your setting show −20%. Entering 800 makes it show 0%. The median remains 800 in both cases because the field changes the comparison, not the recorded movement or the mouse itself. A real comparison needs new physical observations with the actual mouse setting kept consistent.
Reconsidering a two-inch ruler distance
The latest included synthetic sweep is the third row, with 1,584 browser units over 2 in. Its density is 792, so the center of Distance sensitivity is 792 even though the summary median is 800. Holding those 1,584 units fixed gives the following hypothetical distances and densities, rounded to two decimal places where needed. This comparison illustrates why ruler placement matters; it does not establish a likely error range.
| Recorded distance fraction | Hypothetical distance (in) | Density (browser units/in) |
|---|---|---|
| 90% | 1.8 | 880 |
| 95% | 1.9 | 833.68 |
| 100% | 2 | 792 |
| 105% | 2.1 | 754.29 |
| 110% | 2.2 | 720 |
References:
- Pointer Lock 2.0, W3C, editor's draft.
- SI Units – Length, National Institute of Standards and Technology, September 19, 2025.
- Taking Advantage of High-Definition Mouse Movement, Microsoft, May 11, 2023.
- Mouse movement units, MDN Web Docs, February 3, 2026.
- CPI vs DPI Mouse Meaning, SteelSeries.