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 state — a condition that can change as the user interacts. Because ARIA does nothing on its own, you must update this value in JavaScript every time the underlying state changes; a stale state is worse than none. And wherever a native element already expresses the same thing (a checkbox's checked state, the disabled attribute, a <details>'s open state), 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.
  • Update the value in JavaScript whenever the state changes — keep it in sync with reality.
  • Use the matching native state where one exists (a checkbox's checked, the disabled attribute, a <details>'s open state) instead of the ARIA version.
  • Set it only on an element whose role actually supports this state.

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 and keep the attribute in sync in JavaScript.
When should I use the ARIA state instead of native HTML?
Only when no native element conveys it. A native control expresses its own state automatically.
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.