← All criteria
1.3.1 (tables)Level AWCAG 2.0Auto-fix: Partial

Info and Relationships — semantic tables

Tabular data must use semantic table markup (`<table>`, `<thead>`, `<tbody>`, `<th scope>`, `<td>`) so screen readers can navigate the data with row/column header context.

What it requires

A focused subsection of WCAG 1.3.1 covering tabular data specifically. Visual users see a grid; screen-reader users navigate by cell with each cell announced as "row 3, column 2, [header label], [cell value]". This requires real `<table>` markup with `<th scope="col">` and `<th scope="row">`.

Common failure: `<div class="grid">` styled to look like a table but rendering with no row/column header context to assistive technology. Browsers + screen readers cannot recover the table semantics from the visual styling.

Common Shopify failure

Nutrition-facts panel on food merchant's product page rendered as styled `<div>` grid. Spec table on electronics merchant's product page rendered as flexbox layout. Comparison-matrix block from a page-builder app rendered as nested divs.

How to fix it

AccessComply detects grid-styled non-semantic tables via heuristic (rectangular grid + numeric content + header-like first row) and rewrites them to semantic `<table>` markup with `<th scope="col">` and `<th scope="row">` declarations.

Primary source: W3C — WCAG 2.0 Understanding 1.3.1 (tables)