Someone sent me a page last month with three H1s on it. Three. The developer had used the tag to style section titles because it was bigger than H2 and he didn't want to touch the CSS. The page looked fine. It ranked… badly. Not catastrophically, just consistently below two competitors with thinner content.
That's the thing about how to structure headings for SEO. Nobody loses a ranking because of one heading. You lose it in aggregate, across dozens of small structural decisions you stopped noticing.
Key Takeaways
- One H1 per page, and it should say something different from your title tag.
- Never skip levels: H2 → H4 confuses screen readers and weakens topical grouping.
- Headings are an outline, not a design tool. If you want big text, use CSS.
- Write H2s that match how people phrase questions, not how you phrase features.
- Hidden headings inside accordions still count — but only if the content actually loads.
- A heading audit takes about 20 minutes per site and usually finds 15-30% of pages with broken hierarchy.
Headings are a hierarchy, not a font size
H1 through H6 exist to describe nesting. That's it. H2 sits under H1. H3 sits under H2. The relationship is the whole point, and it's the part almost everyone breaks — usually by accident, usually for aesthetic reasons.
Why does the nesting matter so much? Because both readers and machines use it the same way: as a map. When you skim a page, your eye catches the headings first and builds a mental outline before you decide whether to read. Search systems do roughly the same thing at scale — they parse the heading tree to figure out what a section covers and how it relates to the sections around it.
The one-H1 rule, and where it gets messy
One H1 per page is the standard advice, and I'll defend it. But the nuance nobody mentions: the H1 is not automatically the most important signal on the page. It's a label. Its job is to confirm to anyone landing mid-scroll that they're in the right place.
The mess comes from content systems. A CMS template often prints the post title as H1, then a page builder inserts a "hero" block that also prints an H1, and suddenly you have two. On e-commerce category pages, the pattern is worse: the category name appears in a banner, a breadcrumb, and a filter header, and a developer tags all three as H1 because "they're all titles."
In my experience the fix is almost never technical. It's editorial. Pick the one heading that represents the page as a whole, and demote everything else.
Why you should never skip levels
Jumping from H2 straight to H4 is the single most common structural fault I find. It usually happens because someone wanted H4's smaller visual size and didn't think about the tree.
For sighted users, nothing breaks. For screen reader users navigating by heading — a very common pattern — the outline suddenly claims there's a level missing, which signals a parent section that doesn't exist. And for anything parsing your document structure, you've created a group with no parent.
If you want a smaller heading, style an H3 smaller. Don't change the level.
What a good heading outline actually looks like
Here's the structure of the page you're reading, roughly:
- H1 — the article title (handled outside the body)
- H2 — the main question this section answers
- H3 — a sub-question readers will ask
- H3 — another sub-question
- H2 — the next main question
Notice that each H2 answers something. That's the test I apply to every outline now. If I can't read my H2s in sequence and get a coherent summary of the article, the outline is decorative rather than structural.
H1, H2, H3 examples you can compare against
Take a page about email deliverability. A weak outline reads like this:
H1: Email Deliverability
H2: Introduction
H2: Best Practices
H2: Conclusion
Every heading is a container label. None of them tells you what's inside, and none of them resembles a real question. Now the same page, rewritten:
H1: Why your emails land in spam (and how to fix it)
H2: The three authentication records that decide your fate
H3: What SPF actually authorises
H3: Why DKIM alignment matters more than DKIM itself
H2: How sender reputation is built and how fast it collapses
H2: What to check first when a campaign suddenly tanks
Same topic. Completely different page. One is a filing cabinet; the other is an argument.
The HTML side, without the fluff
Implementation is boring, which is why people get it wrong. Here's what the markup should look like:
<h1>Main page topic</h1>
<h2>First major section</h2>
<h3>Sub-point</h3>
<h3>Another sub-point</h3>
<h2>Second major section</h2>
<h3>Sub-point</h3>
<h4>Detail under that sub-point</h4> Two rules govern it. Never skip a level going down. And don't use heading tags for anything that isn't a heading — not for your logo, not for a call-to-action button, not for a label in a form.
Do headings inside accordions or tabs count?
Yes, provided the content is in the served HTML. If your accordion is built with a script that injects the text only after a click, the heading and its section won't be part of what gets fetched. If the text is in the source and merely collapsed with CSS, you're fine.
The practical check: disable JavaScript, load the page, and see whether your heading text appears. I keep a browser profile with JS off purely for this reason. It has caught more problems than any audit tool I've tried.
What about empty or decorative headings?
Remove them. An empty H2 is a hole in your outline. A heading used purely as a visual divider — "★ ★ ★" or a styled label with no text — adds a node to the document tree that means nothing.
The exception worth knowing: headings that label a genuinely empty section, like a reviews block with no reviews yet. In that case, either write a real heading describing the state ("No reviews yet") or drop the heading until there's content.
Writing headings for the features that steal clicks
This is where structure stops being housekeeping and starts affecting traffic directly. Question-shaped H2s and H3s are what get lifted into answer boxes, related-question modules, and the AI-generated summaries that now sit above the first organic result on a growing share of queries.
The pattern I use: take the exact wording your audience uses, then answer it in the first sentence underneath. Not the second paragraph. The first sentence.
- "How long does X take" → answer with a duration immediately
- "Is X better than Y" → commit to a position, then qualify it
- "Why does X happen" → name the mechanism before the explanation
- "What is X" → one-line definition, no throat clearing
I'll admit I resisted this for a while. It felt like writing for machines. Then I watched a competitor with objectively worse content outrank a client on about a dozen queries, purely because their headings matched the question phrasing and their answers were immediate. That ended the debate for me.
How to audit your heading structure
You don't need paid tooling. Browser developer tools will render an outline of your document. Some browser extensions flatten a page's heading tree into a clickable list, which is the fastest way to spot skips and duplicates on a live page.
For a whole site, run a crawler across a sample of 50-100 URLs and extract headings. Then sort by page type: articles, category pages, product pages. The faults cluster by template, so fixing one template usually repairs hundreds of pages at once.
| Page type | Most common fault | Typical fix |
|---|---|---|
| Blog article | Duplicate H1 from title plus hero block | Demote the hero to a styled paragraph |
| Category page | H2s skipped, filters tagged as headings | Keep filters as buttons; one H1, real H2s below |
| Product page | Description block with no headings at all | Add H2s for specs, sizing, returns |
| Landing page | H2s written as slogans | Rewrite as questions or topic labels |
| Documentation | H3 used as H2, H4 used as H3 | Shift the whole outline up one level |
What to measure after a heading overhaul
Don't expect rankings to move overnight, and be honest about that before you promise anything. On a restructuring project I ran across roughly 80 pages, the changes I could actually attribute were:
- Scroll depth on long guides rose noticeably within a month — readers could find their section
- Impressions for question-style queries increased, though click-through stayed flat for the first few weeks
- Bounce on mobile category pages dropped, which I credit entirely to removing filter labels from the heading tree
The ranking shifts came later and were modest. What moved first was on-page behaviour, which is usually the honest sequence.
The part almost everyone skips
Your H1 and your title tag are two different pieces of writing. The title tag lives in the search result and needs to survive truncation and win a click. The H1 lives on the page and needs to confirm, instantly, that the visitor arrived where they meant to.
Most sites just copy one into the other. That works, sort of. But a title tuned for a search result and an H1 tuned for a reader are not always the same sentence, and collapsing them wastes a slot you could use to address the reader directly.
If you take one thing from this: count your H2s. If you can't read them in order and follow the argument, your structure is decoration. Fix that before you touch anything else — keyword placement, internal links, schema. The outline is the skeleton. Everything else sits on top of it, and a bent skeleton doesn't get straighter once you start adding muscle.