In JavaScript, the touchmove event fires when one or more touch points move along the touch surface (MDN)—while a finger slides. The event object is a TouchEvent. It sits between touchstart and touchend (or touchcancel).
Register a listener with addEventListener. Check readiness and browser support before you rely on this event.
Syntax
Listen for touchmove. Start with this line.
JavaScript
el.addEventListener("touchmove", fn)
Call
What it does
el.addEventListener("touchmove", fn)
Primary signature.
Built into the browser. Listen with el.addEventListener("touchmove", …) — no import required.
Library declarations
JavaScript
el.addEventListener("touchmove", fn)
Parameters
Parameter
Description
Event target
Required. Element (or ancestor) listening for moves
Remember the start. On touchstart, save clientX / clientY.
Compute the delta. On each move, subtract start from current position.
Show the offset. Positive dx means right; positive dy means down.
Keep it light. Only math and a text update—safe for frequent touchmove events.
Compatibility
Browser Support
touchmove is marked Limited availability on MDN (not Baseline). Touch Events are reliable on mobile browsers; many desktop browsers omit or limit them. Prefer Pointer Events for mouse + pen + touch together.
✓ Limited availability
Element touchmove
Fires while touch points slide. Strong on mobile Chrome / Firefox / Safari iOS / Edge; desktop Safari often lacks Touch Events.
PartialNot Baseline
Google ChromeTouch-capable / mobile
Supported
Mozilla FirefoxMobile & touch-enabled
Supported
Apple SafariiOS yes · desktop often no
Partial
Microsoft EdgeTouch-capable / Chromium
Supported
OperaMobile / Chromium touch paths
Partial
Internet ExplorerUse Pointer Events instead
Unavailable
touchmoveLimited
Bottom line: Use touchmove for Touch Events drag tracking on mobile. For unified input across devices, ship pointermove with Pointer Events.
Frequently Asked Questions
It fires when one or more touch points move along the touch surface—continuously while a finger slides (MDN).
No. MDN does not mark Element touchmove as Deprecated, Experimental, or Non-standard. It has Limited availability (not Baseline), mainly because some desktop browsers omit or limit Touch Events.
A TouchEvent. Use changedTouches for the points that just moved; also inspect touches and targetTouches when needed.
touchmove can fire at a high rate. A non-passive listener that may call preventDefault can delay scrolling. Prefer { passive: true } unless you must block the browser’s default pan/zoom.
touchmove is Touch Events only. pointermove works for mouse, pen, and touch. For new cross-device UIs, prefer Pointer Events.
touch-action can limit which gestures the browser handles (pan, zoom). It often pairs with custom drag code that listens for touchmove.