Skip to main content
Perceivly: Perceivly home

2.5.1 Pointer Gestures

Level A · added in WCAG 2.1

Some features use a multipoint gesture, like a pinch, or a path-based gesture, like a swipe. They must also work with a single pointer and no path, such as a tap or click on a button.

Who it helps

People with tremors or limited hand movement may not be able to swipe accurately or use two fingers at once. People who use a head pointer, mouth stick or eye tracking can usually only point and click.

How to meet it

Examples

Fails:A carousel you can only move by swiping
<div class="carousel" aria-roledescription="carousel" aria-label="Featured products">
  <!-- Slides change only on touch swipe events -->
  <div class="slide">Slide 1 of 3</div>
</div>
Passes:The same carousel with previous and next buttons
<div class="carousel" aria-roledescription="carousel" aria-label="Featured products">
  <button type="button" aria-label="Previous slide">&#8249;</button>
  <div class="slide">Slide 1 of 3</div>
  <button type="button" aria-label="Next slide">&#8250;</button>
</div>
Passes:Zoom buttons next to a pinch-to-zoom map
<div class="map" id="store-map"></div>
<div class="map-controls">
  <button type="button">Zoom in</button>
  <button type="button">Zoom out</button>
</div>

Can a scanner detect this?

No

axe-core has no rule for this criterion, because it cannot tell what a gesture does or whether a button does the same thing. You need to list each gesture your interface supports and check that a single tap or click can do the same.

No automated rule tests this criterion. Check it by hand.

Common mistakes

Official W3C explanation of 2.5.1

Check your own page

See which automated WCAG checks your page fails, with the failing elements and how to fix them.

Enter a page address, for example example.com/shop.

Reviewed November 2, 2026