Why this matters
Screen readers announce list structure — 'list of 5 items'. This helps users understand grouped content like navigation menus, steps, and feature lists. Invalid list markup breaks this announcement and can cause screen readers to skip content entirely.
Code examples
✗ Incorrect — fails WCAG
<ul> <div class="item">First item</div> <p>Second item</p> </ul>
✓ Correct — passes WCAG
<ul> <li>First item</li> <li>Second item</li> </ul> <!-- Wrapping divs go inside li --> <ul> <li><div class="item">First item</div></li> <li><div class="item">Second item</div></li> </ul>
How to fix it — step by step
- 1Only put <li> elements as direct children of <ul> and <ol>
- 2You can put divs and other elements inside the <li>, just not directly in the list
- 3For navigation menus, wrap links in <li> elements inside a <ul>
- 4Use <ol> for ordered/numbered lists, <ul> for unordered lists
- 5Use <dl> (definition list) for name-value pairs like glossaries or metadata
- 6Don't use list elements just for visual indentation — use CSS margin/padding instead
Reference: WCAG 2.2 Success Criterion 1.3.1 (Level A)
Test it for free
Use WebPossum to automatically detect this violation and every other WCAG 2.2 issue on your site. Free, instant, no signup required.