Legislation & standardsWCAG criteria
ARIA states and properties communicate the current condition and characteristics
of elements to assistive technologies. Where ARIA roles describe what an element
is, states and properties describe what it is doing and how it relates to other
elements.
[1]
States are dynamic — they change in response to user interaction or
application logic. They must be updated in JavaScript as the UI changes.
Examples: aria-checked, aria-expanded, aria-selected, aria-disabled, aria-hidden
Properties are typically stable — they describe structural or relational
characteristics that do not change frequently.
[2]
Examples: aria-label, aria-labelledby, aria-describedby, aria-required,
aria-haspopup, aria-controls
aria-expanded
Indicates whether a collapsible element is open or closed. Required on the
trigger, not the panel. Update to aria-expanded="true" when the panel opens.
[1]
aria-hidden
Hides an element and all its children from the accessibility tree. Use to
conceal decorative elements or off-screen content. Never apply to a focusable
element or a container with focusable children.
aria-checked
Reports the checked state of checkboxes, radio buttons, and toggle buttons.
Use "true", "false", or "mixed" for indeterminate checkboxes.
aria-selected
Indicates which option is selected in widgets like listboxes, tabs, and grids.
aria-disabled
Marks an element as disabled without removing it from the tab order or
accessibility tree. Differs from the HTML disabled attribute, which removes
the element from tab focus entirely.
aria-live
Announces dynamic content updates to screen readers without requiring focus
to move.
[3]
| Value | Behaviour |
|---|---|
| polite | Announced when the user is idle — use for most updates |
| assertive | Announced immediately, interrupting current speech — use only for urgent errors |
aria-label
Provides an accessible name directly on the element. Use when no visible
label text is available.
aria-labelledby
References another element's ID as the accessible name. Preferred over
aria-label when a visible label already exists.
[2]
aria-describedby
References an element that provides additional descriptive information —
error messages, hints, or instructions.
aria-required
Indicates that a form field must be completed before submission. Supplements
the HTML required attribute for custom form controls.
aria-controls
References the element whose content is controlled by the current element —
typically used with aria-expanded on disclosure and tab widgets.
aria-errormessage
References an element containing an error message for the current field.
Must be used alongside aria-invalid="true".
[3]
Last edited Apr 5, 2026, 5:27 PM · P**** J****