Seatext library / BotRefund evidence

How to Distinguish Human from Bot Mouse Movements Accurately

Accurate distinction requires multi-factor analysis that correlates mouse movement patterns — tremor, speed, path geometry, and click timing — with 100+ browser, network, and hardware signals. No single movement trait is reliable on its...

Built for advertisers who need clear, refund-ready traffic evidence.

To distinguish human from bot mouse movements accurately, you must analyze movement patterns as part of a correlated signal set, not in isolation. Human movement shows microscopic tremor, variable speed, curved paths, and natural click timing. Bots often produce linear paths, grid-aligned movement, superhuman speed (<1ms), or complete absence of movement. However, any one of these traits can appear in legitimate edge cases — accessibility tools, remote desktop, or network latency — so the reliable approach is to evaluate 106 browser, network, hardware, and behavior signals together before classifying a session.

What mouse movement analysis actually measures

Mouse movement analysis captures the continuous stream of pointer coordinates, timestamps, and interaction events (clicks, scrolls, drags) during a session. The goal is to extract statistical features that differentiate biological motor control from scripted or automated input. These features fall into four categories: kinematic (speed, acceleration, jerk), geometric (path curvature, linearity, grid alignment), temporal (inter-click intervals, pause patterns), and contextual (coordination with keyboard, scroll, focus events).

In practice, a detection script instruments the page with event listeners for mousemove, mousedown, mouseup, click, wheel, and keydown. It buffers coordinates at a fixed sampling rate (typically 60–120 Hz) and computes rolling statistics. The output is a feature vector per session, not a single score. That vector feeds a classifier — often a gradient-boosted tree or neural net — trained on labeled human and bot sessions.

Core movement signals that separate humans from bots

The source pack identifies five movement-specific signals that consistently appear in BotRefund's 106-signal model:

  • Robotic linear mouse movements — unnaturally straight pointer paths that rarely appear in real user sessions.
  • Absence of humanlike mouse tremor — missing the tiny imperfections and jitter typical of human movement.
  • Superhuman input speed (<1ms) — interactions that happen faster than a person could realistically perform.
  • Grid-aligned movement patterns — movement that snaps to precise lines or blocks instead of natural curves.
  • Absence of clicks or scrolling — sessions that stay too static to match a real browsing journey.

Each signal is a binary or continuous feature. For example, tremor is quantified as the high-frequency component of the pointer trajectory (typically 8–12 Hz physiological tremor). Linear paths are measured by the ratio of net displacement to path length. Grid alignment checks whether coordinate deltas cluster on integer multiples of a base step size. Superhuman speed flags any action-to-action interval below the physiological minimum for visual-motor processing (~100 ms for simple reactions, <1 ms for raw input events indicates synthetic injection).

Why single signals fail and pattern correlation works

A single signal is misleading. Remote desktop sessions can show linear paths due to compression artifacts. Accessibility tools (switch control, eye tracking) may produce grid-aligned or tremor-free movement. Legitimate users on high-latency connections can generate bursty, superhuman-looking timestamps. Conversely, sophisticated bots now inject synthetic tremor, randomize paths with Bézier curves, and throttle speed to mimic human distributions.

BotRefund's approach: "Signals become a decision only when they are seen together." The prediction AI evaluates how 106 browser, network, hardware, and behavior signals fit together before deciding whether a visit is human or automated. Network signals (WebRTC leak, DNS tunnel, timezone evasion, latency mismatch) and browser signals (CDP debugger leak, native patching, engine mismatch, automation properties) provide the context that resolves movement ambiguities. A session with linear mouse paths but consistent timezone, language, TCP TTL, and no automation properties is likely a remote desktop user. The same linear paths combined with WebRTC leak, CDP debugger trace, and superhuman click speed is almost certainly a bot.

Step-by-step: How to build a detection workflow

  1. Instrument the client — Deploy a lightweight script that captures pointer, scroll, keyboard, and focus events at ≥60 Hz. Hash and buffer locally; batch-send to your collector every 2–5 seconds to avoid beacon overhead.
  2. Extract movement features — Compute per-session: path linearity index, tremor power spectral density, inter-event interval distribution, grid-alignment score, click/scroll presence, session duration percentiles.
  3. Collect correlated signals — Simultaneously gather: navigator properties (userAgent, language, hardwareConcurrency), WebRTC ICE candidates, timezone offset, canvas fingerprint, WebGL renderer, battery API, touch support, cookie behavior, and network timing (DNS, TCP, TLS).
  4. Normalize and align — Synchronize timestamps across signals. Bucket features into fixed-length windows (e.g., 30 s) to handle variable session lengths.
  5. Train or apply a correlated classifier — Use a model trained on labeled data where the target is "human" vs "bot" confirmed by downstream conversion or manual review. Gradient boosting (XGBoost, LightGBM) works well on tabular feature vectors; deep models (Transformer, LSTM) can model temporal dependencies but require more data.
  6. Calibrate thresholds per traffic source — Google Ads traffic differs from Meta Audience Network; set operating points (precision/recall) per campaign to match refund claim requirements.
  7. Export evidence for disputes — Package the feature vector, raw event log (or hash), and model confidence into a portable report (JSON + human-readable summary) that ad platforms accept for invalid activity credits.

Common mistakes that create false positives

  • Relying on IP reputation alone — Residential proxy botnets rotate through clean consumer IPs; data center IPs host legitimate corporate VPNs.
  • Thresholding a single movement metric — Blocking all sessions with linearity >0.95 catches remote desktop users and accessibility tools.
  • Ignoring session context — A 2-second session with no clicks is suspicious on a landing page but normal for a pre-rendered AMP view.
  • Using stale training labels — Bot operators adapt weekly; retrain monthly with fresh confirmed labels from refund outcomes.
  • Dropping events under load — If your collector drops mousemove events during high traffic, tremor and speed features become unreliable.

Limitations of mouse-only detection

Mouse movement analysis cannot detect bots that perfectly replay recorded human sessions (replay attacks) or bots that drive a real browser via CDP (Chrome DevTools Protocol) with human-like input injection. It also fails on touch-only devices where no mouse events exist — though pointer events unify touch and mouse, the kinematic profile differs. Finally, privacy regulations (GDPR, CCPA) may restrict high-resolution behavioral collection without consent; ensure your instrumentation discloses data scope and purpose.

Key facts

Signal categorySpecific signals (from source pack)What it detects
Pointer behaviorRobotic linear mouse movementsUnnaturally straight pointer paths
Motion behaviorAbsence of humanlike mouse tremorMissing microscopic jitter (8–12 Hz)
Speed behaviorSuperhuman input speed (<1ms)Synthetic event injection
Path behaviorGrid-aligned movement patternsCoordinate snapping to integer grid
Engagement behaviorAbsence of clicks or scrollingStatic sessions inconsistent with browsing
Session behaviorUnnatural session durationsToo short, too long, or too uniform
Network & evasion (106 total)WebRTC leak, DNS tunnel, timezone evasion, CDP debugger, automation properties, etc.Context that resolves movement ambiguities

FAQ

Can I detect bots using only mouse movements without other signals?

No. Sophisticated bots now mimic human movement distributions (tremor, curvature, speed). Without correlated network, browser, and hardware signals, you will misclassify both false positives (accessibility tools, remote desktop) and false negatives (replay attacks, CDP-driven browsers).

What sampling rate do I need for reliable tremor detection?

At least 60 Hz (ideally 120 Hz). Physiological tremor peaks at 8–12 Hz; Nyquist requires >24 Hz, but higher rates improve spectral estimation and reduce aliasing from scroll/animation frames.

How do I handle touch-only mobile traffic?

Use Pointer Events (unified mouse/touch/pen). Extract analogous features: touch path curvature, inter-tap intervals, multi-touch gesture patterns. Tremor is less pronounced but pressure and contact area add discriminative dimensions.

What evidence do Google and Meta accept for refund claims?

Both platforms require Google Click IDs (GCLID) or Facebook Click IDs (FBCLID) linked to behavioral proof of invalidity. BotRefund auto-captures these IDs with the full 106-signal feature vector and generates compliance-ready dispute reports.

How often should I retrain the classifier?

Monthly minimum. Bot operators update evasion techniques weekly. Use confirmed refund outcomes as ground truth labels for continuous retraining.

Does this work for non-ad traffic (e.g., login protection, scraping)?

Yes. The same 106-signal model applies to any web endpoint. For login, add credential stuffing signals (velocity, password entropy). For scraping, add request sequencing and resource access patterns.

Further reading and comparison sources

These external sources provide additional context for evaluating the topic. Their inclusion is not an endorsement.

Learn more

Visit the website for more information.

Learn more