The pointermove event fires when a pointer changes coordinates (and is not canceled by touch-action). Learn addEventListener vs onpointermove, how it compares to mousemove, high fire-rate tips, drag with setPointerCapture, and five try-it labs.
01
Kind
Instance event
02
Type
PointerEvent
03
When
Coordinates change
04
Handler
onpointermove
05
Buttons?
Optional (hover too)
06
Status
Baseline widely available
Fundamentals
Introduction
pointermove answers: “Did this pointer change position?” It is the unified cousin of mousemove—with extra fields for touch contact size, pen pressure, and pointer identity.
MDN notes moves fire whether or not buttons are pressed, and they can arrive at a very high rate. Keep handlers light, or throttle expensive work (drawing, layout, network).
💡
Beginner tip
If the browser claims the gesture for scrolling/zooming (touch-action, pointermove may not be delivered. On drag surfaces, set touch-action: none when you need full control.
Concept
Understanding pointermove
An instance event that answers: “Did the pointer’s coordinates change?”
Coordinates — fires when the pointer moves (hover or pressed).
touch-action — browser gestures can cancel delivery of moves.
High rate — expect many events during a fast swipe or mouse glide.
vs mousemove — similar timing for mouse; PointerEvent adds id, type, pressure, etc.
Baseline Widely available on MDN (since July 2020).
Foundation
📝 Syntax
Use the event name with addEventListener, or set the handler property:
pointermove is marked Baseline Widely available on MDN (since July 2020). Logos use the shared browser-image-sprite.png sprite from this project. Pointer Events unify mouse, touch, and pen across modern engines.
✓ Baseline · Widely available
Element pointermove
Fires when a pointer changes coordinates; keep handlers light and respect touch-action on mobile.
FullWidely available
Google ChromeFull support
Yes
Mozilla FirefoxFull support
Yes
Apple SafariFull support
Yes
Microsoft EdgeFull support
Yes
OperaFull support
Yes
Internet ExplorerPointer Events (legacy IE11 path)
Partial
pointermoveBaseline
Bottom line: Prefer pointermove for unified tracking. Use setPointerCapture for drag and throttle expensive work.
Wrap Up
Conclusion
pointermove is the unified “pointer coordinates changed” signal. Use it for tracking, drag, and drawing—keep handlers light, respect touch-action, and end gestures on pointerup / pointercancel.
Prefer pointermove for unified mouse/touch/pen tracking
Keep move handlers cheap; batch paint with requestAnimationFrame
Use setPointerCapture for drag that leaves the hit box
Set touch-action: none on dedicated drag surfaces
Clear state on both pointerup and pointercancel
❌ Don’t
Do heavy DOM or network work on every move event
Assume moves always fire during touch scroll (touch-action may cancel them)
Forget capture when the pointer leaves your handle mid-drag
Ignore cancel paths on mobile / stylus devices
Overwrite onpointermove if you need multiple listeners
Summary
Key Takeaways
Knowledge Unlocked
Five things to remember about pointermove
Coordinates changed—fast, unified tracking for mouse, touch, and pen.
5
Core concepts
📱01
On move
coords change
Trigger
📄02
PointerEvent
id · type · pressure
API
⚡03
High rate
keep work light
Perf
🔓04
Capture
reliable drag
Pattern
🎯05
Baseline
since Jul 2020
Status
❓ Frequently Asked Questions
It fires when a pointer changes coordinates and has not been canceled by a browser touch-action. It is very similar to mousemove, but with more PointerEvent features for mouse, touch, and pen.
No. MDN marks Element pointermove as Baseline Widely available (since July 2020). It is not Deprecated, Experimental, or Non-standard.
A PointerEvent (inherits from MouseEvent and Event). Useful fields include pointerId, pointerType, pressure, clientX/clientY, and movementX/movementY.
No. MDN notes these events happen whether or not any pointer buttons are pressed—so mouse hover moves still fire pointermove.
It can fire at a very high rate depending on how fast the user moves, how fast the machine is, and what else is running. Keep handlers light or throttle heavy work.
If the browser uses the gesture for scrolling or zooming (CSS touch-action), pointermove may not be delivered for that contact. Use touch-action: none on drag surfaces when you need full pointer control.
Did you know?
Spec tables list pointermove as bubbling and cancelable. When the pointer is primary, canceling can also affect related mouse compatibility default actions—another reason Pointer Events are more than a rename of mouse events.