AccessLumens

WCAG 1.3.1

Info and Relationships

CriticalLevel AWCAG 2.0EAA enforcement-relevant

28.4%

of the 609 sites we scanned fail this

Ranging from 23% of Indian financial services to 46.7% of Shopify DTC stores. Pooled across five targeted cohorts, so treat it as a convenience sample rather than a rate for the web.

Separately, 90.5% of the 941 county government PDFs we scanned fail it (852 documents). That is a different population from the sites above, so the two figures are not comparable. How we scanned the PDFs

What it means and how to fix it

What 1.3.1 covers

  • We detect this: Lists built from divs instead of list items
  • We detect this: ARIA roles missing their required parent or child roles
  • Partly detected: Data tables with no header cells, or headers not associated with their dataWe check that header cells have scope and data cells beneath them. We cannot tell a layout table from a data table when neither is marked up, so a table with no semantics at all can pass silently.
  • Partly detected: Form fields whose visible label is not programmatically associatedA field with no accessible name at all is detected. A field whose label sits beside it visually but is wired to the wrong input is not, because both look correct to a machine.
  • No engine can detect this: Headings faked with styled divs instead of h1 to h6A div styled to look like a heading is indistinguishable from a div to any engine. This is the single most common 1.3.1 failure we cannot measure, and it is why the rate on this page is a floor.
  • No engine can detect this: Relationships conveyed only by visual position or proximityDeciding that two things look related requires seeing the page as a person does.

Of that, 5 failures are detectable automatically, and these are what the rates on this page measure. Each needs its own fix. The percentage is the share of all 609 scanned sites affected. These do not sum to the 28.4% above: a site can fail more than one of them, and most that fail any fail several. A further 2 failures were detected on fewer than five sites each and are not listed.

  • A list isn't built correctly13.3%

    Screen readers can't announce the list or its item count, so people lose the "list, 5 items" cue that tells them how much is there, and can't jump between items by list.

  • A list role is missing its required child roles12.2%

    Screen readers announce the container as a list but find no list items inside it, so users hear an empty or broken list and may skip past the content entirely.

  • A list item sits outside any list9%

    List items placed outside a list element may not be announced correctly by screen readers.

  • A role is missing the parent role it needs8.2%

    Roles like menuitem and option only mean anything inside their parent. Without it the widget is announced as unstructured text and its item count is lost.

  • The whole page is hidden from assistive technology3.1%

    Hiding the body removes the entire page from the accessibility tree, so a screen reader reports an empty document. It's usually a modal script that failed to clean up after itself.

What it looks like in code

HTML
Fails
<ul>
  <div>
    <div>...</div>
  </div>
</ul>
Passes
<ul>
  <li>First item</li>
  <li>Second item</li>
</ul>

Only <li>, <script> and <template> may be direct children of a <ul> or <ol>. A <div> wrapper between the list and its items breaks the parent-child relationship a screen reader relies on to announce "list, 2 items".

Shown for A list isn't built correctly. The failing example is real markup from a site in our research cohorts. Class, style and data attributes are removed, and ... marks a value we elided. The structure is unchanged, because the structure is the failure.

For what the criterion formally requires, read the W3C Understanding document.

How often it fails

Shopify DTC stores35/75
46.7%
US healthcare providers59/208
28.4%
US local government39/158
24.7%
EU e-commerce26/107
24.3%
Indian financial services14/61
23%

Share of scanned sites in each cohort. These are five targeted studies, not a random sample of the web, so read the contrast between cohorts rather than any one figure as a web-wide rate.

Who fails it most3 cuts by retail vertical, CMS vendor, state

By retail vertical

fitness11/14
78.6%
beauty8/13
61.5%
apparel8/18
44.4%
home5/16
31.3%
food3/14
21.4%

By CMS vendor

civicplus19/32
59.4%
municode4/17
23.5%
other5/23
21.7%
drupal4/20
20%
unknown2/15
13.3%
wordpress1/8
12.5%
granicus2/37
5.4%

By state

MO4/8
50%
TX6/13
46.2%
OH3/8
37.5%
FL4/15
26.7%
CA6/25
24%
NY1/8
12.5%
LA1/9
11.1%
KS0/10
0%

Groups smaller than 8 sites are not shown: a rate over a handful of sites moves by tens of points on a single result.

What the numbers do not say

The sharpest single result in our corpus sits on this criterion. Among US city sites, 59.4% of those running CivicPlus fail it against 5.4% of those running Granicus. Same criterion, same scan, same year, an order of magnitude apart. A city inherits most of its accessibility from a procurement decision made before anyone wrote a page, which is worth knowing before blaming the web team.

What this does not measureLimits of these figures, and where the corpus came from
  • These are five targeted cohorts, not a random sample of the web. Per-cohort rates are the figure to quote; the pooled rate is a convenience sample.
  • Denominators count sites that produced a result. Sites that were blocked or errored are excluded rather than counted as passing.
  • Occurrence counts are floors: the engine records at most 25 occurrences of a rule per page.
  • The EU and Indian cohorts retained only the primary success criterion per finding, so a rule mapping to several criteria contributes to one of them in those two cohorts and to all of them in the other three.
Cohorts in the corpus, with sites scanned and attempted
CohortScannedAttempted
Shopify DTC stores7575
US local government158221
US healthcare providers208218
EU e-commerce107170
Indian financial services6172

Corpus generated 2026-09-18.

Check your own site

A free scan reports WCAG 1.3.1 alongside everything else, with the exact elements that fail.

Run a free scan

All accessibility rules and WCAG criteria