Free instant website audit · 190,000+ sites checked · no card, no account
Custom Web Audits
← All free tools
🔠

Heading Structure Checker

Extract the full heading outline (H1 through H6) of any page and flag the issues that matter for SEO: missing H1, multiple H1s, and skipped heading levels that break content hierarchy.

⚡ Interactive demo — sample data
2 issues found in this sample outline — one skipped level and an empty heading.
H1 Best Running Shoes for 2026 — Tested & Reviewed Looks good
H2 How we tested Looks good
H2 Best overall Looks good
H4 Cushioning notes — skipped level (H3 missing after H2) Warning
H2 Best for beginners Looks good
H3 (empty heading — no text) Issue

About this tool

Extract the full heading outline (H1 through H6) of any page and flag the issues that matter for SEO: missing H1, multiple H1s, and skipped heading levels that break content hierarchy.

How it works

Enter your page URL
Paste any public URL and run the check. We fetch the page's HTML and extract every heading element from H1 down to H6, in the exact order they appear in the source — the same order a search engine or screen reader reads them.
Review the outline and warnings
You get the full heading tree plus flags for the issues that matter: a missing or duplicate H1, levels that skip a step (like an H2 jumping straight to an H4), and empty headings. Each warning explains why it hurts.
Fix the issues and re-run
Adjust your headings in your CMS or template — one clear H1, then a logical H2/H3 nesting with no skipped levels — and run the check again to confirm a clean outline before search engines re-crawl the page.

What we check

  • H1 presence and count — Confirms the page has exactly one H1. Pages with zero H1s leave search engines guessing at the main topic; multiple H1s dilute it.
  • Heading hierarchy (no skipped levels) — Verifies levels descend in order — H1 → H2 → H3 — without skipping (e.g. an H2 followed directly by an H4). Skipped levels break the document outline that crawlers and assistive tech rely on.
  • Full H1–H6 outline — Extracts every heading in source order so you can see your real content structure, not how it looks styled in a browser.
  • Empty headings — Flags heading tags with no text (often left behind by page builders or used purely for spacing), which add noise to the outline and confuse screen readers.
  • Heading text and length — Surfaces the actual text of each heading so you can spot vague labels like 'Welcome' or over-stuffed headings. There's no hard character limit, but concise, descriptive headings (roughly under ~70 characters) read best in outlines and snippets.
  • Real headings vs. styled text — Only counts true <h1>–<h6> elements. Big bold text styled with CSS isn't a heading to a crawler, so this catches pages that look structured but aren't.

Common issues we catch

  • Multiple H1s on one page — Common with themes that wrap the logo, page title, and a hero banner all in H1s. It splits the page's primary signal across several elements instead of one clear topic statement.
  • No H1 at all — Some templates render the main title as a styled <div> or H2. To a crawler the page has no H1, so its strongest on-page topic signal is missing entirely.
  • Skipped heading levels — Jumping from H2 to H4 (often because H4 'looked the right size') breaks the outline. Screen-reader users navigating by heading level hit a gap, and the logical structure search engines build is incomplete.
  • Headings used for visual size, not structure — Picking H3 because the font is the size you want — rather than because it's a third-level subsection — produces an outline that doesn't match the content. Style with CSS instead.
  • Empty or whitespace-only headings — Page builders frequently leave behind empty heading tags for spacing. They look fine in a browser but add meaningless nodes to the machine-readable outline.
  • JavaScript-injected headings — Headings added by client-side JavaScript may be missing from the initial HTML. Bots that don't fully render JS (and your own quick view-source) won't see them, so a heading that's visible on screen can be invisible to a crawler.
  • Duplicate H1 and title tag mismatch — The H1 and the <title> don't have to be identical, but a generic H1 ('Home') paired with a keyword-rich title wastes the H1's value. Conflicting messages weaken both.

Where this matters

  • Google & Bing — Both use heading structure as one signal for understanding page topic and sub-topics. A clean H1→H2→H3 outline helps them parse what each section is about.
  • Screen readers (JAWS, NVDA, VoiceOver) — Heading navigation is one of the primary ways blind and low-vision users move through a page. A logical, gap-free heading order is essential for them — not optional.
  • WCAG 2.1 / accessibility audits — Success criterion 1.3.1 (Info and Relationships) and the heading guidance in 2.4.6/2.4.10 are commonly checked in accessibility audits; bad heading order is a frequent finding.
  • WordPress, Shopify, Wix & page builders — Themes and builders (Elementor, Divi, Gutenberg blocks) often auto-assign heading levels in ways that produce multiple H1s or skipped levels — exactly what this tool surfaces.
  • Featured snippets & 'On this page' jump links — Clear headings improve your odds of headings being pulled into list/step snippets and power the in-page jump links Google sometimes shows.

Frequently asked questions

What is an H1 tag?
The H1 is the top-level heading of a page — usually its main title. It tells search engines and screen readers the single most important thing the page is about. Every page should have one clear H1.
How many H1 tags should a page have?
One. Google has said multiple H1s won't break your page, but a single, descriptive H1 is the cleanest signal and the easiest structure for screen readers and crawlers to follow. Use H2–H6 for everything below it.
Does heading order matter for SEO?
Yes, in two ways. A logical outline (no skipped levels) helps search engines understand how your sections relate, and it's required for accessibility — which Google increasingly factors into page quality. It won't single-handedly rank you, but a broken outline is a missed, easy-to-fix opportunity.
What does 'skipped heading level' mean?
It means a heading jumps a level — for example an H2 followed immediately by an H4, with no H3 in between. The fix is to use the next level down in sequence (H2 → H3) and control the visual size with CSS instead.
Can I style headings to look smaller or larger?
Absolutely — choose the heading level based on the content's structure, then use CSS to make it any size you want. Never pick H4 over H2 just because the font looks right; that breaks the outline.
Why doesn't my heading show up in the checker?
The most common reasons are that it's added by JavaScript after the page loads (so it's not in the initial HTML), or it's styled text in a <div> rather than a real heading tag. Check view-source: if it's not an <h1>–<h6> there, crawlers may not see it as a heading.
How do I fix multiple H1s?
Find every H1 in your template — often the site logo or a tagline is wrapped in one. Keep the one that states the page's actual topic as H1 and change the rest to the appropriate lower level (usually H2) or a styled <div>/<span>.
How long until heading changes affect my rankings?
The change is live for users immediately. Search engines pick it up the next time they re-crawl the page — often days to a few weeks. You can speed that up by requesting indexing in Google Search Console.

This is one of several free SEO tools from Custom Web Audits. For a complete, prioritized analysis of your whole website, run a full audit.