Skip to main content
Perceivly: Perceivly home

2.5.7 Dragging Movements

Level AA · added in WCAG 2.2

Anything you can do by dragging must also work with a single pointer and no dragging, such as a tap or click. A keyboard alternative alone is not enough.

Who it helps

People with tremors or weak grip may not be able to hold down a button while moving the pointer. People using a head pointer, eye tracking or voice-controlled mouse grids also struggle to drag.

How to meet it

Examples

Fails:A sortable list you can only reorder by dragging
<ul class="sortable">
  <li draggable="true">Write draft</li>
  <li draggable="true">Review</li>
  <li draggable="true">Publish</li>
</ul>
Passes:The same list with move buttons on each item
<ul class="sortable">
  <li draggable="true">
    Write draft
    <button type="button" aria-label="Move up: Write draft">Move up</button>
    <button type="button" aria-label="Move down: Write draft">Move down</button>
  </li>
</ul>
Passes:A drop zone with a file input as the single-pointer option
<div class="drop-zone">
  <p>Drag files here, or</p>
  <label for="upload">Choose files</label>
  <input id="upload" type="file" multiple>
</div>

Can a scanner detect this?

No

axe-core has no rule for this criterion, because it can't tell whether a drag action has a single-pointer alternative. You need to find every drag interaction and check that a tap or click can do the same thing.

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

Common mistakes

Official W3C explanation of 2.5.7

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