Website problems

Missing H1 heading

A missing H1 means a page contains no `<h1>` element, so the document never states its own subject in the one place designed to carry it. Screen-reader users lose the anchor they navigate by, and search engines fall back to the title tag or to anchor text from other pages. It is not an error that blocks indexing, and it is almost always a template fault rather than a decision anybody made about that page.

What the H1 is actually for

HTML headings describe the structure of a document, not its appearance. The `<h1>` is the top of that structure: it names what the page is about, once.

Assistive technology uses it as a landmark. Screen readers offer a headings list, and users move through a page by jumping between them — a page whose first heading is an `<h2>` reads as a fragment of something larger, and a page with no headings offers nothing to jump to at all.

Search engines use it as one signal among several for the page's subject. Google's documentation describes headings as a way to communicate the structure of content, not as a ranking control; its guidance is that they help both users and search engines understand the page.

And a reader uses it to confirm, in the first second, that they landed on the right thing. The browser tab carries the title; the page itself carries the H1.

Why it is nearly always a template fault

The pattern repeats across every stack: a layout renders the page heading from a field that is sometimes empty, and the handful of records where nobody filled it render no heading at all.

A second pattern is visual. A designer styles the page name with a `<div class="page-title">` because the H1's default size was wrong, and the styling survives while the semantics disappear. The page looks correct in every browser and has no heading in its markup.

A third is a hero component built around an image, where the visible text is inside the image and the heading was never written as text.

All three share a symptom: nothing looks broken. The only way to find them is to read what the server returned, which is why this is a defect discovered in bulk rather than page by page.

How to check it yourself

On one page, in the browser console: `document.querySelectorAll('h1').length` returns the count. Zero is the defect; more than one is a different question, covered on its own page.

In the source, search for `<h1`. Use view-source rather than the element inspector: the inspector shows the DOM after scripts have run, and a heading injected by JavaScript is not in the response a crawler reads first.

Across a site, the useful measure is the proportion of pages with exactly one H1, grouped by template. A single template accounting for every zero is the whole finding.

Browser developer tools include an accessibility pane that lists the document's headings in order, which shows both the missing H1 and any level skipped after it.

How to fix it

Give each page exactly one `<h1>` containing the page's own subject in words. On a product page, the product name; on an article, the article title; on a category listing, the category.

Fix it in the template, with a fallback that cannot render empty. A template that outputs `<h1>{{ page.heading }}</h1>` with no default is the fault; one that falls back to the page title is not.

Do not restore the element by styling a `<div>` to look like a heading, and do not solve a size problem by choosing `<h2>` instead. Headings carry meaning; CSS carries size. Style the H1 however the design requires.

Where the visible page name lives inside an image, add the text as a real heading and let the image sit beside it — or make the image a background and the heading the content.

Keep it distinct from the title tag where it helps. They may be identical, and there is no rule against that; the title is written for a search result, the H1 for someone already on the page.

How VeriFixScan detects it

The `seo.h1` check reads the headings of every page the crawler reached and reports those with no `<h1>`, with the URL of each one.

The finding is reported against the served HTML, which is the document a crawler reads on its first pass, and it is grouped so a template fault appears as one cluster rather than forty separate rows.

What the check does not judge is whether a given H1 is a good description of the page. Presence and count are measurable; whether the wording is right is a review, and the report says so rather than scoring it.

Frequently asked questions

Does a missing H1 hurt rankings?
Google has said there is no requirement to use an H1 and that its absence does not prevent a page ranking. What it costs is clarity: the search engine falls back to other signals, and screen-reader users lose their main navigation landmark.
Can the H1 be the site name on every page?
It can, and it is close to useless. A heading identical across every page identifies none of them, which is the same failure as a duplicated title tag wearing different markup.
Should the H1 match the title tag exactly?
It may. They serve different readers — the title appears in a search result, the H1 on the page — so they are often written differently, but no rule requires them to differ.

Sources

Related

VeriFixScan crawls a site and applies its checks to every page it reaches, keeping the evidence behind each finding. Scanning one website is free.

Scan a website