Skip to content

A11Y Cheat Sheet

Powered byA11y University

Names, roles & states

An ARIA Role Is Missing the Parent It Needs

Some items, like a tab or a menu item, only make sense inside the right group. Without it, screen reader users don't hear how items relate.

aria-required-parentWCAG 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

ARIA roles tell screen readers what something is. Some roles are parts of a bigger whole — a tab belongs in a tablist, a menuitem in a menu, an option in a listbox.

If the parent is missing, the screen reader can't say "tab 2 of 4" or treat the group as one control. Arrow-key support may also break, so people get lost.

Who it affects

Who it affects, and how much
WhoWhat they experienceImpact
Screen reader usersThey hear loose items with no group and no count, like "Pricing, tab" instead of "Pricing, tab, 2 of 4".High impact
Keyboard-only usersArrow keys that should move between items may not work if the group is built wrongly.Partial impact
Cognitive and neurodivergent usersAffected if they use a screen reader, as mixed-up announcements are confusing.Partial impact
Voice control usersThey can usually still say the item's name to click it.Partial impact

Business & product impact

Business & product impact, with how much each claim weighs
AreaWhyImpact
LegalIt fails WCAG at Level A, the minimum, under 1.3.1 Info and Relationships. Complaints under Australia's Disability Discrimination Act and EN 301 549 point to WCAG.High impact
ConversionBroken tabs, menus and dropdowns can stop people choosing a plan or finishing checkout.Moderate impact
SEOSearch engines don't use this markup — no real benefit.Low impact
Brand trustA menu that makes no sense to a screen reader feels careless.Moderate impact
Cost to fixUsually a small fix in a shared component. Using a tested component library avoids it.High impact

Fixing it in code

Tabs without a tab list

Don't

<div>
  <button role="tab" aria-selected="true">Overview</button>
  <button role="tab" aria-selected="false">Pricing</button>
</div>

A screen reader says: “Overview, tab, selected”

Do

<div role="tablist" aria-label="Product details">
  <button role="tab" aria-selected="true">Overview</button>
  <button role="tab" aria-selected="false">Pricing</button>
</div>

A screen reader says: “Product details, tab list. Overview, tab, selected, 1 of 2”

A tab needs a tablist parent so the screen reader knows the group.

Options outside a list box

Don't

<ul>
  <li role="option">Small</li>
  <li role="option">Medium</li>
</ul>

A screen reader says: “Small”

Do

<ul role="listbox" aria-label="Size">
  <li role="option" aria-selected="false">Small</li>
  <li role="option" aria-selected="false">Medium</li>
</ul>

A screen reader says: “Size, list box. Small, 1 of 2”

An option only works inside a listbox or similar parent.

Designer's handoff note

When you design tabs, menus or pickers, name the group as well as each item — for example, "Product details" for a set of tabs.

Note how many items there are, so developers know what "2 of 4" should say.

Quick test

Checklist

Pass
You hear the group and the position, like "tab, 2 of 4".
Fail
You hear only the name and role, with no group or count.

Check these at the same time

What a green scan still misses

A scanner checks that the parent role exists. It can't tell whether the widget behaves properly with arrow keys or whether the group's label makes sense.

Reference

Rule ID
aria-required-parent
Raised by
  • axe-core: “Certain ARIA roles must be contained by particular parents”
WCAG
Other standards
EN 301 549 9.1.3.1 · RGAA 9.3.1
Last reviewed
14 October 2026