Title tag identical to the H1
What is this issue?
This check compares the page's <title> with its first <h1> and reports the
page when the two are the same text.
They are compared on wording only: differences of capitalisation and of whitespace are ignored, so "Running Shoes" and "RUNNING SHOES" count as identical. Anything else counts as different — a title that adds a brand suffix, a qualifier or a location is not reported.
For a page to pass this check:
- The title and the H1 say the same thing in different words, or one of the two is absent, or the page is already reported as a soft 404 (#129).
Example: <title>Running shoes for wide feet | Acme</title> with
<h1>Running shoes for wide feet</h1> passes — the two differ. The same title
without the brand suffix does not.
This is advice, not a defect: it is valid markup, it ranks perfectly well, and it never deducts from the health score. What it points at is a missed opportunity rather than a mistake.
Why it matters
A page gets to describe itself twice, to two different audiences, and copying one string into both spends both chances on one phrasing.
- The title is an advertisement. It is read in a list of ten results by somebody who has not yet decided to visit. It needs the qualifier, the brand and the reason to choose this result over the one above it.
- The H1 is a confirmation. It is read by somebody who has already arrived. It needs to say "yes, this is the page you wanted" as directly as possible, and it does not need the brand — the reader can see whose site they are on.
- Two phrasings cover more ground. Search is a matching problem. Two honest descriptions of the same page match more of the ways people ask for it than one description written twice.
There is no ranking penalty and no measurable click-through cost that can be pointed at, which is exactly why this is a suggestion rather than a defect. It never moves the health score.
It is most useful in bulk: a whole site where the title and the H1 are identical is a template rendering one field twice, and changing the template is one edit that improves every page.
How to fix it
Write the title for the result list. Lead with what the page is about, then add the qualifier that makes this result the right one — a size range, a location, a year, a price — and finish with a short brand.
Write the H1 for the reader who arrived. Shorter, plainer, no brand. It confirms the click rather than competing for it.
Change the template, not the pages. Identical pairs across a whole site are one template rendering one field into both slots. Give the template two fields, or derive one from the other with a pattern that actually differs.
Do not pad one of them to make them different. Adding a word nobody needs in order to clear a check makes the page worse. If the honest title and the honest H1 really are the same sentence, that is a reasonable answer — this is advice, and it costs nothing to leave.
Keep both accurate. Google replaces a title that misdescribes the page. A different phrasing is the goal; a different promise is not.
Examples
Example 1: Two headlines doing two jobs
Scenario: A category page.
Passes because: the title carries the qualifier and the brand; the H1 is the plain confirmation.
<title>Wide-fit running shoes for men, sizes 6–15 | Acme</title>
<h1>Wide-fit running shoes</h1>Example 2: A template rendering one field twice
Scenario: A CMS field called "Page heading" is used for both slots.
Fails because: the two strings are identical after case and whitespace are normalised.
<title>Running shoes</title>
<h1>Running shoes</h1>Corrected version: the template composes the title from the heading plus the category and the brand.
<title>Running shoes: road, trail and racing | Acme</title>
<h1>Running shoes</h1>Example 3: Different case is still identical
Scenario: A design system renders the H1 in capitals through CSS, and the markup carries capitals too.
Fails, because casing is not a difference of wording. The reader sees the same sentence twice.
<title>Running Shoes</title>
<h1>RUNNING SHOES</h1>How PixyScan detects this
Takes the document title. The
<title>from inside<head>, trimmed.Takes the first
<h1>. Its text content, with runs of whitespace collapsed. The first one is what a reader meets, and it is the one every other heading check in PixyScan reads. If a later H1 happens to match the title while the first does not, the page is not reported.Normalises both. Case is folded and whitespace is collapsed. Nothing else is done — no brand suffix is stripped, no stop words are removed. Anything cleverer would start reporting pages whose two headlines genuinely differ, and the advice ("write the second one differently") only makes sense when they are the same string.
Compares them. The page is reported only when the two normalised strings are identical.
Skips the page when either is missing or empty. A page with no title is the missing-title check's business, and a page with no H1 is the missing-H1 check's. Neither is reported here.
Skips a page reported as a soft 404 (#129). An error screen's title and H1 are the same sentence by nature, and "write these two differently" is not advice anybody wants on a page they have just been told to return 404 for.
What we store
Storage Level
Page Level
Database Table / Prisma Model
PageSeoBasicsData — the title, and the headings
audit_issues.details — the finding
Fields Used
| Field | Type | Description |
|---|---|---|
| title | String | The document title |
| h1Count | Int | How many H1 elements the page has |
| headingTree | Json | Every heading in document order, with its text (clipped to 200 characters) and level |
There is no column holding the H1 on its own; it survives inside headingTree.
The finding carries both strings as the page wrote them:
| Field | Type | Description |
|---|---|---|
| title | String | The title, trimmed |
| h1 | String | The first H1's text, whitespace-collapsed |
Detection Dependencies
- HTML Document (the
<title>element and the first<h1>)
Note
The finding stores both strings verbatim rather than the normalised forms they were compared as, so the row shows the reader exactly what is on the page.