- Success Criterion 1.3.1
- Conformance level A
Data Grid Built From Divs Instead of Real Table Markup
1.3.1 — Info and Relationships
Scenario
Setting
A food delivery app's restaurant menu
What’s wrong
Data presented visually as a table (CSS grid / div rows and columns) with no table semantics — never announced as a table.
Example
Consider a food delivery app's restaurant menu: data presented visually as a table (CSS grid / div rows and columns) with no table semantics — never announced as a table.
Why it matters
Screen-reader, braille, and reading-tool users who depend on coded structure rather than visual layout. On a food delivery app's restaurant menu specifically, they can't navigate the content by its real structure.
How to test
Inspect a visual grid of cards/data in DevTools: if it's built from divs with no table/grid ARIA role, a screen reader announces it as plain unstructured text.
How to fix
Mark up data grids as real tables (table/th/td or ARIA table roles) so rows and columns are navigable.
Outcome
Fixed, a visitor to a food delivery app's restaurant menu can move through the content with confidence.
Who is affected
Screen-reader, braille, and reading-tool users who depend on coded structure rather than visual layout.
Learn more
- Understanding Understanding document (opens in a new tab)
Related scenarios
- Text Styled to Look Like a Heading Instead of Coded as One
- Text Columns Faked With Spaces Instead of Real Table Markup
- Table Layout Faked With Spaces Instead of Real Table Code
- Clickable Div Acting as a Link Button With No Real Role
- Structural HTML Tags Used Purely for Visual Styling
- Layout-Only Table Wrongly Coded With Real Header Cells