References

Beginner-friendly references for web development, with live, editable examples.

The HTML aria-description attribute

ARIA Accessibility
In short

The aria-description attribute holds an element's accessible description as a plain string, so no visible text is needed. It exists only in the WAI-ARIA 1.3 Working Draft of June 4, 2026, which says to use aria-describedby or aria-details for text the DOM already holds.

Overview

The aria-description attribute defines a string that describes or annotates the element it's on. The 1.2 Recommendation doesn't have it, and the 1.3 draft that defines it, dated June 4, 2026, may still be updated or replaced.

The draft gives it a narrow job. Authors may use it where "providing a visible description is not the desired user experience". A calendar day marked with dots is one such case, because no element holds the words 2 events.

Where the text lives decides the attribute. The draft says to use aria-describedby for a small description on the page, best read as a flat string, and aria-details for structured or long content that users can visit. Text found nowhere in the DOM is the case for this one.

The draft says browsers "MUST give precedence to aria-describedby over aria-description", and the draft description computation ranks both above title. Browsers handle an empty value differently. It ends Chrome's search and leaves Firefox free to use title.

Syntax

<button aria-label="Thursday 12" aria-description="2 events">12</button>

Values

Value
A string.

Example

Live example
<p>Click a day to add an event. The dots are the only sign of it on screen.</p>
<div role="group" aria-label="Week of November 9">
  <button type="button" aria-label="Monday 9">9 <span aria-hidden="true"></span></button>
  <button type="button" aria-label="Tuesday 10">10 <span aria-hidden="true"></span></button>
  <button type="button" aria-label="Wednesday 11">11 <span aria-hidden="true"></span></button>
  <button type="button" aria-label="Thursday 12">12 <span aria-hidden="true"></span></button>
  <button type="button" aria-label="Friday 13">13 <span aria-hidden="true"></span></button>
</div>
<p role="status" id="out">No day has an aria-description yet.</p>
<script>
const out = document.getElementById('out');
document.querySelectorAll('button').forEach(function (day) {
  let events = 0;
  day.addEventListener('click', function () {
    events = (events + 1) % 3;
    day.querySelector('span').textContent = '\u2022'.repeat(events);
    if (events) day.setAttribute('aria-description', events + (events === 1 ? ' event' : ' events'));
    else day.removeAttribute('aria-description');
    const value = day.getAttribute('aria-description');
    out.textContent = day.getAttribute('aria-label') + (value ? ': aria-description is ' + value : ': no aria-description');
  });
});
</script>

Best practices

  • Remove aria-description when there's nothing to say, because browsers disagree about what an empty value means.
  • Don't repeat the accessible name in the string. Firefox leaves the description empty when the two match, while Chrome exposes both.
  • Use aria-describedby on dialogs, because visible content makes important descriptive information less likely to be missed.
  • Add aria-details alongside it when users need a summary and a place to go. An element may carry both.

Frequently asked questions

Is aria-description part of a W3C Recommendation?
No, aria-description comes from the 1.3 draft, whose change log records it on January 16, 2020. The current Recommendation, version 1.2, doesn't have it.
Is aria-description the same as aria-describedby?
No, aria-description holds its text in the attribute, while aria-describedby references elements by id. The WAI-ARIA 1.3 draft gives them the same purpose, and both feed the accessible description.
Does aria-description work on any element?
Yes, aria-description has no role restrictions in the 1.3 draft. A plain span or div can carry it, though neither is allowed the naming attributes.
Does aria-description take priority over the title attribute?
Yes, in the AccName 1.2 draft's description ranking, aria-description outranks title when both are set. The 1.3 draft lists title as a related concept.
Do browsers support aria-description?
The ariaDescription property reflects aria-description, and it shipped in Chrome 83, Edge 83, Firefox 119 and Safari 17.4. How assistive technology presents the description is a separate question.