1.3.1Info and Relationships
Information, structure, and relationships conveyed through presentation must be programmatically determined (in the code) or available in text.
Patterns that fail this criterion.
- 01Visual headings styled with `<div>` instead of `<h1>-<h6>`
- 02Lists rendered with `<br>` separators instead of `<ul>/<ol>`
- 03Tables without `<th>` scope attributes for header relationships
- 04Form fields with placeholder-as-label (placeholder disappears on focus, no programmatic label)
- 05Group of radio inputs without `<fieldset>` + `<legend>`
Testing approach: semi automated.
Automated catches missing labels, empty headings, table structure issues. Manual confirms visual-vs-semantic alignment (e.g. is this `<div>` actually used as a heading?).
axe-core rules
definition-listdlitemlistlistitemtable-fake-captionth-has-data-cellslabelform-field-multiple-labelsRemediation steps.
- 1
Use semantic HTML
Headings = `<h1>`-`<h6>`, lists = `<ul>/<ol>`, tables = `<table>` with `<th scope="col"|"row">`, forms = `<label for>`.
- 2
Group related fields
Wrap radio/checkbox groups in `<fieldset>` with `<legend>` describing the group purpose.
- 3
Where HTML semantics are insufficient
Use ARIA carefully — `role="region"`, `aria-labelledby`, `aria-describedby` — but native HTML always first.
Find every violation in 42 seconds.
AccessProof runs axe-core 4.9.1 against your site and flags every WCAG criterion with the offending element selector. WCAG 1.3.1 is one of 49 criteria we check on every scan.
All 50 WCAG 2.1 Level A + AA success criteria explained.
View the full checklist