i

A contract with optional terms

48 attributes · 94 roles

Every ARIA state and property, and what any role actually requires of it.

The finding. ARIA 1.2 defines forty-eight states and properties. Six of them are ever required by any role, and eighty-three of the ninety-four roles require nothing at all. Fifteen attributes are global and two of those are deprecated. Where the specification did spend its deprecations, it was to narrow four attributes that had been allowed almost everywhere — aria-invalid, aria-haspopup and aria-errormessage on seventy-seven roles each. A role announces what a thing is; it almost never obliges you to say anything more about it.

48states and properties defined
6ever required by any role
83of 94 roles require nothing

Everything ARIA ever insists on

Six attributes, across eleven roles. This is the complete list of cases where the specification says a role must carry a state or property.

The eleven roles that require anything: checkbox · combobox · heading · menuitemcheckbox · meter · option · radio · scrollbar · separator · slider · switch

Where 1.2 spent its deprecations

Not on removing attributes — only two are deprecated outright, aria-dropeffect and aria-grabbed. The effort went into narrowing four attributes that had been allowed almost everywhere:

Deprecated on that many roles apiece — a quiet retraction of scope rather than a removal.

Kind
Reach

AttributeKindValue Required byReach
aria-activedescendant property ID reference application combobox composite group textbox
aria-atomic property true/false global
aria-autocomplete property token combobox textbox
aria-busy state true/false global
aria-checked state tristate 4 checkbox menuitemcheckbox option radio switch
aria-colcount property integer table
aria-colindex property
aria-colspan property integer cell
aria-controls property ID reference list 2 global
aria-current state token global
aria-describedby property ID reference list global
aria-details property ID reference global
aria-disabled state true/false application button composite gridcell group input link menuitem scrollbar separator tab
aria-dropeffect deprecated property token list global
aria-errormessage property ID reference application checkbox combobox gridcell listbox radiogroup slider spinbutton textbox tree
aria-expanded state true/false/undefined 1 application button checkbox combobox gridcell link listbox menuitem row rowheader tab treeitem
aria-flowto property ID reference list global
aria-grabbed deprecated state true/false/undefined global
aria-haspopup property token application button combobox gridcell link menuitem slider tab textbox treeitem
aria-hidden state true/false/undefined global
aria-invalid state token application checkbox combobox gridcell listbox radiogroup slider spinbutton textbox tree
aria-keyshortcuts property string global
aria-label property string all but 11 roles
aria-labelledby property ID reference list all but 11 roles
aria-level property integer 1 heading listitem row
aria-live property token global
aria-modal property true/false window
aria-multiline property true/false textbox
aria-multiselectable property true/false grid listbox tablist tree
aria-orientation property token scrollbar select separator slider tablist toolbar
aria-owns property ID reference list global
aria-placeholder property string textbox
aria-posinset property integer article listitem menuitem option radio row tab
aria-pressed state tristate button
aria-readonly property true/false checkbox combobox grid gridcell listbox radiogroup slider spinbutton textbox
aria-relevant property token list global
aria-required property true/false checkbox combobox gridcell listbox radiogroup spinbutton textbox tree
aria-roledescription property string global
aria-rowcount property integer table
aria-rowindex property
aria-rowspan property integer cell
aria-selected state true/false/undefined 1 gridcell option row tab
aria-setsize property integer article listitem menuitem option radio row tab
aria-sort property token columnheader rowheader
aria-valuemax property number range scrollbar separator slider spinbutton
aria-valuemin property number range scrollbar separator slider spinbutton
aria-valuenow property number 4 meter range scrollbar separator slider spinbutton
aria-valuetext property string range separator spinbutton

Read from the 1.2 Recommendation. The building’s role taxonomy was built from a 1.3-era draft and lists 8 roles the Recommendation does not define (comment, image, mark, password, sectionfooter, sectionheader, suggestion, text); those are recorded and deliberately not joined against. “Global” is the specification’s literal phrase — aria-label and aria-labelledby are not global in 1.2, both carrying a list of excluded roles.

Source. WAI-ARIA 1.2 Recommendation · W3C Document Licence · retrieved 2026-08-14. This collection is derived · one specification, read both ways.

The documents. WAI-ARIA 1.2 Recommendation