Fix library

How to fix a missing H1 tag

You fix a missing H1 by giving the page 1 clear main heading that states, in plain words, what the page is about. That is the whole fix. Google's SEO starter guide keeps the advice this simple: “Break up long content into paragraphs and sections, and provide headings to help users navigate your pages.” The heading serves readers first and machine extraction second. It is not a hidden ranking switch, and we will not pretend it is one.

The symptom: the page has a headline, the HTML does not

You look at the page and see a big, bold headline at the top. The audit says there is no H1. Both are true. The headline you see is a visual object. The H1 is a structural claim in the markup, and on this page nobody made it. When we open the source, the "headline" turns out to be a <div class="hero-title"> or a <span> styled to 48 pixels. To a human with a rendered page, they are identical. To a machine reading the raw HTML, one says "this is the main topic of this page" and the other says nothing at all.

The other common version is the opposite failure: the H1 exists, but it is spent on the wrong thing. A theme wraps the site logo in <h1> on every page, so every page on the site declares the same main topic: the company name. Your pricing page, your contact page, and your best guide all open with the identical heading. A crawler comparing them learns nothing about any of them.

The cause: themes and design-first markup

Almost nobody deletes an H1 on purpose. It goes missing at the template layer, in one of a few repeatable ways.

The pattern underneath all four is the same: the markup was written for how the page looks, not for what the page says. That works fine right up until a machine has to read it.

The fix: one heading that states the topic

Write one H1 that names what the page is about, in the language a searcher would use. Not the brand name, not a slogan, not "Welcome". The question the page answers, or the thing the page is. Then make sure the visual headline and the structural heading are the same element, not two parallel objects.

<!-- Before: a headline machines cannot see -->
<header>
  <h1><img src="/logo.svg" alt="Acme Roofing"></h1>
</header>
<div class="hero-title">Metal roof repair in Austin</div>

<!-- After: the logo is a link, the headline is the H1 -->
<header>
  <a href="/"><img src="/logo.svg" alt="Acme Roofing"></a>
</header>
<h1>Metal roof repair in Austin</h1>

There is a second payoff that matters more every month. AI answer engines pull passages out of pages, and a passage is easiest to pull when a clear heading sits directly above the text that answers it. A specific H1, followed by a direct first paragraph, is the shape of an extractable answer. Pages built that way get quoted. Pages whose main topic lives in a styled div make the machine guess, and machines that have to guess usually quote someone else. Our guide on missing answer blocks covers the paragraph half of that pairing.

Be honest: a missing H1 will not tank your rankings

Here is what the folklore version of this article will not tell you. HTML5 permits multiple H1s on a page, one per sectioning element, and the spec is fine with it. Google's own people have said repeatedly that heading usage is not the make-or-break signal the SEO industry treats it as. The starter guide itself says “There's also no magical, ideal amount of headings a given page should have” and that from a Google Search perspective it does not matter if headings are used out of semantic order. So no, a missing H1 is not a catastrophic error, and anyone selling it as a magic ranking factor is selling folklore.

The real value is duller and more durable. One clear main heading tells readers, screen readers, and extraction systems what the page is about, in one place, without ambiguity. That clarity is what makes the page easy to cite. We flag a missing H1 because ambiguity has a cost, not because a tag has a score.

Verify: read the source, then re-run the audit

Open the page source and search for <h1. You want exactly one match, and its text should say what the page is about, not the name of the company. Check two or three other page types on the site, because template failures repeat everywhere the template does.

Then check it the way the machines will. Paste the URL into the Brimm audit and confirm the heading check passes and the H1 text matches the query the page targets. If your headings exist but the levels are a mess, the fix for that is in our heading structure guide, and the rest of the fix library covers what we find after that.

See what your headings say to a machine.

Paste your link. We read the raw HTML the way a crawler does and tell you whether your main heading exists and what it claims. The preview is free.