coderef

Drag and DropBaseline · Widely available

The Drag and Drop API lets users drag and drop elements and external files such as images onto web pages. Developers can customize which elements can become draggable, the type of feedback the draggable elements produce, and the droppable elements.

Supported in all major browsers for at least 30 months — safe to use without fallbacks. Baseline since Jul 29, 2015. Widely available since Jan 29, 2018.

Browser support

DesktopChrome
1–2Not supported
3+Supportedsince Sep 15, 2009
Current: 155
Edge
12+Supportedsince Jul 29, 2015
Current: 154
Firefox
1–3Not supported
3.5+Supportedsince Jun 30, 2009
Current: 157
Safari
1–3.1Not supported
4+Supportedsince Jun 8, 2009
Current: 27
MobileChrome Android
18+Supportedsince Jun 27, 2012
Current: 155
Firefox Android
4+Supportedsince Mar 29, 2011
Current: 157
Safari iOS
1–3Not supported
3.2+Supportedsince Apr 3, 2010
Current: 27

How to use

This feature is Baseline widely available — use it freely, no fallback needed.

Example

Full syntax and examples are on MDN: DataTransfer.

Feature detection

JS · check before using
if ("DataTransfer" in globalThis) {
  // DataTransfer is available
} else {
  // load a polyfill or use a fallback
}

Sub-features

Support for each part of the feature (33). The overall table above shows when the whole feature works.

Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
DataTransfer3123.541843.2
DataTransfer.DataTransfer59176214.1596214.5
DataTransfer.clearData3123.541843.2
DataTransfer.dropEffect3123.541843.2
DataTransfer.effectAllowed3123.541843.2
DataTransfer.files3123.641843.2
DataTransfer.getData3123.541843.2
DataTransfer.items3125011.1185211.3
DataTransfer.setData3123.551845
DataTransfer.setDragImage3183.541843.2
DataTransfer.types3123.541843.2
DataTransferItem1112505.118505
DataTransferItem.getAsFile1112505.118505
DataTransferItem.getAsFileSystemHandle8686✕✕132✕✕
DataTransferItem.getAsString1112505.118505
DataTransferItem.kind1112505.118505
DataTransferItem.type1112505.118505
DataTransferItemList131250618506
DataTransferItemList.add131250618506
DataTransferItemList.clear131250618506
Show 13 more
Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
DataTransferItemList.length131250618506
DataTransferItemList.remove311250631506
DragEvent46123.51446414
DragEvent.DragEvent46123.51446414
DragEvent.dataTransfer46123.51446414
HTMLElement.drag_event11293.11892
HTMLElement.dragend_event11293.11892
HTMLElement.dragenter_event11293.11892
HTMLElement.draggable412251844
HTMLElement.dragleave_event11293.11892
HTMLElement.dragover_event11293.11892
HTMLElement.dragstart_event11293.11892
HTMLElement.drop_event11293.11892