- Success Criterion 1.3.1
- Conformance level A
Heading Levels Skipped or Chosen Only for Font Size
1.3.1 — Info and Relationships
Scenario
Setting
A weather app's forecast screen
What’s wrong
Heading levels skipped or chosen for styling (h1→h4), or multiple unrelated h1s obscuring structure.
Example
<h1>Weather</h1>
<h4>Today</h4>
<h1>Tomorrow</h1>
<h4>Hourly</h4> Why it matters
A screen reader user scanning by heading level jumps from h1 to h4 and back to h1. The forecast's real hierarchy never comes through.
How to test
Use a screen reader's headings list (NVDA Insert+F7, VoiceOver Rotor): check heading levels go in order (h1, then h2s, no skipped levels) and reflect the visual outline, not font sizes.
How to fix
Pick heading levels for their place in the outline, never for the font size they happen to produce.
<h1>Weather</h1>
<h2>Today</h2>
<h2>Tomorrow</h2>
<h3>Hourly</h3> Outcome
Today and Tomorrow now sit at the same outline level, so a user compares the two days without confusion.
Who is affected
Screen reader users navigating the forecast by heading level lose track of which sections nest under which.
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