Skip to content

A11Y Cheat Sheet

Powered byA11y University

Names, roles & states

A List-Type Role Is Missing the Items It Needs Inside

When a list, menu, tab list or table role has no proper items inside, screen readers can't count or describe them, so people lose their place.

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

Some ARIA roles are containers. A list needs listitems. A tablist needs tabs. A menu needs menuitems. ARIA is extra code that tells screen readers what something is.

If the right items aren't inside, the screen reader can't say "tab 2 of 4" or move between items. The structure everyone can see is lost to people who can't see it.

Who it affects

Who it affects, and how much
WhoWhat they experienceImpact
Screen reader usersThey hear "tab list" but no tabs, or a list with no count, and can't move item by item.High impact
Low-vision users (magnification)Affected only if they also use a screen reader, as many do.Partial impact
Cognitive and neurodivergent usersWhen the voice gives no count or position, it's harder to keep track.Partial impact
Voice control usersSaying "click tab" or a menu item may fail when the item's role is missing.Partial impact

Business & product impact

Business & product impact, with how much each claim weighs
AreaWhyImpact
LegalIt fails WCAG 1.3.1 at Level A, the minimum, and EN 301 549. Complaints under Australia's Disability Discrimination Act point to WCAG.High impact
ConversionBroken tabs, menus or option lists can hide product details or block checkout steps.Moderate impact
SEOSearch engines don't read ARIA roles in any useful way. No real benefit.Low impact
Brand trustA menu that reads as empty feels broken. Screen reader users notice and tell others.Moderate impact
Cost to fixUsually lives in one shared component, so one fix covers every page.High impact

Fixing it in code

Tabs with the tab role missing

Don't

<div role="tablist">
  <button>Details</button>
  <button>Reviews</button>
</div>

A screen reader says: “Tab list. Details, button”

Do

<div role="tablist">
  <button role="tab" aria-selected="true">Details</button>
  <button role="tab" aria-selected="false">Reviews</button>
</div>

A screen reader says: “Details, tab, selected, 1 of 2”

A tablist must hold tabs so screen readers can count and describe them.

A list role with plain divs inside

Don't

<div role="list">
  <div>Apples</div>
  <div>Pears</div>
</div>

A screen reader says: “List, 0 items. Apples”

Do

<ul>
  <li>Apples</li>
  <li>Pears</li>
</ul>

A screen reader says: “List, 2 items. Apples”

Plain HTML lists bring the right items for free.

Designer's handoff note

When you design tabs, menus or lists, mark which parts are the container and which are the items.

Note what the screen reader should say, such as "Reviews, tab, 2 of 3".

Quick test

Tool

NVDA (opens in a new tab) (free on Windows)

Checklist

Pass
You hear each item's role and position, like "tab, 2 of 3".
Fail
You hear the container's name but no item roles or counts.

What a green scan still misses

A scanner checks that items with the right role exist. It can't tell whether the keyboard and states work as people expect — for that, try it yourself.

Reference

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