Skip to main content
📄 HTML & the platform·Module A2 · Lesson 6
fix_eyebrowThis blog page has two heading-hierarchy bugs. (1) It uses TWO <h1> on the same page; collapse the second one to <h2>. (2) After the 'Main argument' h2 the page jumps straight to <h4> — fix it to <h3>. The final document should have exactly one h1, three h2 siblings ('Intro', 'Main argument', 'Conclusion'), and two h3 ('For', 'Against') under the second h2.

Heading hierarchy: one h1, never skip levels

100 XP8 min
Theory

Two rules screen readers enforce strictly

Rule 1: One `<h1>` per page. It identifies what the page is about. Two h1s confuse screen-reader users who navigate by heading shortcut (the equivalent of "skip to next heading"). Lighthouse will warn.

Rule 2: Don't skip heading levels going down. Going from <h1> to <h3> skips h2 — confusing both screen readers and outline parsers.

<!-- ✓ Good -->
<h1>Blog post title</h1>
  <h2>Introduction</h2>
  <h2>The argument</h2>
    <h3>Sub-point</h3>
    <h3>Counter-argument</h3>
  <h2>Conclusion</h2>

<!-- ✗ Bad — h1 → h3 -->
<h1>Title</h1>
  <h3>Sub-point</h3>

<!-- ✗ Bad — two h1s -->
<h1>Site name</h1>
<main>
  <h1>This page</h1>
</main>

Common pattern: site logo is NOT the h1

In a real site, your logo is in the header but the <h1> belongs to the page-specific content inside <main>. The logo is just a link, not the page topic.

<header>
  <a href="/"><img alt="MyApp" /></a>
</header>
<main>
  <h1>Pricing</h1>
  …
</main>

Going back UP is fine

Skipping back up is OK: h3h2 is normal (next section). Only the going DOWN direction matters.

🔒

Sign up to start coding

Theory is open to everyone. The interactive editor, live preview, and check are unlocked with a 7-day free trial — card required, cancel anytime.

Sign up — free trial →

First 10 lessons in each track are free. No card needed for those.

PreviousNext lesson →

Get one Python or web tip a day — by email

Short, hand-written, no spam. Unsubscribe in one click.