demo · v142

Precision Tracker

Try to trace the diagonal line from top-left to bottom-right. The left pad records every coalesced pointermove the browser delivered; the right pad records every pointerrawupdate. Same trace, two sample rates. Then compare your error against the ideal line.

isSecureContext

pointermove (coalesced)

samples
0
RMS error from ideal line

pointerrawupdate (raw)

samples
0
RMS error from ideal line
raw sample rate
— Hz
raw advantage
pointerType

relevant markup

// pointermove is throttled to display rate (typically 60-120 Hz).
// pointerrawupdate fires at the hardware sample rate (240-1000+ Hz)
// — but ONLY in a secure context (HTTPS/localhost).
//
// Use coalesced events if you need more samples per frame:
window.addEventListener("pointerrawupdate", (e) => {
  for (const sample of e.getCoalescedEvents()) {
    pushSample(sample.clientX, sample.clientY);
  }
});

see also