Heading hierarchy present and logical; no skipped heading levels on any page
Why it matters
Screen readers expose a page outline built entirely from heading elements. Users—especially blind users navigating long pages—jump between headings using the H key to skim structure. A heading hierarchy that skips levels (H1 → H3, H2 → H4) breaks this outline, making the document feel structurally incoherent and forcing users to re-navigate to understand context. WCAG 2.2 SC 1.3.1 (Level A) requires information conveyed through structure to be programmatically determinable, and SC 2.4.6 (Level AA) requires headings to be descriptive. Section 508 2018 Refresh 502.3.6 incorporates both.
Severity rationale
High because a broken heading hierarchy disrupts the primary navigation mechanism for screen reader users on content-heavy pages, though it does not prevent access to individual elements.
Remediation
Audit the heading structure of each page using browser DevTools (Accessibility tab) or the axe extension, then restructure to enforce sequential levels. Never skip from H1 to H3 or H2 to H4:
{/* Correct: sequential nesting */}
<h1>Documentation</h1>
<h2>Getting Started</h2>
<h3>Installation</h3>
<h3>Configuration</h3>
<h2>API Reference</h2>
<h3>Authentication</h3>
<h4>OAuth Flow</h4>
If a heading level looks visually wrong after correction, fix the style, not the hierarchy:
/* Style H3 to look large without breaking hierarchy */
h3.section-title { font-size: 1.5rem; font-weight: 700; }
Never choose a heading tag for its default visual size—use CSS instead.
Detection
- ID:
heading-hierarchy - Severity:
high - What to look for: Count all relevant instances and enumerate each. Check all heading tags (
<h1>,<h2>,<h3>,<h4>,<h5>,<h6>) across every page route. Verify that heading levels are sequential — no jumps (e.g., H1 directly to H3, or H2 directly to H4). Examine both static layout files and page-specific content. - Pass criteria: Heading levels follow a logical sequence on every page. At least 1 implementation must be verified. No level is skipped. An H3 only appears after an H2, an H4 only after an H3, and so on.
- Fail criteria: Any page has a heading level skip (e.g., H1 followed by H3 with no H2 in between).
- Skip (N/A) when: Never — heading hierarchy applies to all pages with content.
- Detail on fail: Identify the specific hierarchy violation. Example:
"On /docs, the H1 'Documentation' is followed directly by an H3 'Installation' with no H2 in between. Later, an H2 'API Reference' appears, then H4 'GET /users' with no H3 bridging the levels." - Remediation: Screen readers use heading hierarchy to build an outline of the page's content. Reorganize headings to follow a sequence:
<h1>Documentation</h1> <h2>Getting Started</h2> <h3>Installation</h3> <h3>Configuration</h3> <h2>API Reference</h2> <h3>Users</h3> <h4>GET /users</h4>
External references
- wcag:2.2 · 1.3.1 — Info and Relationships
- wcag:2.2 · 2.4.6 — Headings and Labels
- section-508:2018-refresh · 502.3.6 — Label Relationships
Taxons
History
- 2026-04-18·v1.0.0·Initial import from gov-section-508·automated