Audit my site →

Blog

"No H1 Heading Found" But the Heading Is Right There

When a tool reports a missing H1 on a page that visibly has one, the markup and the delivery are different suspects, and they need different fixes.

I checked our own Search Console to see what people search before they land on this page. The top query was <h1>not found</h1>, angle brackets included, 799 impressions over sixteen months. I have only ever seen a string written that way in an audit tool’s output. Lower down the same report, in single digits, sits a query that is harder to misread: “moz says i’m missing an h1 but i have one.”

That person is looking at their own headline while a piece of software tells them it does not exist. The usual instruction to go and add one does not help them, because two different faults produce that same warning and the fixes point in opposite directions.

The first fault is an H1 that exists only after JavaScript runs. Screaming Frog has a diagnostic named for it, “JavaScript: H1 Only in Rendered HTML”, and a single line of the explanation covers the mechanism: this means a search engine must render the page to see it. The tool compares two columns for the same URL, the h1 found in the original HTML before JavaScript and the h1 found in the rendered HTML after JavaScript has been processed. Chrome’s own documentation puts the general case plainly: when JavaScript adds, removes, or edits nodes, the DOM becomes different than the HTML.

So the first thing I do is compare the two myself, before touching any markup. View Source gives the HTML as it arrived. The Elements panel gives the DOM after scripts have run. If the h1 is in Elements but not in View Source, something is adding it after the page arrives, and that is the thread to pull. If it is in neither, start with the markup.

The markup fault is the ordinary one. A visible headline is often a div or a span carrying heading-sized styling, which reads as a heading to a person and as an ordinary element to a parser looking for a specific tag. Screaming Frog triggers its issue when a page has a missing <h1> tag, the content is empty, or contains only whitespace, and the example of a failure it gives is an h1 holding a single space. Empty ones are measurable at web scale: the HTTP Archive’s 2025 crawl found an <h1> present on 71% of desktop pages and 70% of mobile pages, with non-empty usage slightly lower at 66% for both. The same chapter is careful to say that a missing h1 is not always a mistake, since some designs skip a meaningful one on purpose.

Ahrefs audited 1,002,165 domains and reported “H1 tag missing or empty – 59.5% of sites”, which puts it tenth of the fifteen issues on their list. Above it sat “Meta description tag missing or empty” at 72.9% of sites and “3XX redirect” at 95.2%. Common, then, and worth stating as three sites in five rather than as a superlative.

Google claims remarkably little for the fix. Its SEO Starter Guide files the number and order of headings under a section titled “Things we believe you shouldn’t focus on”, and says that having your headings in semantic order is fantastic for screen readers, but from Google Search perspective, it doesn’t matter if you’re using them out of order. The same passage adds that there is no magical, ideal amount of headings a given page should have. Both statements are about order and count rather than absence, and I have not found Google putting a number on absence anywhere. The red icon in your audit is a prompt to go and look, and it is not a measured loss.

The argument Google makes in passing is the stronger one. WebAIM asked screen reader users what they do first to find information on a long page, and 71.6% chose “navigate through the headings on the page”, against 13.6% for the find feature and 6.4% for reading through; 88.8% called heading levels very or somewhat useful. Every real heading you fail to mark up is one less stop on the route most of those people take through your page. The axe engine checks this as page-has-heading-one, which exists to ensure that the page, or at least one of its frames contains a level-one heading, and axe rates it Moderate, filing it under best practices rather than among its WCAG A and AA rules. So fix the tag when the tag is the problem. When View Source came back without your heading, the H1 was the cheapest thing you learned that day. Go and check how much of the rest of that page also arrived empty.

More articles

← All posts