
TL;DR
This check fires when a page renders without a single <h1> element in its markup. The <h1> is the top of your heading outline, the strongest on-page signal of what the page is about, and a landmark that screen readers and crawlers both lean on. The fix is almost always trivial: give the page exactly one honest <h1> that names the topic, and stop faking it with a big styled <div>.
What this check flags
The crawler walked your rendered DOM and found zero <h1> tags. That matters because the <h1> is the root node of the document outline: it tells search engines, assistive technology, and reader-mode parsers what the primary subject is before they read a word of body copy. A page without one is a book with no title on the spine.
The stakes are real but bounded. Google will not de-index you for a missing <h1>, and it can infer topic from the title tag and content. But you are throwing away a free, high-confidence relevance signal, and you are actively hurting keyboard and screen-reader users who navigate by heading. On a page you want to rank, that is a dumb thing to leave on the table.
A real example, and the fix
The most common cause is not a forgotten heading, it is a fake one. A page-builder or a designer styles a plain element to look like a headline, so it reads correctly to humans but is invisible to the outline:
<!-- Looks like a heading. Isn't one. -->
<div class="page-title" style="font-size:42px;font-weight:700">
Best Trail Running Shoes for 2026
</div>To a crawler that is body text in a big font. Promote it to a real element and let CSS handle the appearance:
<h1 class="page-title">Best Trail Running Shoes for 2026</h1>
<style>.page-title { font-size: 42px; font-weight: 700; }</style>The other frequent offender is a theme that drops the <h1> on interior templates (product pages, archives, landing pages) while keeping it on the blog. Fix it once in the template, not page by page. And do not overcorrect into multiple <h1> tags; one clear title beats three competing ones.
Real heading vs. fake heading
The difference is not how it looks, it is what the machine reads. This table is the whole audit in miniature.
| Signal | Real <h1> | Styled <div> |
|---|---|---|
| Appears in document outline | Yes | No |
| Screen-reader heading navigation | Reachable | Skipped |
| Weighted as topic signal | Strongly | As plain text |
| Reader-mode title extraction | Used | Ignored |
| Effort to fix | Already done | One tag swap |
How to detect it
- Lighthouse (SEO category): the "Document does not have a valid
hnheading" style audit and the accessibility heading checks both surface a missing or empty<h1>. - PageSpeed Insights: run the URL and read the SEO and Accessibility sections, which flag heading problems against the live rendered page.
- DevTools Elements panel: open the console and run
document.querySelectorAll('h1').length. Zero means missing; a number above one means you have competing titles to reconcile. - DevTools Accessibility tree: in the Elements panel, open the Accessibility pane and inspect the headings. If your visual title has role "generic" instead of "heading", it is a fake.
How to fix it
- Add exactly one
<h1>near the top of the main content that plainly states the page topic, ideally including the primary term you want to rank for, written for humans. - Promote fake headings. Swap styled
<div>or<span>"titles" for a real<h1>and move the styling to a class. - Fix it in the template. If a whole page type is missing its heading, patch the layout file so every page of that type inherits the
<h1>. - Keep the outline clean. One
<h1>, then<h2>for sections and<h3>beneath them, with no skipped levels.
For the wider outline picture, see our reference on heading structure and Google's own clarification on H1–H6 headings.
FAQ
Can a page have more than one <h1>?
HTML5 technically permits multiple <h1> tags within sectioning elements, and Google has said it can handle them. But for a clean outline and zero ambiguity about the page topic, one <h1> is the safer, simpler default. This audit only cares that at least one exists.
Does the <h1> need to match my title tag?
They should be about the same topic but do not have to be identical. The title tag is written for the search result snippet and browser tab; the <h1> is written for the person already on the page. Aligning the primary keyword across both reinforces relevance without looking spammy.
Will a missing <h1> get me penalized?
No. There is no ranking penalty for a missing <h1>. You simply forfeit a clean relevance signal and degrade accessibility, so it is a quiet drag rather than a hit. Still worth fixing because the cost is one line of markup.
My page-builder hides the <h1>. Is that a problem?
Visually hiding an <h1> with CSS while keeping it in the DOM is legitimate and common for design reasons, and it still counts for this check. Just make sure you hide it accessibly (for example off-screen positioning, not display:none) so screen readers still announce it.
Does an empty <h1> pass?
No. An <h1></h1> with no text, or one holding only a logo image with no alt text, gives the outline nothing to work with. The heading needs real, descriptive text to do its job.
Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.
About SEO ProCheck
Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.
Work With Me
Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.







