BLOG · SEO

H1, H2, H3: How Heading Structure Affects SEO, With Examples

Published · 9 min read

Headings are the outline of a page. One <h1> names the topic, <h2> tags name its sections, <h3> tags name the parts of a section, and the levels never skip. Google says it uses headings to understand what a page is about, and it has also said that multiple H1s do not hurt ranking. The single-H1, no-skipped-levels structure is still worth keeping, because readers, screen readers, and the AI systems that split pages into chunks all lean on it more than Google's ranking systems do.

What headings are for

A heading is not a big bold line. It is a claim about structure: everything below this heading, until the next heading of the same or higher level, belongs to it. Four different consumers read that claim.

  • Readers skim headings before deciding whether to read. You do not need a study to confirm this — watch anyone open a long article on a phone.
  • Screen readers expose headings as a navigable list. A user can jump heading to heading and hear the level of each one. That is why levels matter more for accessibility than for search.
  • Search crawlers use headings as one signal of what a page and each section covers. Google's SEO starter guide recommends headings that describe the content beneath them and warns against headings used only for styling.
  • AI systems — retrieval pipelines behind ChatGPT, Perplexity, and similar answer engines — usually split a page into passages before embedding or quoting it, and heading boundaries are the most common split point. A passage that starts with a clear heading carries its own context; one that starts mid-thought does not.

One historical note, since it still confuses people: the HTML5 specification once described an “outline algorithm” in which nested <section> elements would reset heading levels, so every section could start at <h1>. No browser or screen reader ever implemented it, and it was removed from the HTML standard. The heading number is the level. Nothing else is.

The one-H1 convention, honestly

The rule most people learned is “one H1 per page.” The honest status of that rule is in three parts.

First, Google has said it is not a ranking issue. John Mueller of Google's Search Central team has answered the question directly in the #AskGooglebot series: multiple H1s are fine, and pages with no H1 at all still rank. In our reading, Google's systems infer structure from many signals and do not treat the H1 count as a gate.

Second, one H1 is still the accessibility and clarity convention. Accessibility audits conventionally expect a single top-level heading that names the page, because screen-reader users commonly press a shortcut to jump to it. Two H1s force them to guess which is the real one.

Third, one H1 is what Aura's free scan awards full marks for. It checks the fetched HTML for exactly one <h1> and at least two <h2> tags. That is not a claim that Google requires it; it is a proxy for “this page has a clear topic and visible sections,” which is what readers and AI chunkers benefit from.

The practical exceptions are narrow. A site logo wrapped in an <h1> on every page is a common CMS default and is worth fixing, because it makes the site name the topic of every page. A page that genuinely presents two equal documents is rare; if you have one, it is usually two pages.

The two mistakes that actually cause trouble

Skipped levels

A jump from <h2> to <h4> tells a screen reader there was an H3 it missed. It tells a chunking pipeline that a passage is nested two levels deep when it is really one. Google has said it handles imperfect heading structure, so the cost is confusion, not a penalty — but the confusion is real, and the fix is trivial: renumber. If you are skipping a level because the H3 style looks too big, that is a CSS problem, covered next.

Headings used as styling

The most common heading error is picking <h3> for a line because it renders as bold text at a pleasant size. Now a caption, a call-out, or a product price is a section title. Every consumer above misreads it. The fix is to give the visual style its own class and keep the heading element for actual headings.

<!-- Wrong: a heading chosen for its look -->
<h3>Free shipping on orders over $50</h3>

<!-- Right: a styled paragraph -->
<p class="callout">Free shipping on orders over $50</p>
.callout {
  font-size: 1.25rem;
  font-weight: 700;
  margin: 1.5rem 0 0.5rem;
}

The reverse mistake also happens: a real section title set as <p><strong> because the author did not want the heading margin. Same fix, in the other direction — use the heading tag and adjust its margin in CSS.

A good outline and a bad one

Read each of these as a table of contents. The first one tells you what the page covers without reading a single paragraph. The second one does not.

H1  How to descale an espresso machine
  H2  Why scale builds up
  H2  What you need
  H2  Step-by-step descaling
    H3  Prepare the solution
    H3  Run the cycle
    H3  Flush with clean water
  H2  How often to descale
  H2  Frequently asked questions
H1  Acme Coffee
H1  How to descale an espresso machine
  H3  Introduction
  H4  Why scale builds up
  H2  Step 1
  H2  Step 2
  H3  Buy our descaler today
  H2  Related products
  H2  Sign up for our newsletter

The second outline has two H1s (the logo and the title), skips from H1 to H3, nests H4 under H3 with no H2 parent, uses headings for a promotion and a signup box, and has step headings that say nothing on their own. None of that is exotic; it is what most themes produce when nobody looks.

Typical outlines by page type

There is no correct number of headings. There is a correct shape for each kind of page, and it follows the content.

Page typeH1Typical H2sH3s
Blog article or guideThe article titleMain sections, 4–8; a FAQ section if presentSub-points when a section has 2+ parts
Product pageThe product nameDescription, specifications, reviews, shipping and returnsIndividual spec groups or review highlights
HomepageWhat the business does, in plain wordsEach offer or benefit block, proof, how it worksRarely needed
Category or listing pageThe category nameSub-categories or filters, buying guidanceUsually none; product cards are not headings
Documentation pageThe feature or endpointOverview, parameters, examples, errorsEach parameter group or example
Landing pageThe single promise of the pageProblem, solution, proof, pricing, FAQPricing tier names, FAQ questions if styled as headings

Note what is absent from every row: navigation, footers, sidebars, cookie banners. Those are not sections of the document and should not carry heading tags. If your theme puts an <h2> on “Recent posts” in the sidebar, it is adding a section to every page that has nothing to do with the page.

What the heading text should say

A heading should carry the topic of the section beneath it in the words a reader would use to look for it. That is the whole rule, and both halves matter.

Carry the topic: “Step 1” is not a heading; “Prepare the descaling solution” is. “Overview” and “Introduction” say nothing once the heading is read out of context — in a screen-reader list, a search snippet, or an AI passage. Prefer the specific noun phrase.

Without stuffing: the topic word belongs in the H1 and in the H2s where it is naturally the subject. It does not belong in every H2. “Espresso machine descaling steps,” “Espresso machine descaling frequency,” and “Espresso machine descaling FAQ” read as written for a robot, and Google's spam policies describe keyword stuffing as exactly this kind of repetition. Once the H1 has established the subject, the H2s can be shorter.

The H1 and the title tag should agree on the topic but need not be identical strings; the title tag is written for a search result and is constrained by width, while the H1 is read on the page. The trade-offs are covered in the title tag and meta description guide.

A two-minute heading audit

You do not need a crawler to check one page. Open the page, open the browser console (F12 or Cmd-Option-J), and paste this.

[...document.querySelectorAll("h1,h2,h3,h4,h5,h6")].map(h => h.tagName + "  " + h.textContent.trim()).join("\n")

It prints every heading in document order with its level. Read the output as a table of contents and check five things.

  1. There is exactly one H1, and it is the page title, not the site name.
  2. No level is skipped going down (H2 to H3 to H4, never H2 to H4).
  3. Every heading describes what is under it, and would make sense read alone.
  4. Nothing in the list is a promotion, a widget title, a caption, or a price.
  5. The list, read top to bottom, is a sensible summary of the page.

If you prefer a visual, browser extensions that show a “headings outline” or “document outline” do the same thing with indentation; the built-in accessibility tree in Chrome and Firefox DevTools shows it too. For a whole site you need a crawler that exports heading counts per URL — the technical SEO checklist lists what to export. The free scan at / checks the single-H1 and two-H2 rules on one URL as part of its 18 checks; it does not crawl the site or evaluate heading text.

Why AI systems care more than Google does

Google has spent two decades learning to read badly structured pages. The retrieval layers behind AI answer engines are younger and more literal. They fetch a page, strip it to text, split it into passages — very often at heading boundaries — and score each passage against the question. A passage whose heading says what it covers can be matched and quoted with its context intact. A passage under “Step 2” or under a styling-only H3 cannot.

That is why heading structure sits alongside crawler access and structured data in the 18 AI visibility checks: it is one of the few content signals that is deterministic and fixable in an afternoon. It also pairs with markup. An Article or FAQPage object in JSON-LD tells a machine what the page is; the headings tell it where each part is. The schema markup guide covers the first half; this article is the second.

Frequently asked questions

Does having multiple H1 tags hurt SEO?
Not according to Google. Google's John Mueller has said in Search Central videos that multiple H1 tags are not a problem for Google Search. A single H1 is still the accessibility and clarity convention: screen-reader users often jump to the H1 to learn what a page is about, and one H1 gives crawlers and AI systems one unambiguous topic. Aura's free scan awards full marks for exactly one H1.

Should the H1 match the title tag?
They should say the same thing, not necessarily in the same words. The title tag is written for the search result and is limited by width; the H1 is written for someone already on the page and can be longer or plainer. Keep the core topic identical so the promise in the result matches the page.

Is it bad to skip heading levels, like going from H2 to H4?
It is a structural error rather than a ranking penalty. Google has said it handles imperfect heading structure, but screen readers announce levels, so a jump from H2 to H4 implies a missing section. Use consecutive levels: an H4 only appears under an H3, which only appears under an H2.

How do I check the heading structure of a page quickly?
Open the browser console on the page and run a one-line document.querySelectorAll over h1 through h6 to print each heading with its level, or install a headings outline extension. Read the printed list as a table of contents. If it does not make sense on its own, the structure needs work.

Run the free 18-check scan

H1, H2, H3: Heading Structure for SEO | Aura AI Visibility