Get in touch

Heading hierarchy: what H1, H2 and H3 actually do

Updated August 19, 2026 · 7 min read · Search intent : informational · Architecture

Heading tags are not a ranking factor in themselves. They do something more consequential: they describe the logical structure of the page, and that structure drives passage extraction, section links and screen reader navigation.

Document outline built from heading levels
Document outline built from heading levels

What each level does

TagRoleCount per page
h1The page subject, in one line1
h2Main sections, self-contained units of meaning4–9
h3Subdivisions within a section0–4 per h2
h4+Rare; usually signals an over-deep outlineAvoid

An H2 should read standalone and still make sense. That is the most reliable test: if a section heading only means something after reading the previous section, it is not an H2.

The H1: one rule that matters

One H1 per page, distinct from the <title> but consistent with it. The title addresses the SERP — short, clickable, constrained by display width. The H1 addresses the reader who has already arrived and can be longer and more explicit.

title : Heading hierarchy: what H1, H2 and H3 actually do
h1    : Heading hierarchy: what H1, H2 and H3 actually do

Where the rendering template emits the H1 itself — as server-side rendered blog architectures typically do — the stored body HTML must not contain a second one. Duplicate H1s are among the most common defects in generated batches, and they come from exactly this mismatch.

Five hierarchy mistakes in generated batches

  1. Skipping a level. An h4 directly after an h2 breaks the document outline and screen reader navigation.
  2. Using a heading for styling. Choosing h3 because the font size looks right. Styling belongs in CSS.
  3. Generic H2s. "Introduction", "Conclusion", "Final thoughts" say nothing about the content beneath them.
  4. The same outline on 500 pages. If every H2 is identical across the batch, the structure becomes a detectable repeating pattern — see the scaled content policy.
  5. Headings with no id. Without an id, no section links and no generated table of contents.

A heading template for a generated batch

h1  {primary intent, in natural language}
h2  {definition or framing}        — fixed
h2  {main decision criterion}      — varies by entity
h3    {sub-criterion A}            — varies
h3    {sub-criterion B}            — varies
h2  {implementation}               — semi-fixed
h2  {edge cases}                   — varies, drawn from data
h2  {frequently asked questions}   — fixed shell, variable content

Two fixed sections and three variable ones is enough for no two pages to share an outline while keeping the template maintainable.

Ids and deep links

Every h2 gets a stable id derived from its text, without spaces or accents. That enables three things: auto-generating a table of contents, deep-linking from other pages in the silo, and allowing search engines to link directly to a section in results.

<h2 id="heading-hierarchy">Heading hierarchy</h2>

On a generated batch these ids become a linking resource: a contextual link to /blog/page#section is more precise than one to the whole page. The method is in internal linking at scale, and the corresponding markup in structured data on generated pages.

Frequently asked questions

Can a page have more than one H1?

HTML5 technically allows it inside sectioning elements, but one H1 per page remains the safest rule for document clarity and assistive technology.

Should the H1 match the title tag exactly?

They can differ slightly, and often should. The title is constrained by SERP display width; the H1 speaks to a reader already on the page.

Does the target keyword need to appear in every H2?

No. Repeating the query in every subheading reads artificially with no benefit. Covering the semantic field and related questions works better.