Skip to content

Aria Dropeffect

DodaTech 2 min read

title: "aria-dropeffect — Indicating Drop Target Behavior" description: "Learn how to use aria-dropeffect to communicate what happens when an item is dropped on a target: copy, move, execute, link, or none." weight: 7 date: 2026-06-28 lastmod: 2026-06-28 tags: [accessibility, drag-drop]


aria-dropeffect tells screen readers what action will occur if an item is dropped on a target: copy, move, execute, link, or none.

## What You'll Learn

How to use aria-dropeffect values and update them dynamically during drag operations.

## Why It Matters

Users need to know what happens when they drop an item. Will it move? Copy? Link? Without this information, users cannot make informed decisions.

## Real-World Use

A user drags a file from one folder to another. The target folder has aria-dropeffect="move". The screen reader announces "Drop target: move to Documents folder."

## aria-dropeffect Values

```html
<!-- Drop zone that moves items -->
<div role="listbox" aria-label="Project tasks"
     aria-dropeffect="move"
     id="task-list-in-progress">
  <h2>In Progress</h2>
  <!-- items here -->
</div>

<!-- Drop zone that copies items -->
<div role="listbox" aria-label="Shared resources"
     aria-dropeffect="copy"
     id="shared-resources">
  <h2>Shared Resources</h2>
</div>

Dynamic Updates

function onDragStart(item) {
  // Update drop targets
  document.querySelectorAll('[aria-dropeffect]').forEach(zone => {
    zone.setAttribute('aria-dropeffect', zone.dataset.defaultEffect);
    zone.classList.add('drop-target-active');
  });
  announce('Drag started. Drop targets available.');
}

function onDragEnd(item) {
  document.querySelectorAll('[aria-dropeffect]').forEach(zone => {
    zone.classList.remove('drop-target-active');
  });
}

function onDrop(zone, item) {
  const effect = zone.getAttribute('aria-dropeffect');
  announce(`${item.getAttribute('aria-label')} ${effect}d to ${zone.getAttribute('aria-label')}`);
}

Common Mistakes

1. No aria-dropeffect on drop targets

Drop targets must communicate their behavior via aria-dropeffect.

2. aria-dropeffect not updated during drag

If the effect changes based on context, update aria-dropeffect when drag starts.

3. Using "none" instead of omitting

Use "none" when the element is not a drop target. Omit the attribute for non-target elements.

4. Multiple drop effects without distinction

If different targets have different effects, communicate each via its own aria-dropeffect.

5. No visual indication of drop targets

Sighted users also need to know where items can be dropped. Highlight drop targets visually.

Practice Questions

1. What are the valid aria-dropeffect values? copy, move, execute, link, and none.

2. What does aria-dropeffect="move" indicate? Dropping the item will move it to the target location.

3. What does aria-dropeffect="none" indicate? The element is not a drop target.

Challenge: Create two drop zones with different effects (copy and move). Update aria-dropeffect and visual styles during drag.

FAQ

Is aria-dropeffect supported by screen readers?

Support is limited. Most screen readers do not announce aria-dropeffect directly. Combine with aria-live for announcements.

What is the difference between copy and move?

copy creates a duplicate at the target. move relocates the item from its original position.

Can I use aria-dropeffect with the native dialog element?

Yes. aria-dropeffect can be used on any element that serves as a drop target.

Should I use aria-dropeffect or role=listbox?

Use both. role='listbox' identifies the widget type. aria-dropeffect indicates drop behavior.

Does aria-dropeffect affect visual rendering?

No. aria-dropeffect only affects the accessibility tree.

Mini Project

Create a task board with two columns (To Do, Done). Use aria-dropeffect="move" on both. Add visual highlight on drag start and aria-live announcements on drop.

What's Next

Learn about Reorder Lists and how to build accessible sortable lists.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro