Skip to content

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.
Save as PDF (opens in a new tab)

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 it affects, and how much
WhoWhat they experienceImpact
Screen reader usersThey 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 usersMissing or unclear state makes it harder to know what they've already chosen.Partial impact
Voice control usersThey can say the control's name to use it, but some tools can't report its state back.Partial impact

Business & product impact

Business & product impact, with how much each claim weighs
AreaWhyImpact
LegalIt 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
ConversionIf people can't tell whether "I agree" is ticked or a menu is open, forms and checkouts stall.Moderate impact
SEOSearch engines ignore these attributes. There's no real search benefit.Low impact
Brand trustControls that don't report their state feel broken to screen reader users, and they say so.Moderate impact
Cost to fixAdding 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

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

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
Other standards
EN 301 549 9.4.1.2 · RGAA 7.1.1
Last reviewed
14 October 2026