The touchstart event fires when one or more touch points are placed on the surface. Learn TouchEvent, changedTouches, press patterns, multi-touch counts, Pointer Events alternatives, and five try-it labs.
01
Kind
Instance event
02
Type
TouchEvent
03
When
Finger down
04
Handler
ontouchstart
05
Bubbles?
Yes
06
Status
Limited availability
Fundamentals
Introduction
touchstart is the beginning of a touch gesture: one or more fingers (or stylus contacts that go through Touch Events) touch the surface. Use it to mark “pressed,” start a drag, or record the initial contact point.
Do not use "ontouchstart" in window alone to decide “this is a phone.” Many desktops hide or expose Touch Events for compatibility reasons. Detect the APIs you need, or use Pointer Events.
Concept
Understanding touchstart
An instance event that answers: “Did one or more fingers just touch down?”
Trigger — touch points placed on the surface.
Event type — TouchEvent; use changedTouches.
Bubbles — yes; cancelable behavior can vary by UA.
Starts the chain — often followed by move / end / cancel.
Limited availability on MDN (not Baseline)—desktop Safari often lacks Touch Events.
Foundation
📝 Syntax
Use the event name with addEventListener, or set the handler property:
Patterns follow MDN Element: touchstart event and the Touch events guide. Use a touch device or DevTools touch simulation; some labs include mouse fallbacks for desktop practice.
touchstart is marked Limited availability on MDN (not Baseline). Logos use the shared browser-image-sprite.png sprite from this project. Touch Events are strong on mobile; many desktop browsers omit them—prefer Pointer Events for cross-device UIs.
✓ Limited availability
Element touchstart
Fires when touch points are placed on the surface. Chrome 22+, Firefox 52+, Edge 12+, Safari iOS yes; desktop Safari often no.
PartialNot Baseline
Google Chrome22+ (touch-capable / mobile)
Supported
Mozilla Firefox52+ (desktop re-enabled)
Supported
Apple SafariiOS yes · desktop often no
Partial
Microsoft Edge12+
Supported
OperaMobile / Chromium touch paths
Partial
Internet ExplorerNot supported (use Pointer Events)
Unavailable
touchstartLimited
Bottom line: Use touchstart to begin Touch Events gestures. Pair with move/end/cancel, and prefer pointerdown for mouse + pen + touch together.
Wrap Up
Conclusion
touchstart is the “finger down” signal that begins a Touch Events gesture. Read changedTouches, start your UI state, continue with move/end/cancel, and consider Pointer Events for cross-device input.
Use { passive: true } when you only observe the start
Read new contacts from changedTouches
Clear press/drag state on touchend and touchcancel
Prefer Pointer Events for new multi-input UIs
Test with DevTools touch simulation or a real phone
❌ Don’t
Treat ontouchstart as a reliable “is mobile” test
Leave pressed styles stuck if cancel fires instead of end
Assume desktop Safari exposes Touch Events
Skip pairing with move / end / cancel for drag UIs
Overwrite ontouchstart if you need multiple listeners
Summary
Key Takeaways
Knowledge Unlocked
Five things to remember about touchstart
Finger down—start the gesture, then handle move, end, or cancel.
5
Core concepts
📱01
On down
points placed
Trigger
📄02
TouchEvent
changedTouches
API
👆03
Press
start UI state
Pattern
👥04
Multi
touches.length
Count
🎯05
Limited
prefer pointerdown
Status
❓ Frequently Asked Questions
It fires when one or more touch points are placed on the touch surface—the start of a touch gesture.
No. MDN does not mark Element touchstart as Deprecated, Experimental, or Non-standard. It has Limited availability (not Baseline), mainly because desktop Safari and some desktop browsers omit or limit Touch Events.
A TouchEvent. Use changedTouches for the points that just went down; also inspect touches and targetTouches as needed.
No. Many desktop browsers hide or expose Touch Events in ways that make “has ontouchstart” a poor mobile detector. Prefer feature detection for the APIs you use, or Pointer Events for cross-device input.
touchstart is Touch Events only. pointerdown works for mouse, pen, and touch. For new cross-device UIs, prefer Pointer Events.
Usually touchmove while sliding, then touchend on lift—or touchcancel if the gesture is aborted.
Did you know?
Sites that branch on "ontouchstart" in document often break on touchscreen laptops—either forcing a mobile layout on desktop, or missing touch because the browser hid the API. Prefer Pointer Events for input.