CoreCited
H1 to H6 outline · GEO Audit checks · no signup

Heading checker that draws your page’s outline

Check the H1, see every heading from H1 to H6 as a tree, and find skipped levels, empty and duplicate headings, and logo H1s. Then see how many headings are questions, and how the page splits into sections for AI answers.

Any public page. We read the HTML your server sends, the same HTML most AI crawlers read.

Free · no signup · H1 to H6 outline, skipped levels, H1 against title, question headings

Key takeaways
1Google says multiple H1s and out-of-order headings do not hurt it in Search. People are the reason to fix them: most screen reader users find content by headings.
2One H1 that names the page, H2s for sections, H3s inside them, and no level skipped on the way down. That is the whole rule.
3Most AI crawlers read your server HTML and run no JavaScript, so headings that only appear after scripts run are invisible to them.
4Headings are where a page gets split into passages. A heading that names the question a section answers makes that passage easy to find and quote.

What this H1 checker looks for

Enter a URL and the checker fetches the page once, reads the HTML your server sends, and lists every <h1> to <h6> in source order. The HTML standard defines a page’s outline the same way: all its headings, in tree order[10]. You get that outline as an indented tree, with a badge for each level, a count per level, and these checks:

  • The H1. Missing, more than one, or one that looks like the site logo (an H1 in the header holding an image or a short name).
  • H1 against the title. Identical, the same plus your brand, sharing keywords, or saying something else entirely.
  • Skipped levels. Every place a heading jumps more than one level down, such as an H2 followed by an H4.
  • Empty and image-only headings. Heading tags with no text, and headings whose only content is an image, with or without alt text.
  • Long and duplicate headings. Headings over 70 characters, which are usually paragraphs in the wrong tag, and the same heading text used more than once.
  • Hidden headings and page furniture. Headings hidden by the markup, headings for screen readers only, and headings in menus, sidebars and footers that sit in the same outline as your content.
  • Question headings. The share of H2 to H4 headings phrased as questions, using the same rule as the GEO Audit’s question-shaped headings check, and that check’s verdict next to the audit’s H1 and heading hierarchy checks.

The outline copies as plain text or Markdown, ready for a ticket or a content brief. Press Example to see a full result on a made-up page first; it runs in your browser and fetches nothing.

71.6%
of screen reader users find information on a long page by its headings
WebAIM, 2024
88.8%
find heading levels very or somewhat useful
WebAIM, 2024
1539
screen reader users answered that survey
WebAIM, 2024
6
heading levels in HTML, H1 to H6
WHATWG

Sources: WebAIM Screen Reader User Survey #10[14]; the HTML standard[10].

How the checker reads your page
One request, no JavaScript run, nothing stored. Private and local addresses are refused, on the URL you enter and on every redirect.
Fetch
We request the page once and follow up to five redirects, checking each one first.
Step 1: Fetch. We request the page once and follow up to five redirects, checking each one first.
Step 2: Clean. Scripts, styles, templates and comments are set aside: they are never shown as headings.
Step 3: Outline. Every H1 to H6 in order, with the region it sits in and anything that hides it.
Step 4: Check. The H1, the title, levels, text, duplicates, questions, and the GEO Audit's three heading checks.
Step 5: Split. The page cut at its headings, with the words under each, as a heading-aware splitter would.

What headings do for readers, Google and AI answers

For readers

Headings are how people skim, and how screen reader users move around a page. In WebAIM’s 2024 survey of 1,539 screen reader users, 71.6% said their first move to find information on a long page is to navigate through its headings, far ahead of using the find feature (13.6%) or reading the page through (6.4%)[14]. Heading levels matter to them too: 88.8% found them very or somewhat useful[14]. A page with no headings, or with headings that are really just bold text, takes that away.

For Google

Google’s SEO Starter Guide asks you to break up long content into paragraphs and sections, and provide headings to help users navigate your pages[1]. Google also lists heading elements such as <h1> among the sources it uses to build the title link shown for a result, alongside the <title> element and the main visual title, and asks you to make it clear which text is the main title of the page[2]. What Google does not do is grade your heading markup. The same guide says that from a Google Search perspective it doesn’t matter if your headings are out of order, and that the web in general is not valid HTML, so Google can rarely depend on semantic meanings hidden in the HTML specification[1].

For AI answers

Two things are documented. First, what AI crawlers can read. Vercel and MERJ analysed crawler traffic across Vercel’s network and found that none of the major AI crawlers render JavaScript, naming OpenAI’s OAI-SearchBot, ChatGPT-User and GPTBot, Anthropic’s ClaudeBot, Meta, ByteDance and PerplexityBot; the exceptions were Gemini, which uses Googlebot’s infrastructure, and AppleBot[8]. Google itself still recommends server-side rendering because not all bots can run JavaScript[7]. That is why this checker reads server HTML: it is the version those crawlers get.

Second, how retrieval systems commonly split documents. LangChain’s documentation explains that chunking aims to keep text with common context together, so it can make sense to honour the structure of the document, and its header splitter cuts at headings and keeps the parent headings with each chunk[15]. Whether a given AI search engine does exactly this is not published. But the logic is general: a heading marks where one passage ends and the next begins, and tells whatever reads the passage what it is about. The chunk view in the result shows your page cut that way.

One H1 or several? What Google actually said

This is the most argued-over heading question, and Google has answered it more than once. In a 2019 Search Central video, John Mueller said: “Our systems don’t have a problem when it comes to multiple H1 headings on a page. That’s a fairly common pattern on the web.”[3][4] A few days earlier, in an office-hours hangout, he put it more bluntly: “Your site can do perfectly fine with no h1 tags or with five h1 tags.”[5] In the same video he added that clear, semantically structured headings do help Google understand a page[4].

Myth
Google penalises pages with more than one H1.
What is true
Google's John Mueller said its systems have no problem with multiple H1s, and that a site can do fine with none or with five.
Myth
Headings out of order hurt your rankings.
What is true
Google's SEO Starter Guide says it doesn't matter to Google Search if headings are out of order. It matters to screen reader users.
Myth
The HTML5 outline lets every section start with its own H1.
What is true
MDN says nesting H1s in sections was never best practice and is now non-conforming. Browsers never built that outline.

Sources: Google[3][1]; Search Engine Roundtable[5]; MDN[9].

So why does this checker still warn about a second H1, and why does the GEO Audit check for exactly one? Because Google is not the only reader. MDN’s guidance is that multiple H1s are allowed by the HTML standard but are not considered a best practice, and that a page should generally have a single H1 that describes its content, similar to the <title>[9]. One H1 tells a screen reader user, a summariser and a crawler the same thing about the page’s topic. Two make them guess. In practice the second H1 is rarely a choice: it is the logo, a cookie banner or a modal title that a theme wrapped in <h1>. The checker points at the logo case specifically.

The H1 and the title tag are different jobs
The <title> is what shows in the browser tab and, usually, in search results. The H1 is the headline people see on the page. They should describe the same topic. Google draws on both when it writes a title link[2], so a page whose title says “Pricing” while its H1 says “Welcome” gives it two different answers. Write the title with the title tag guide and see both in the SERP preview.

Heading hierarchy and accessibility

The W3C’s Web Accessibility Initiative puts the rule simply: nest headings by their rank, from H1, the most important, to H6, the least. Then: “Skipping heading ranks can be confusing and should be avoided where possible: Make sure that a <h2> is not followed directly by an <h4>.” Going back up is different: after an H4 subsection, the next H2 simply starts a new section[11]. MDN adds the practical version: do not skip levels, and do not use heading elements to resize text; use CSS font-size instead[9].

A clean outline
<h1>Running shoes for beginners</h1>
  <h2>How do I choose my first pair?</h2>
    <h3>Cushioning</h3>
    <h3>Heel-to-toe drop</h3>
  <h2>Our picks</h2>
    <h3>Best overall</h3>
    <h3>Best for trails</h3>
  <h2>When should I replace running shoes?</h2>

In WCAG terms, real heading markup is how you meet Success Criterion 1.3.1, Info and Relationships: technique H42 uses h1 to h6 so that headings are programmatically determinable, not just big and bold[13]. Success Criterion 2.4.6, Headings and Labels, at level AA, asks that headings and labels describe their topic or purpose. It does not require headings; it requires the ones you have to be descriptive[12]. That is why the checker flags empty headings and duplicates: a list of headings that reads “Overview, Overview, Learn more” describes nothing.

Two cases look like skips and are not. A level jump going up (H4 to H2) is fine, as above. And a page whose first headings are in the navigation or a promo bar, before the H1, is not skipping anything, but it does mean screen reader users meet your menu titles before your content. The checker lists those as a note, and you can hide menu and footer headings in the outline to see the content alone.

Should your headings be questions?

Some of them. The GEO Audit’s question-shaped headings check looks at your H2, H3 and H4 headings and counts one as a question if it contains a question mark or starts with how, what, why, when, which, who, is, are, can, does, do or should. It passes when at least one heading is a question. This checker uses the identical rule, so its share and the audit’s verdict always agree.

The case for it is reasoning, not a published ranking rule. People type and speak questions into AI assistants, so a heading that is a question, with a direct answer in the first sentence beneath it, is a self-contained passage that matches one. It also helps a person who skims the outline find their question. No AI search engine documents that it rewards question headings, and you should not turn every heading into one: “Our picks” is clearer than “What are our picks?”.

Headings rewritten as questions
Label headingAs the question it answers
PricingHow much does it cost per month?
CompatibilityDoes it work with Shopify?
SetupHow long does setup take?
Cancellation policyCan I cancel at any time?
Our picksOur picks (a list reads fine as a label)

Answer the question right away. A question heading followed by three paragraphs of preamble is worse than a label. The readability checker tests whether a page’s opening paragraph works as a quotable answer, and the People Also Ask guide covers how to find the questions people actually search. If a page is a set of questions and answers, mark them up with the FAQ schema generator.

How an answer engine might split your page

The last panel in the result cuts your page at every heading and shows, for each section, the headings above it, the words in it and how it starts. That is how a header-aware splitter such as LangChain’s works: each chunk is the text under one heading, with its parent headings kept as metadata[15]. Read it with two questions in mind:

  • Does each section stand on its own? A passage lifted out of the page keeps its heading and loses everything around it. “Best overall” under “Our picks” is clear in context and vague alone, which is one more reason duplicate headings hurt.
  • Is any section too big? Over 400 words with no subheading is our threshold, not a published one. A section that long usually covers several points, and splitting it with H3s gives each point its own passage.
What this view is not
It is not a picture of what ChatGPT, Perplexity or Google stored. None of them publishes how it splits pages. It is a model of a common, documented approach, useful because it makes the structure of your page visible, not because it predicts an index.

Headings that are hidden or used for styling

The checker reports headings hidden by the markup itself: the hidden attribute, aria-hidden="true", an inline display:none, and common screen-reader-only classes such as sr-only, visually-hidden and WordPress’s screen-reader-text. It cannot see rules in your stylesheet or changes made by scripts, so a heading hidden by CSS shows up as visible.

Hidden is not automatically wrong. A heading in a closed mobile menu or a tab is hidden for good reasons, and Google’s spam policies say that accordion and tabbed content, and text that is only accessible to screen readers to improve their experience, are not hidden text. What the policies do describe as abuse is text placed solely to manipulate search engines and not easily viewable by people, such as white text on a white background or text positioned off-screen[6]. A keyword-stuffed H1 hidden from view is that pattern.

Headings used for styling are the more common problem. The giveaways are a heading level chosen for its font size (an H4 where an H3 belongs), a whole paragraph or product card wrapped in a heading tag, and footer column titles marked up as H2s that compete with your content. Shopify’s theme guidance says it plainly: headings set the logical order of content, not the design[19].

Fixing headings in WordPress, Shopify and Next.js

Most heading problems come from a template, not from the person writing the page. Find where the tag is set, change it once, and every page that uses the template is fixed.

WordPress’s documentation says that in most cases the page title is used as the <h1>, with Heading blocks added as H2, H3 and so on, and that this can vary by theme or template. The block editor shows the page’s headings in the Outline tab of the Document Overview, and you change a Heading block’s level from its toolbar or the block settings[16]. So: do not add an H1 block to a post whose theme already prints the title as one. If the checker finds a logo H1, it is in the theme’s header template.
header.php (classic theme): the logo is a link, not a heading
<!-- Before -->
<h1 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>"><?php bloginfo( 'name' ); ?></a></h1>

<!-- After -->
<p class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>"><?php bloginfo( 'name' ); ?></a></p>

Heading checklist

Run through this before you publish a page or ship a template change. Your ticks are saved in this browser only.

Before you call the headings done
0/8

Check the headings on every page

This checker reads one page. Heading problems usually come from templates, so the same logo H1 or skipped level is on hundreds of pages, and the one-off problems hide in old posts nobody opens. The GEO Audit crawls your site and runs 31 checks on every page, including the three you saw above: exactly one H1, a clear heading hierarchy, and question-shaped headings, with each failing page listed.

Free
10
pages audited per brand
Starter
50
pages audited per brand
Growth
500
pages audited per brand

The free account audits 10 pages with an email address and no card. Paid plans audit more and re-run on a schedule; every limit is on the pricing page. For a deep check of one URL, the AI SEO checker runs all 31 checks for free.

Questions people ask

What does an H1 checker do?

It reads a page's HTML and lists every heading from H1 to H6 in the order they appear. This one draws them as an indented outline, counts each level, and flags a missing H1, several H1s, skipped levels, empty or image-only headings, very long or duplicated headings, headings hidden in the markup, and an H1 that has nothing in common with the page title.

Is it bad to have more than one H1?

Not for Google. John Mueller said in 2019 that Google's systems don't have a problem with multiple H1 headings on a page, and that a site can do perfectly fine with no H1 or with five. MDN still calls one H1 per page the best practice, and the GEO Audit checks for exactly one, because one H1 states the page's topic without ambiguity. Treat extra H1s as worth tidying, not as an emergency.

Does heading order matter for SEO?

Google's SEO Starter Guide says headings in semantic order are fantastic for screen readers, but that from a Google Search perspective it doesn't matter if they are out of order. Order matters for people: the W3C's accessibility tutorial says skipping heading ranks can be confusing and should be avoided. Fix skipped levels for readers, not for rankings.

Can I skip from H2 to H4?

Avoid it going down. The W3C tutorial gives that exact case, an H2 followed directly by an H4, as the thing not to do. Going back up is fine: an H4 followed by an H2 just closes the subsection. If you used H4 because it is smaller, keep H3 and change the font size in CSS.

Should my H1 be the same as my title tag?

They should be about the same thing, not necessarily word for word. Google builds a result's title link from several sources, including the <title> element, the main visual title and heading elements such as <h1>. A title can add your brand and a reason to click, while the H1 reads naturally on the page. The checker marks them as identical, title plus brand, sharing keywords, or very different.

Why does the checker not see headings I can see in my browser?

Because they are added by JavaScript. The checker reads the HTML your server sends, without running scripts. Google renders JavaScript, but Vercel's analysis of its network found that the major AI crawlers, including GPTBot, ClaudeBot and PerplexityBot, do not. If your headings only appear after scripts run, render them on the server.

Do question headings help with AI search?

No AI search engine documents a rule that rewards them, so be wary of anyone who promises that. The reasoning is simpler: people ask assistants questions, and a heading that matches a question, followed by a direct answer, is a passage that is easy to match and quote. The GEO Audit scores it as a check because it is cheap to do and helps readers who skim as well.

Keep reading

Sources

[1]SEO Starter Guide — Google Search Central, updated 10 December 2025
[2]Influencing your title links in search results — Google Search Central, updated 10 December 2025
[3]Multiple H1 Headings: How to Handle Them for SEO & Accessibility? (#AskGoogleWebmasters) — Google Search Central on YouTube (John Mueller), October 2019
[4]H1 Headings: Over 50% of SEOs Doing it Wrong? — Search Engine Journal (Roger Montti), 12 May 2021
[5]Google Says H1 Tags Are Not Critical For Search Ranking — Search Engine Roundtable (Barry Schwartz), 1 October 2019
[6]Spam policies for Google web search: hidden text and link abuse — Google Search Central, updated 28 August 2026
[7]Understand the JavaScript SEO basics — Google Search Central, updated 4 March 2026
[8]The rise of the AI crawler — Vercel, with MERJ, 17 December 2024
[9]HTML section heading elements (h1 to h6) — MDN Web Docs, last modified 26 August 2026
[10]HTML Living Standard: Headings and outlines — WHATWG, read 7 October 2026
[11]Headings (Page Structure Tutorial) — W3C Web Accessibility Initiative, updated 4 May 2017
[12]Understanding Success Criterion 2.4.6: Headings and Labels — W3C, WCAG 2.2, read 7 October 2026
[13]H42: Using h1 to h6 to identify headings — W3C, WCAG 2.2 Techniques, updated 6 September 2026
[14]Screen Reader User Survey #10 Results — WebAIM, survey run December 2023 to January 2024
[15]Split markdown (MarkdownHeaderTextSplitter) — LangChain docs, read 7 October 2026
[16]Heading block — WordPress.org documentation, updated 4 June 2026
[17]SEO frequently asked questions — Shopify Help Center, read 7 October 2026
[18]Adding keywords to improve SEO — Shopify Help Center, read 7 October 2026
[19]Accessibility best practices for Shopify themes — Shopify.dev, read 7 October 2026
Updated 2026-10-07