Aria required children

Moderate effort

Found on 10% of audited stores.

Ensure every ARIA parent role contains only its required, permitted child roles — and remove focusable elements (e.g. tabindex on img or a) that are not allowed inside that ARIA context.

What it is

ARIA (Accessible Rich Internet Applications) roles tell screen readers and other assistive technologies what a piece of your page is — a list, a menu, a tab panel, etc. Each parent role has a strict set of child roles it is allowed to contain. For example, a `list` role must contain `listitem` children; a `menu` must contain `menuitem` children. When you nest elements that don't belong — such as a plain image or link with a `tabindex` attribute — directly inside a parent ARIA role, assistive technologies get confused and may skip content, announce it incorrectly, or break keyboard navigation entirely. The WCAG 1.3.1 criterion ("Info and Relationships") requires that the structure you see visually is faithfully conveyed in code so every user, regardless of ability, gets the same information.

Why it matters

Screen-reader users — roughly 7–8 million people in the US alone — rely on correct ARIA structure to navigate your store. A broken ARIA parent/child relationship can cause product listings, navigation menus, carousels, or tab panels to become completely invisible or unreadable to assistive technology, directly costing you sales from customers with disabilities. Beyond lost revenue, WCAG 1.3.1 failures are frequently cited in ADA Title III accessibility lawsuits against online retailers; a documented violation increases your legal exposure. Google also uses accessibility signals as a quality indicator, so persistent structural errors can subtly suppress your organic rankings over time.

How to fix it

  1. Identify the offending element: locate the HTML element that carries the parent ARIA role (e.g. role="list", role="menu", role="tablist") and inspect its direct children in your browser's DevTools (right-click → Inspect → Accessibility pane).
  2. Check the required/allowed children for that role: consult the WAI-ARIA spec or Deque's rule reference to see exactly which child roles are permitted. For example, role="list" requires role="listitem" children; role="menu" requires role="menuitem" / role="menuitemcheckbox" / role="menuitemradio".
  3. Fix mismatched children: either (a) add the correct role attribute to the child element (e.g. add role="listitem" to a child <div>), or (b) wrap the non-conforming children in an appropriate element that carries the required role.
  4. Remove disallowed tabindex values: if the scanner flags img[tabindex] or a[tabindex] as illegal children, either remove the tabindex attribute from those elements, move them outside the ARIA parent, or replace them with a semantically correct interactive child (e.g. a role="menuitem" wrapping the image).
  5. Use native HTML elements wherever possible instead of ARIA roles: <ul>/<li> for lists, <nav> for navigation, <button> for actions — native elements carry the correct implicit roles and permitted child rules automatically, eliminating this class of error.
  6. Re-test with an accessibility scanner (axe DevTools browser extension or Lighthouse) and a screen reader (NVDA + Firefox or VoiceOver + Safari) to confirm the violation is resolved and the content is announced correctly.
<!-- ❌ WRONG: img with tabindex is not a valid child of role="list" -->
<ul role="list">
  <img src="product.jpg" alt="Blue Widget" tabindex="0">
</ul>

<!-- ✅ CORRECT: wrap the image in a proper listitem -->
<ul>
  <li>
    <a href="/products/blue-widget">
      <img src="product.jpg" alt="Blue Widget">
    </a>
  </li>
</ul>

<!-- ❌ WRONG: a[tabindex] as direct child of role="menu" -->
<div role="menu">
  <a href="/sale" tabindex="0">Sale</a>
</div>

<!-- ✅ CORRECT: give the child the required menuitem role -->
<div role="menu">
  <a href="/sale" role="menuitem">Sale</a>
</div>

Fix it on your platform

Pick your platform for the exact steps.

How to fix aria required children on Shopify
  1. From your Shopify Admin, go to Online Store → Themes → (your active theme) → Actions → Edit code.
  2. The most common sources of ARIA child violations are in Sections or Snippets. Search the file list for files likely to contain menus, product grids, or carousels (e.g. header.liquid, collection-list.liquid, featured-collection.liquid, slideshow.liquid).
  3. In the relevant .liquid file, search for role= attributes using Cmd/Ctrl+F. Check each parent role element and verify its children match the permitted child roles per the WAI-ARIA spec.
  4. To fix img[tabindex] or a[tabindex] inside a restricted parent: either remove the tabindex attribute from the child, add the correct child role (e.g. role="menuitem") to the <a> tag, or restructure to use semantic HTML (<ul>/<li>, <nav>, <button>).
  5. Save the file, then preview your store and re-run axe DevTools (browser extension) to confirm the violation is cleared.
  6. If the issue comes from a third-party app (e.g. a mega-menu or carousel app), contact the app developer — you cannot edit app-injected code directly from the theme editor.
How to fix aria required children on Shopify Plus
  1. Follow the same steps as Shopify above. Shopify Plus merchants using custom storefronts (Hydrogen/Remix) should fix the issue in the React component file that renders the affected element.
  2. In Hydrogen, locate the component (e.g. Navigation.tsx, ProductGrid.tsx) and replace ARIA role combinations with semantic HTML or correctly paired role/child-role attributes.
  3. Deploy via your standard CI/CD pipeline and verify with axe DevTools.
How to fix aria required children on WooCommerce
  1. The violation is almost always in your active WordPress theme's template files or a page-builder block. Go to Appearance → Theme File Editor (or use a child theme via FTP/SFTP).
  2. Search theme files (header.php, functions.php, or relevant template parts in /template-parts/) for role= attributes. Look in navigation menus, product loops, or slider shortcodes.
  3. To edit safely, create or use a child theme: copy the relevant parent template file into your child theme folder, then edit it there so updates don't overwrite your fix.
  4. If the issue is inside a Gutenberg block or page-builder (Elementor, Divi, etc.), edit the block/section: remove or replace the offending tabindex attributes, or switch to a semantic HTML element (e.g. change a <div role="list"> to a <ul>).
  5. For plugin-generated markup (e.g. WooCommerce core product grid), use a template override: copy woocommerce/templates/[relevant-template].php to your-theme/woocommerce/[relevant-template].php and correct the markup there.
  6. Re-test with axe DevTools browser extension after saving.
How to fix aria required children on BigCommerce
  1. Go to Storefront → My Themes → (active theme) → Advanced → Edit Theme Files (Stencil CLI) or use the in-browser editor for Cornerstone-based themes.
  2. Search your templates/ and templates/components/ directories for role= attributes (common locations: header.html, navigation.html, product-listing.html, carousel.html).
  3. Correct the ARIA parent/child mismatch: add the required child role attribute or restructure to use native HTML elements (<ul>/<li> instead of <div role="list">/<div>).
  4. Remove any tabindex attributes from img or a elements that sit directly inside a restricted ARIA parent role.
  5. Bundle and push the updated theme using Stencil CLI (stencil push) or save via the in-browser editor, then verify with axe DevTools.
How to fix aria required children on Wix
  1. Open the Wix Editor and click on the element that contains the flagged ARIA structure (e.g. a menu, gallery, or repeater).
  2. Wix generates most ARIA markup automatically; if the violation comes from a Wix-native widget (e.g. Wix Menu, Wix Pro Gallery), you cannot edit the underlying HTML directly. File a bug report via Wix Support so Wix's engineering team can fix the widget.
  3. If you are using Wix Blocks or a custom widget built with Velo (Wix's JavaScript API): open the Dev Mode panel, locate the relevant component, and update the role and tabindex attributes in the component's HTML/CSS settings or in the Velo $w() event code.
  4. For Velo-generated elements, use $w('#myElement').setAttribute('role', 'menuitem') and remove tabindex with .removeAttribute('tabindex') as needed.
  5. Preview the site and test with axe DevTools to confirm the fix.
How to fix aria required children on Wix Studio
  1. Open Wix Studio and select the component (e.g. a custom menu or gallery block) that contains the ARIA violation.
  2. If the component is a native Wix Studio widget, the ARIA is system-generated — report the issue to Wix Studio support. For custom components built with Studio's Dev Mode, open the code panel.
  3. In the custom component code, correct the role attributes: ensure each child element has the role required by its parent (e.g. children of role="menu" must have role="menuitem").
  4. Remove tabindex from img or a elements that are invalid children of the parent ARIA role; add it to the correctly-roled element instead.
  5. Publish and verify with axe DevTools.
How to fix aria required children on Squarespace
  1. Squarespace controls most structural HTML — if the violation is in a native Squarespace block (navigation, gallery, etc.), you must work around it via Code Injection or report it to Squarespace support.
  2. Go to Website → Pages → (affected page) → Edit → click the block causing the issue → Block Settings. Check if a custom HTML block or Code Block is introducing a role= attribute and correct it there.
  3. For site-wide injection (e.g. a custom navigation script), go to Website → Website Tools → Code Injection. Locate any script or HTML snippet that sets role= and fix the parent/child role pairing.
  4. In Squarespace 7.1, go to Design → Custom CSS for CSS-only changes; for structural HTML fixes in Developer Mode (7.0), edit the relevant .region or .block template file in your connected Git repository.
  5. Remove tabindex from any img or a that sits inside a restricted ARIA parent in your injected code. Re-test with axe DevTools.
How to fix aria required children on Webflow
  1. Open the Webflow Designer and select the element that is the ARIA parent (the element with the role= attribute).
  2. In the right-hand Settings panel (the gear icon), scroll to the Custom Attributes section. Review the role value and ensure its child elements carry the correct child roles.
  3. Select each child element and, in its own Settings panel Custom Attributes, add the required role attribute (e.g. role: menuitem for children of a menu).
  4. To fix tabindex on an img or a inside a restricted parent: select the child element → Settings → Custom Attributes, find tabindex and delete it, or move the focusable behavior to a correctly-roled wrapper element.
  5. Prefer Webflow's native semantic elements (Navbar, List, List Item) over custom div+role combinations — they output the correct ARIA structure automatically.
  6. Publish and verify with axe DevTools in your browser.
How to fix aria required children on Adobe Commerce (Magento)
  1. Identify the affected template file using Magento's template hints (Stores → Configuration → Advanced → Developer → Debug → Enable Template Path Hints for Storefront).
  2. Copy the flagged template from vendor/magento/module-[ModuleName]/view/frontend/templates/ into your custom theme at app/design/frontend/[Vendor]/[Theme]/Magento_[ModuleName]/templates/ — never edit core files directly.
  3. Open the copied .phtml file, locate the element with the parent role= attribute, and correct the child role pairings or remove disallowed tabindex attributes from img/a children.
  4. If the violation is in a custom module or third-party extension template, copy it into your theme override path following the same pattern and correct it there.
  5. Run bin/magento cache:flush after saving. Verify the fix in your browser with axe DevTools and check the Accessibility panel in Chrome DevTools.
How to fix aria required children on Magento Open Source
  1. Follow the same steps as Adobe Commerce above — the template override mechanism is identical in Magento Open Source.
  2. Use bin/magento cache:flush after any template change.
  3. Verify with axe DevTools browser extension.
How to fix aria required children on PrestaShop
  1. Go to your PrestaShop back office → Design → Theme & Logo → (active theme). The template files live in /themes/[your-theme]/templates/.
  2. Use FTP/SFTP or your hosting file manager to open the relevant .tpl (Smarty) template (e.g. _partials/header.tpl, catalog/listing/product-list.tpl).
  3. Locate the parent ARIA role, check its children, and add the missing child role attributes or remove the disallowed tabindex from img/a elements.
  4. Clear PrestaShop's cache via Advanced Parameters → Performance → Clear Cache, then re-test with axe DevTools.
How to fix aria required children on OpenCart
  1. Connect via FTP/SFTP to your server. Template files are in catalog/view/theme/[your-theme]/template/.
  2. Identify the relevant .twig or .tpl file (e.g. common/header.twig, product/category.twig).
  3. Edit the file to add the correct child role attributes to children of ARIA parent roles, or remove tabindex from img/a elements that are illegal children.
  4. Save the file and hard-refresh your browser. Test with axe DevTools.

Does your site have this issue?

Run a free SEOLZ audit to find aria required children — and every other issue — across your whole site in minutes.

Scan my site free

Frequently asked questions

What is Aria required children?

ARIA (Accessible Rich Internet Applications) roles tell screen readers and other assistive technologies what a piece of your page is — a list, a menu, a tab panel, etc. Each parent role has a strict set of child roles it is allowed to contain. For example, a `list` role must contain `listitem` children; a `menu` must contain `menuitem` children. When you nest elements that don't belong — such as a plain image or link with a `tabindex` attribute — directly inside a parent ARIA role, assistive technologies get confused and may skip content, announce it incorrectly, or break keyboard navigation entirely. The WCAG 1.3.1 criterion ("Info and Relationships") requires that the structure you see visually is faithfully conveyed in code so every user, regardless of ability, gets the same information.

Why does aria required children matter?

Screen-reader users — roughly 7–8 million people in the US alone — rely on correct ARIA structure to navigate your store. A broken ARIA parent/child relationship can cause product listings, navigation menus, carousels, or tab panels to become completely invisible or unreadable to assistive technology, directly costing you sales from customers with disabilities. Beyond lost revenue, WCAG 1.3.1 failures are frequently cited in ADA Title III accessibility lawsuits against online retailers; a documented violation increases your legal exposure. Google also uses accessibility signals as a quality indicator, so persistent structural errors can subtly suppress your organic rankings over time.

How do I fix aria required children?

Ensure every ARIA parent role contains only its required, permitted child roles — and remove focusable elements (e.g. tabindex on img or a) that are not allowed inside that ARIA context.

Authoritative references

Related Accessibility (WCAG) issues