← All checks
SEO & AI Visibilitymediumduplicate-page-title

Two or more crawled pages share an identical title

ShipReady found the same non-empty title text on two or more distinct paths among the pages its crawl fetched.

Why it matters

Titles are how people tell tabs, bookmarks and search listings apart. When several different pages carry the same title, that distinction is lost, and a shared title is often a sign that one layout default was never overridden.

This page documents what ShipReady measured. It does not claim any effect on search ranking or indexing.

How ShipReady detects it

What it inspects

ShipReady reads the title text from pages the crawl had already fetched, using the same extraction patterns as its single-page metadata rules. It makes no additional requests.

Values are compared after HTML entities are decoded and whitespace is collapsed. Case and punctuation are not altered, so "Pricing" and "PRICING" are different values.

Pages are identified by URL path with the query string and any trailing slash removed, so /checkout?plan=pro and /checkout?plan=max count as one page.

What triggers a finding

The same normalised, non-empty title appears on at least two distinct paths in the crawled sample.

A title that matches a known scaffold default (for example "Create Next App", case-insensitively) is not reported by this rule, because unedited-scaffold-branding already covers it.

At most three duplicate groups are reported per scan, and the evidence names at most five paths per group. The total page count in the evidence is not capped.

What the evidence shows

The quoted title text was served identically by each listed path in the HTML ShipReady fetched during this scan.

Limits of this check

Only pages fetched within the crawl budget (ten pages by default) are compared. Two pages never fetched can share a title without being reported, and a clean result does not mean the whole site has unique titles.

Titles set only by JavaScript after load are not seen. Missing or empty titles are never treated as a shared value; other rules cover those.

Only exact matches after normalisation are reported. Near-duplicates, and titles that differ only by case or punctuation, are not.

ShipReady does not judge whether pages that legitimately share a title should, and does not measure how a search engine treats them.

How to fix it

Find where the shared title is set

Look for a layout, shared head component or index.html that supplies a default title that individual routes never override.

Give each distinct page its own title

Write a title that describes that specific page. Pages that are genuinely the same content under different URLs are a canonical question rather than a title question, so do not change canonicals solely to silence this finding.

How to verify the change

Compare the deployed titles

Fetch each listed path and read the title element in the returned HTML. Then re-run the scan.

Expected: Each listed path returns a title distinct from the others, and the finding no longer appears for that group.

Related checks