Pointer path curves the way a hand moves
A real hand deviates several pixels RMS from the straight line and lands well under 99.9% efficiency; a linearly interpolated path reports 0.00px and 100.00%.
What a detector infers
The check captures the pointer path across the pad and measures two things about its geometry: the RMS perpendicular distance of every sample from the straight line joining the first and last point, and move efficiency — straight-line distance divided by the total path length actually travelled. Automation interpolates.
Playwright's Mouse.move() computes each intermediate point as fromX + (x - fromX) * (i / steps), placing every sample exactly on the line between the endpoints, which yields a residual of 0.00px and an efficiency of 1.000. A human arm is a two-joint linkage steering a device across a surface: it accelerates, overshoots, and corrects, so it cannot trace a mathematically perfect line.
That makes this a contradiction rather than a rarity — it needs no reference distribution and no population to compare against, which is also why it cannot go stale when a browser updates. It is gated hard on purpose: axis-aligned paths are excluded outright, because the operating system's Mouse Keys accessibility feature drives the cursor with the arrow keys and legitimately produces perfectly straight horizontal and vertical motion.
How to resolve it
Do not synthesise pointer motion as a straight interpolation between two points. Drive input through a source that produces genuine curvature and correction — set waypoints and let a real humanising layer generate the trajectory, rather than hand-rolling per-step easing, which usually just swaps one analytic curve for another. This row is never scored, and reports N/A rather than a failure for touch-only or keyboard-only visitors, who produce no pointer path at all.
Read in the wild by
Commercial detector D
Lists mouse coordinates, velocity and acceleration patterns as its first behavioural signal.
[internal reference] - 4. Behavioural - Mouse movements: Coordinates, velocity, acceleration patterns
Every attribution traces to a published artifact. See the sources and their limits.
Nearby checks in Input & behaviour
- A mouse press landed inside the viewport it was delivered to
press-inside-viewportA physical mouse press lands wherever the pointer is. If the pointer is outside the page's viewport, the press goes to the browser's own… - A move only reports a button down after that button was pressed
buttons-without-pressMouseEvent.buttons on a move reports which buttons are held, and a button can only be held after it has been pressed. - The pointer never crossed a long distance in one report from rest
pointer-jump-from-restWhen a hand starts moving a mouse that has been still, the first reports cover a few pixels each as the movement builds up. - The pointer came to rest on a control before pressing it
settle-before-pressA person brings the pointer onto a control and presses after it arrives: the hand has to stop, and then the finger has to act. - Pointer velocity and acceleration vary physically
pointer-kinematicsVelocity, acceleration reversals, direction changes, and timestamp quantisation catch constant-speed curved automation missed by linearity. - Pointer events arrive on hardware time
pointer-event-cadenceWhere the linearity check reads the path's shape, this one reads its clock. - Pointer samples arrive batched the way a hardware device delivers them
input-coalescing-vs-hardwareChrome delivers pointermove once per display frame and folds every hardware report that arrived in between into getCoalescedEvents()… - Movement deltas agree with the coordinates they were derived from
pointer-movement-delta-coherenceEvery pointer event carries two independent accounts of the same displacement. screenX and screenY are where the pointer is; movementX and…
Clearcote is a browser built for fingerprint coherence
It is a Chromium fork, maintained by the same people who wrote this reference. It ships as a compiled browser rather than as a stealth script injected into someone else's — which is a description of how it is built, and is not an argument about how it behaves on this check.
This audit takes no position on how Clearcote scores on Input & behaviour checks, on this one, or anywhere else. It has no baseline corpus of other people's fingerprints to rank you against and no vendor scoreboard — nearly every check is self-referential, asking one browser the same question through two independent APIs and reporting whether both answers can be true at once. It runs identically on any browser, including ours. Run it on yours and read the result yourself.
See the other checks in Input & behaviour — the family pointer-path-linearity belongs to.
