ARIA roles must be placed inside their required parent
Last updated:
How to place ARIA roles in their required parent?
Some ARIA roles are only valid inside a specific parent role. Place the element inside the correct parent, or add the required parent role.
Common roles and their required parents:
| Role | Required parent role(s) |
|---|---|
listitem | list |
option | listbox |
tab | tablist |
menuitem | menu or menubar |
row | grid, rowgroup, or treegrid |
gridcell | row |
treeitem | group or tree |
listitem without a list parent
<div role="listitem">Item 1</div>
<div role="listitem">Item 2</div>
listitem inside a list
<div role="list">
<div role="listitem">Item 1</div>
<div role="listitem">Item 2</div>
</div>
menuitem without a menu parent
<div role="menuitem">Open</div>
<div role="menuitem">Save</div>
menuitem inside a menu
<ul role="menu">
<li role="menuitem">Open</li>
<li role="menuitem">Save</li>
</ul>
Where possible, prefer native HTML elements over ARIA roles.
Why is this important?
ARIA roles have a fixed hierarchy. If the required parent role is missing, screen readers cannot interpret the relationship between HTML elements and may skip the element, announce it incorrectly, or fail to provide certain functionality.
More info:
Rule info
Standard
User impact
Critical impact Prevents users with disabilities from accessing content entirely. Must be fixed. Critical : blocks access entirely Serious : significantly hinders use Moderate : causes difficulty Minor : minimal disruptionFix complexity
High level of required technical expertise To resolve this issue, you need technical expertise in software engineering. Resolving this issue requires modifying the software code, for which you need a background in software engineering.Affects
Free Website Accessibility Audit