MDN wants to talk to developers like you:


« Element

The HTMLElement.dataset property allows access, both in reading and writing mode, to all the custom data attributes (data-*) set on the element. It is a map of DOMString, one entry for each custom data attribute.

The name of the custom data attributes must follow the production rule of xml names with the constraints:

  • the name must not start with xml, whatever case is used for these letters;
  • the name must not contain any semicolon (U+003A);
  • the name must not contain capital A to Z letters  spaces.

The custom data attributes is transformed to a key for the DOMStringMap entry with the following rules:

  • any dash (U+002D) is removed;
  • any letter following a dash (U+002D), before its removal, is set in its uppercase counterpart.

This leads to camel-cased keys in the map.


string = element.dataset.camelCasedName;
element.dataset.camelCasedName = string;


<div id="user" data-id="1234567890" data-user="johndoe" data-date-of-birth>John Doe

var el = document.querySelector('#user');

// == 'user'
// === '1234567890'
// el.dataset.user === 'johndoe'
// el.dataset.dateOfBirth === ''

el.dataset.dateOfBirth = '1960-10-03'; // set the DOB.

// 'someDataAttr' in el.dataset === false

el.dataset.someDataAttr = 'mydata';
// 'someDataAttr' in el.dataset === true

Browser compatibility

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 8 6.0 (6.0) 11 11.10 6
Feature Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support --- --- --- --- ---


Document Tags and Contributors

 Contributors to this page: teoli
 Last updated by: teoli,