Listitem
Quick winFound on 13% of audited stores.
Wrap every `<li>` element in a proper `<ul>` or `<ol>` parent so screen readers and browsers can correctly identify and announce list structure.
What it is
In HTML, a list item (`<li>`) is only meaningful when it lives inside a list container — either an unordered list (`<ul>`) or an ordered list (`<ol>`). When a `<li>` tag appears on its own, without that parent wrapper, the HTML is technically invalid and breaks the expected structure. This often happens when a developer copies a navigation menu, product feature list, or footer links and accidentally removes the surrounding `<ul>` or `<ol>` tags, or when a theme or page-builder outputs `<li>` tags outside of a proper list container.
Why it matters
Screen readers used by blind and low-vision shoppers rely on correct list structure to announce items as "list of 5 items" and let users jump between them efficiently. An orphaned `<li>` breaks that experience — the screen reader may skip the item entirely or read it confusingly, making navigation menus, feature bullet points, and product lists unusable. This violates WCAG 2.1 Success Criterion 1.3.1 (Info and Relationships), which is a Level A requirement — the lowest acceptable bar — meaning failing it creates real legal risk under laws like the ADA (US), AODA (Canada), and EAA (EU). Beyond legal exposure, an inaccessible store loses business from the estimated 1-in-5 shoppers who have a disability, and invalid HTML can subtly harm how search engines parse and index your page content.
How to fix it
- Identify every `<li>` element on the page that does NOT have a `<ul>` or `<ol>` as its direct parent — your scanner will flag the specific location.
- Open the relevant template, theme file, or page-builder block that outputs that HTML.
- Wrap the orphaned `<li>` element(s) in the correct list tag: use `<ul>` for unordered/bulleted items (navigation links, feature lists) or `<ol>` for numbered/sequential items (steps, rankings).
- If the `<li>` was placed outside its list by mistake (e.g. a stray closing `</ul>` too early), find and restore the missing closing tag so all `<li>` items fall inside the container.
- If custom CSS was used to style a `<li>` without needing list semantics at all, replace the `<li>` with a `<div>` or `<span>` and restyle — only use `<li>` when the content is genuinely a list item.
- Re-test the page with a browser accessibility checker (e.g. axe DevTools browser extension) to confirm the violation is resolved.
<!-- ❌ WRONG: <li> with no list parent -->
<li>Free shipping over $50</li>
<li>30-day returns</li>
<!-- ✅ CORRECT: <li> items wrapped in <ul> -->
<ul>
<li>Free shipping over $50</li>
<li>30-day returns</li>
</ul>
<!-- ✅ CORRECT for navigation menus -->
<nav aria-label="Main">
<ul>
<li><a href="/shop">Shop</a></li>
<li><a href="/about">About</a></li>
</ul>
</nav>Fix it on your platform
Pick your platform for the exact steps.
How to fix listitem on Shopify
- Go to Online Store → Themes → click the '…' menu next to your active theme → Edit code.
- Use the search box (top-left of the code editor) to search for '<li' across all files to locate orphaned list items.
- The most common locations are: 'sections/' files (e.g. header.liquid, footer.liquid, announcement-bar.liquid), 'snippets/' files, and 'layout/theme.liquid'.
- In the offending file, find the bare `<li>` tag(s) and add a `<ul>` opening tag immediately before the first `<li>` and a `</ul>` closing tag after the last `</li>`.
- If you use a page builder app (e.g. PageFly, GemPages, Shogun), open that app, find the block containing the list, and switch to its HTML/code editor view to wrap the items.
- Click Save, then re-test with the axe browser extension.
How to fix listitem on WooCommerce
- In your WordPress dashboard, go to Appearance → Theme File Editor (or use a child theme via FTP/SFTP).
- Search template files for orphaned `<li>` tags — common culprits are header.php, footer.php, functions.php widget output, or page-builder shortcode output.
- If the issue is in a widget (e.g. Custom HTML Widget), go to Appearance → Widgets, open the affected widget, and wrap the `<li>` items in `<ul>…</ul>` directly in the widget's HTML field.
- If you use a page builder (Elementor, Divi, WPBakery), open the page, find the element, switch to its HTML/code edit mode, and add the missing `<ul>` wrapper.
- If using a block-theme (Full Site Editing), go to Appearance → Editor → find the template part (e.g. Header, Footer) and edit the HTML block.
- Save changes and verify with the axe DevTools browser extension.
How to fix listitem on BigCommerce
- Go to Storefront → Themes → click Customize on your active theme, then Advanced → Edit Theme Files (opens the Stencil theme editor), or download the theme via Theme Editor → Download.
- Search your template files (typically in 'templates/components/' and 'templates/layout/') for `<li>` tags missing a `<ul>` or `<ol>` parent.
- Open the relevant '.html' template file (e.g. 'templates/components/header.html', 'templates/components/footer.html') and wrap orphaned `<li>` elements with `<ul>…</ul>`.
- If using Page Builder widgets, go to Storefront → Pages, open the affected page, click Edit, find the HTML widget with the issue, and update the markup.
- Upload or save the corrected theme file and preview before publishing.
- Verify the fix with the axe browser extension.
How to fix listitem on Adobe Commerce (Magento)
- Identify the offending template file using the Layout/Template hints tool: Stores → Configuration → Advanced → Developer → Debug → enable Template Path Hints for Storefront.
- Navigate to the flagged page on the frontend; the hint overlay will show the exact .phtml file responsible (e.g. 'Magento_Theme/templates/html/header.phtml' or a custom module template).
- Edit that .phtml file in your custom theme directory (app/design/frontend/Vendor/theme/), locating the orphaned `<li>` and wrapping it in `<ul>…</ul>`.
- If using Page Builder (Magento 2.4+), go to Content → Pages or Blocks, open the item, switch to the HTML Code content type, and correct the markup there.
- Run 'bin/magento cache:clean' after saving the file, then reload the page.
- Verify with the axe browser extension and disable Template Path Hints when done.
How to fix listitem on Wix
- Open the Wix Editor for the affected page.
- If the list is inside a Wix HTML iframe element (Add → Embed → HTML iFrame / Embed a Widget), click on that element and select 'Enter Code' to open the HTML editor — find the bare `<li>` tags and wrap them in `<ul>…</ul>`.
- If the list is inside a Velo (Wix Code) custom component, open the Developer Tools panel → select the relevant .js or component file and correct the HTML string being rendered.
- For standard Wix text or list elements (not custom HTML), replace any manually typed bullet lines with Wix's built-in List formatting (select text → Format → Bulleted List or Numbered List) which outputs correct semantic HTML automatically.
- Publish the site and verify with the axe browser extension.
How to fix listitem on Squarespace
- In the Squarespace editor, navigate to the page or section with the issue.
- If the `<li>` is inside a Code Block (Insert → Code), click Edit on that block and wrap the orphaned `<li>` items in `<ul>…</ul>` in the code editor.
- If the issue is in a text block, avoid manually typing list items as plain text — instead use the text editor's List button (bulleted or numbered) to create proper list formatting, which outputs valid `<ul>/<li>` HTML.
- For Squarespace 7.1 sites using Custom CSS or Code Injection (Settings → Advanced → Code Injection), check the header/footer injection areas for any stray `<li>` tags and fix them there.
- Save and preview the page, then verify with the axe browser extension.
How to fix listitem on Webflow
- Open the Webflow Designer for your project.
- In the Navigator panel (left sidebar), find the `List Item` element that is not nested inside a `List` element.
- Select the orphaned List Item, then in the Navigator drag it inside an existing List element, OR add a new List element (Add Elements panel → List) and nest the List Item inside it.
- Alternatively, switch to the page's Embed element (if the `<li>` is in a custom HTML Embed block), click the </> icon to open the HTML editor, and add the `<ul>` wrapper manually.
- Publish the site and use the axe browser extension to confirm the fix.
Does your site have this issue?
Run a free SEOLZ audit to find listitem — and every other issue — across your whole site in minutes.
Scan my site freeFrequently asked questions
What is Listitem?
In HTML, a list item (`<li>`) is only meaningful when it lives inside a list container — either an unordered list (`<ul>`) or an ordered list (`<ol>`). When a `<li>` tag appears on its own, without that parent wrapper, the HTML is technically invalid and breaks the expected structure. This often happens when a developer copies a navigation menu, product feature list, or footer links and accidentally removes the surrounding `<ul>` or `<ol>` tags, or when a theme or page-builder outputs `<li>` tags outside of a proper list container.
Why does listitem matter?
Screen readers used by blind and low-vision shoppers rely on correct list structure to announce items as "list of 5 items" and let users jump between them efficiently. An orphaned `<li>` breaks that experience — the screen reader may skip the item entirely or read it confusingly, making navigation menus, feature bullet points, and product lists unusable. This violates WCAG 2.1 Success Criterion 1.3.1 (Info and Relationships), which is a Level A requirement — the lowest acceptable bar — meaning failing it creates real legal risk under laws like the ADA (US), AODA (Canada), and EAA (EU). Beyond legal exposure, an inaccessible store loses business from the estimated 1-in-5 shoppers who have a disability, and invalid HTML can subtly harm how search engines parse and index your page content.
How do I fix listitem?
Wrap every `<li>` element in a proper `<ul>` or `<ol>` parent so screen readers and browsers can correctly identify and announce list structure.
Authoritative references
- How to fix this specific rule — Deque/axe (rule reference)
- WCAG 2 overview — W3C WAI
- ARIA basics — MDN