The HTML aria-invalid attribute
The aria-invalid attribute tells assistive technology that a field's value has failed validation. Values: false (default), true, grammar or spelling. Pair it with aria-errormessage to point at the error text.
Overview
The aria-invalid attribute indicates that the value of a field has failed validation.
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-invalid 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
<input aria-invalid="true" aria-errormessage="err">
Values
| Value |
|---|
| false | true | grammar | spelling |
Example
<input aria-invalid="true" aria-errormessage="e1">
<p id="e1">That email is already taken.</p>
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, thedisabledattribute, a <details>'s open state) instead of the ARIA version. - Set it only on an element whose role actually supports this state.