Multipoint and path-based gestures (pinch-zoom, two-finger rotate, swipe, draw-a-shape) cannot be produced by head pointers, mouth sticks, eye-gaze systems, or single switches -- shipping them without a single-pointer alternative locks those users out of the feature entirely.
2.5.1 Pointer Gestures
In Plain Language
2.5.1 Pointer Gestures (Level A, new in WCAG 2.1) says any functionality that uses a multipoint gesture (two or more simultaneous contacts, like pinch-zoom or two-finger rotate) or a path-based gesture (one where the shape of the path matters, like a swipe direction or drawing a letter) must also be operable with a single pointer that does not trace a path -- a tap, click, double-tap, long-press, or straight drag[1]. The only exception is when the gesture is essential to the activity itself, such as signature capture.
The mechanism this protects against: head pointers, mouth sticks, eye-gaze systems, and single switches emit one pointer event at a time and cannot synthesise a second simultaneous contact or a precise path. Ship a pinch-only zoom or a swipe-only carousel and those users lose the feature outright.
Why It Matters
- Multipoint gestures require two simultaneous contacts. Pinch-zoom, two-finger rotate, and split-tap all depend on the device reporting two touches at once. Head pointers, mouth sticks, and eye-gaze systems emit a single pointer stream -- there is no second finger to add.
- Path-based gestures require precise movement along a route. A swipe is distinguished from a tap-and-drag by the shape and direction of the path. Users with tremor, limited range of motion, or switch input cannot reliably trace a straight line, let alone a drawn shape, so the recogniser rejects the input.
- Dragging where only the endpoints matter is still allowed as an alternative. 2.5.1 explicitly permits single-pointer dragging (start point, end point) as a single-pointer method -- it is the path requirement that makes a swipe inaccessible, not the movement itself. 2.5.7 Dragging Movements (Level AA, new in WCAG 2.2) is the companion rule that covers the remaining drag case.
- Situational limits hit the same failure mode. A user holding a phone one-handed, wearing gloves, or working on a trackpad without multi-touch loses multipoint gestures for the same mechanical reason an eye-gaze user does -- the hardware will not produce a second simultaneous contact.
Examples
[ Map view ]
✔ Pinch-to-zoom is available, but + and - buttons provide the same functionality with a single click.
<!-- Map supports pinch-to-zoom AND button controls -->
<div class="map-container">
<div id="map">...</div>
<div class="controls">
<button aria-label="Zoom in" onclick="zoomIn()">+</button>
<button aria-label="Zoom out" onclick="zoomOut()">-</button>
</div>
</div>
[ Map view ]
Pinch to zoom
✘ Users who cannot pinch have no way to zoom the map. No button or single-click alternative is provided.
✔ Swiping works, but previous/next buttons let single-pointer users navigate the same content.
<!-- Carousel supports swipe AND button navigation -->
<div class="carousel">
<button aria-label="Previous slide"><</button>
<div class="slide">Slide 2 of 5</div>
<button aria-label="Next slide">></button>
</div>
Swipe left or right
✘ Users who cannot swipe have no way to navigate between slides.
How to Fix It
- Inventory every multipoint and path-based gesture in the interface. Look for pinch-zoom, two-finger rotate, split-tap, swipe (left/right/up/down), draw-a-shape unlock, and any custom recogniser that checks the shape of a drag path. A drag where only the start and end points matter (move a tile from A to B) is not path-based and is not captured by 2.5.1 -- it is covered by 2.5.7 Dragging Movements at Level AA.
- Add a single-pointer control for each one. Pinch-zoom gets
+and-buttons. Swipe carousels get previous/next buttons. Custom sliders get a numeric input or stepper buttons. Draw-a-shape unlock gets a PIN or password fallback. The alternative must achieve the same result, not a degraded version. - Use real
<button>elements. The alternatives are reachable by keyboard for free, which also satisfies 2.1.1 Keyboard. A<div onclick>fails both criteria at once. - Scope the "essential" exception tightly. The exception in 2.5.1 applies only when the gesture is fundamental to the activity -- signature capture, freehand drawing in an art tool, a piano keyboard that needs chord input[1]. A map zoom, a carousel, or a volume slider is never essential, because the same output is reachable with a button or a numeric field.
- Test with multi-touch disabled. In desktop browser devtools, emulate a single-pointer device, or test on a trackpad with multi-touch off. Every feature that was reachable with pinch, swipe, or path gesture must still be reachable with taps, clicks, and straight drags alone.
References
- [1] W3C (2023). Understanding Success Criterion 2.5.1: Pointer Gestures. W3C, Accessed 2026-04-07. https://www.w3.org/WAI/WCAG22/Understanding/pointer-gestures.html ↩ ↩