On-Page SEO·April 27, 2026·10 min read

How to structure header tags for SEO

Header tags are how Google parses the outline of your page - and the outline is what Google reaches for when it picks a featured snippet, generates an FAQ rich result, or decides which subsection of your page best matches a long-tail query. A practical playbook for the one-H1 rule, when to break it, the skipped-level mistake, and the heading-as-snippet workflow that earns position-zero traffic.

Headers are the only element on the page that doubles as a structural signal. Google reads <h1> through <h6> as a tree - they are how the algorithm builds an outline of what your page is about, and they are how Google's snippet generators decide which paragraph to pull when a user searches for "what is X" vs "how to do Y." Get the structure right and you earn featured-snippet eligibility for free; get it wrong and Google reaches for arbitrary body text instead.

This guide skips the basic "what are header tags" framing (the tool below covers that) and goes straight to the structural playbook: the one-H1 rule, when to break it, the skipped-level pattern that confuses crawlers, and the heading-as-snippet workflow that earns featured-snippet traffic.

List every heading on a page in seconds

Paste any URL below. The tool extracts every <h1> through <h6> in document order, with the text content - the fastest way to spot duplicate H1s, skipped levels, and "wall of H2s with no nesting" patterns at a glance.

Try it inline

Header Tags Checker

List every heading tag on any page in document order. No login, works on any domain.

Open full tool
Loading tool…

Why the heading outline is the highest-leverage structural signal

Treat headings as one of three things and you will get the work backwards:

  • (Wrong) Headings are typography. Lots of designers reach for <h2> because it looks the right size. Don't. The size is what CSS does. The TAG is what Google parses.
  • (Wrong) Headings are keyword slots. Old-school SEO advice was "stuff each heading with a keyword variant." Google has been keyword-stuffing-aware for over a decade; this is now an anti-pattern.
  • (Right) Headings are the outline of an answer. Each heading is a question; the body underneath is the answer. The outline is what Google reads to decide what your page is about and which subsection to feature in snippets, FAQ rich results, and "people also ask" boxes.

The practical implication: a clean outline beats a keyword-stuffed one every time. A page with the structure "Heading: How to write meta descriptions / Subheading: The 155-character rule / Subheading: When Google rewrites yours / Subheading: Duplicate descriptions" is far more eligible for featured snippets than a page with the structure "Meta Descriptions / Meta Description Best Practices / Meta Description Tips."

The one-H1 rule (and the only time to break it)

Every page should have exactly one <h1>, and it should describe the page in one line. This is the rule. The reasoning is mechanical:

  • Google uses the H1 as the strongest single relevance signal on the page after the title. Two H1s split that signal between two competing claims about what the page is about.
  • Screen readers use the H1 as the page's main landmark. Two H1s break the navigation experience for assistive tech.
  • Modern HTML5 technically allows multiple H1s when they are inside <article> or <section> elements - but Google does not respect that scoping in practice. Stick to one H1 per URL.

The legitimate exception: list-of-articles pages (a blog index, a category page) can have one H1 for the page itself ("Latest Articles") and headings within each card that COULD be H2s or H3s. Most CMSes default to using H2 for card titles, which is correct. If your blog index is rendering each card as an H1, that is a bug, not an exception.

The skipped-level mistake

The single most common heading bug: jumping levels. A page that goes <h1><h3><h2><h4> tells Google nothing coherent about the outline. The crawler tries to build a tree from a sequence that doesn't form a tree. The result is the page's outline gets discarded, and Google falls back to surface-level signals (title, body keywords) only.

The rule: heading levels descend monotonically from H1. You can go from H2 back up to a sibling H2; you cannot skip from H2 to H4 without an H3 in between. The audit move:

  1. Run the page through the embedded checker.
  2. Scan the level numbers in document order. They should look like a sensible outline: 1, 2, 3, 3, 2, 3, 4, 4, 3, 2.
  3. Anywhere the level jumps DOWN by more than one (1 to 3, 2 to 4) is a skipped level. The fix is mechanical: change the offending tag to be one level deeper than its parent.

The most common cause is design-driven: a designer wanted a heading that looks "smaller than H2 but bigger than H4," reached for H4 because it was the right visual size, and skipped H3. The fix is in the CSS, not the HTML - keep the H3, restyle it to look the way the design wanted.

Checklist

Header tag DOs & DON'Ts

DO

  • Use exactly one H1 per page

    It's the strongest on-page relevance signal after the title. Two H1s split the signal between competing claims about what the page is about.

  • Maintain a monotonic outline

    Heading levels descend from H1 to H6 like a book outline. You can climb back up to a sibling H2; you cannot skip from H2 to H4 without an H3 in between.

  • Convert 30-40% of H2/H3s to question form

    Question-form headings ("How long should X be?") are featured-snippet eligible in a way label-form headings ("X length") aren't. Mix them so the page doesn't read repetitively.

  • Pick the heading TAG by structure, not by visual size

    If a designer wanted a heading that looks smaller than H2 but bigger than H4, the fix is in the CSS, not the HTML. Keep the right tag, restyle to the right size.

  • Strip empty and duplicate headings

    Many CMSes emit empty H2s as section dividers, or duplicate the title in both the title tag and an H1 and an H2. Each one is a structural noise signal Google has to filter out.

DON'T

  • Don't use heading tags as styling shortcuts

    An H2 because it "looks the right size" is a tag chosen for the wrong reason. Google parses tags as structure; size is for CSS.

  • Don't skip heading levels

    H1 to H3 with no H2 between makes Google discard the entire outline and fall back to surface-level signals only.

  • Don't keyword-stuff headings

    "Meta Description Best Practices, Meta Description Tips, Meta Description Length" reads like spam. One specific question per heading.

  • Don't render two H1s per page

    Common template bug: site H1 ("Acme Blog") plus article H1 ("Post title") render together. Make the site label an H2 or a styled <p>.

  • Don't write generic label headings on informational pages

    "Overview," "Introduction," "Background" - these tell Google nothing about what the body answers. Rewrite as the question the body resolves.

The biggest mistake: writing headings as labels instead of questions

The single highest-leverage rewrite you can do for headings is converting label-style headings into question-style headings. Google's featured-snippet algorithm reaches for headings that look like the searcher's query - because if the heading IS the query, the body underneath is by definition the answer.

Consider the same subsection written two ways:

  • Label heading: "Meta Descriptions and Click-Through Rate"
  • Question heading: "Why don't meta descriptions affect ranking?" or "How long should a meta description be?"

The label heading is technically correct. The question heading is featured-snippet-eligible. The body underneath each is identical; the only difference is whether Google can identify which sentence answers a specific query. The audit move: scan your headings. For each one, ask "what query would a user have typed to want this answer?" If you cannot rephrase the heading to BE that query, you probably have a label heading and should rewrite.

This does not mean every heading should be a question - that pattern gets repetitive and reads weird in a long article. The rule: at least 30-40% of your H2s and H3s should be question-form on any page targeting informational keywords. The rest can be statement-form. Mix them.

What a clean header audit looks like

Run this on your top 50 pages by impressions. The fix is mostly mechanical (changing tags, not rewriting content) and the lift is meaningful (better snippet eligibility, better screen-reader navigation, better outline for ranking).

  1. Run each page through the header tags checker. Screenshot the output. The list should look like a sensible book outline: H1 then descending H2-H4-ish, no skipped levels, no random H1s in the middle of the body.
  2. Verify exactly one H1 per URL. Multiple H1s usually mean a template bug (the article H1 is rendered AND the site H1 is rendered). Fix the template.
  3. Convert 30-40% of H2/H3s to question form. Especially on pages targeting informational queries ("how to," "what is," "why does"). The body content stays; the heading wording changes.
  4. Eliminate skipped levels. Anywhere the outline jumps from H2 to H4 (or worse, H1 to H3), insert the missing level or change the deeper tag to its proper level.
  5. Audit for empty/duplicate headings. Many CMSes emit empty H2s as section dividers, or duplicate the post title in both the title and the H1 and an H2. Each one is a structural noise signal. Strip them.
  6. Spot-check Search Console's featured-snippet impressions. Pages that earn featured-snippet impressions almost always have question-form headings matching the query. Pages that don't, often have label-form headings on the right topic. That's the rewrite priority list.

Grab the one-page audit checklist

A printable version of the heading-structure playbook, the question-form rewrite cheat sheet, the skipped-level decision tree, and the WordPress / Next.js / static-site snippet that adds a build-time check to fail your build if any page ships with two H1s or a skipped level.

Free download

The Header Tag Hierarchy Audit Checklist

A printable one-pager with the heading-structure playbook, the question-form rewrite cheat sheet, the skipped-level decision tree, and the WordPress / Next.js / static-site snippet that adds a build-time check to fail your build if any page ships with two H1s or a skipped level.

Quick quiz: are you ready to audit your own headings?

Five questions, takes two minutes. We'll show you the right answer and a one-line explanation after each one.

Quick quiz · 5 questions

Header tag hierarchy - quick check

5 randomized questions drawn from a pool of 12. Different every time you take it. Takes about two minutes.

Next up in On-Page SEO

Headings tell Google how the page is structured; canonicals tell Google which URL to credit when the same content appears on multiple URLs. From here:

  • Canonical tags - when to use them, when not to, and what happens when Google overrides yours.
  • Open Graph and social previews - the off-Google CTR work most teams ignore.
Keep learning

More in On-Page SEO

How to write SEO page titles that rank

10 min read

How to write meta descriptions that get clicked

10 min read

When to use canonical tags (and when not to)

11 min read

Skip the writing. Keep the SEO.

SEOGraphy drafts, illustrates, and publishes articles that follow the playbook above - automatically.

Try SEOGraphy free →