Powered by
Names, roles & states
A Role Is Missing an ARIA Attribute It Needs
Some roles need a state, like checked or expanded. Without it, screen reader users can't tell whether a control is on, off, open or closed.
aria-required-attrWCAG 2.0Introduced in WCAG 2.0.Level AA — the minimum. Missing it blocks people outright.
- Status
- CriticalCritical — Someone can complete the task only with great difficulty or outside help.CurrentScanners run this rule today.
- Owner
- DesignDevTest
- Audit
- Automated+ManualA scanner finds it; a person confirms the fix.
Why it matters
A role tells a screen reader what a control is, such as a checkbox or a slider. Some roles only make sense with a state or value attached. A checkbox needs aria-checked. A slider needs aria-valuenow.
If that attribute is missing, the screen reader names the control but leaves out its state. People who can't see the screen must guess, and they often guess wrong.
Who it affects
| Who | What they experience | Impact |
|---|---|---|
| Screen reader users | They hear "Dark mode, switch" but never whether it is on or off. | High impact |
| Low-vision users (magnification) | Affected if they use a screen reader or magnifier with speech, as many do. | Partial impact |
| Cognitive and neurodivergent users | Missing or unclear state makes it harder to know what they've already chosen. | Partial impact |
| Voice control users | They can say the control's name to use it, but some tools can't report its state back. | Partial impact |
Business & product impact
| Area | Why | Impact |
|---|---|---|
| Legal | It fails WCAG 4.1.2 Name, Role, Value at Level A, the minimum. Complaints under Australia's Disability Discrimination Act, and EN 301 549 in Europe, point to WCAG. | High impact |
| Conversion | If people can't tell whether "I agree" is ticked or a menu is open, forms and checkouts stall. | Moderate impact |
| SEO | Search engines ignore these attributes. There's no real search benefit. | Low impact |
| Brand trust | Controls that don't report their state feel broken to screen reader users, and they say so. | Moderate impact |
| Cost to fix | Adding the attribute is quick. Keeping it updated as the state changes needs script work, best done once in a shared component. | Moderate impact |
Fixing it in code
A custom on/off switch
Don't
<div role="switch" tabindex="0">Dark mode</div>A screen reader says: “Dark mode, switch”
Do
<div role="switch" tabindex="0" aria-checked="false">Dark mode</div>A screen reader says: “Dark mode, switch, off”
A switch must say whether it's on, and your script must flip aria-checked when clicked.
A custom drop-down list (combobox)
Don't
<input role="combobox" aria-controls="country-list" aria-label="Country">A screen reader says: “Country, combo box”
Do
<input role="combobox" aria-controls="country-list" aria-expanded="false" aria-label="Country">A screen reader says: “Country, combo box, collapsed”
A combobox must say whether its list is open or closed.
Designer's handoff note
For every custom control, list its states — on and off, open and closed, current value. Write what the screen reader should say for each.
Where you can, design with standard controls like a real checkbox or <select>. They report their state for free.
Quick test
Tool
NVDA (opens in a new tab) (free, Windows) or VoiceOver (opens in a new tab) (Mac)
Checklist
- Pass
- You hear the state or value each time, like "off", "checked" or "collapsed".
- Fail
- You hear only the name and role, with no state, or the state never changes.
Check these at the same time
- An ARIA attribute is used where it isn't allowed
aria-allowed-attr
What a green scan still misses
A scanner checks that the attribute exists. It can't tell whether the value is correct or whether your script updates it when the state changes.
Reference
- Rule ID
aria-required-attr- Raised by
- axe-core: “Required ARIA attributes must be provided”
- Lighthouse: “[role]s have all required [aria-*] attributes”
- WCAG
- 4.1.2 Name, Role, Value (opens in a new tab) · Level A · since WCAG 2.0
- Other standards
- EN 301 549 9.4.1.2 · RGAA 7.1.1
- Last reviewed
- 14 October 2026