References

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

The HTML aria-modal attribute

ARIA Accessibility All modern browsers Updated
Quick answer

The aria-modal="true" attribute tells assistive technology that everything behind a dialog is inert, so it should keep the user inside the dialog. Set it on the element with role="dialog" or role="alertdialog". The native <dialog> with showModal() manages this for you.

Overview

The aria-modal attribute indicates that a dialog blocks interaction with the rest of the page.

It is a widget property: a declaration about the widget that is normally set once, rather than a state that changes as the user interacts. Because ARIA does nothing on its own, keep it accurate and update it in JavaScript if the widget's behavior does change; a stale value is worse than none. And wherever a native element already expresses the same thing (a <textarea> for multi-line input, the required or readonly attribute, a native multiple select), use that instead.

Like all ARIA, aria-modal changes only the accessibility tree (what assistive technology perceives), never the element's behavior or appearance. The first rule of ARIA applies: if a native HTML element or attribute conveys this, use that instead, and only reach for ARIA when nothing native fits.

Syntax

<div role="dialog" aria-modal="true" aria-labelledby="t"></div>

Values

Value
true | false

Example

Live example
<div role="dialog" aria-modal="true" aria-labelledby="dlg-title">
  <h2 id="dlg-title">Confirm</h2></div>

Best practices

  • Follow the first rule of ARIA: use a native HTML element or attribute that conveys this where one exists, rather than adding ARIA.
  • Set it to match the behavior you actually implement, and change it only if that behavior changes.
  • Use the matching native attribute where one exists (required, readonly, multiple) instead of the ARIA version.
  • Set it only on an element whose role actually supports this property.

Frequently asked questions

What does aria-modal do?
Indicates that a dialog blocks interaction with the rest of the page.
Does setting this attribute change how the element behaves?
No. ARIA changes only what assistive technology perceives. You must implement the behavior yourself.
Do I need to update this value as the user interacts?
Usually not. A property describes the widget rather than a condition that changes, so you set it once and only revisit it if the widget's own behavior changes. That is what separates a property from a state.
Do I need aria-modal if native HTML already conveys it?
Usually not. ARIA is for what native HTML cannot express; redundant or incorrect ARIA can make accessibility worse. Reach for it only when no native element fits.