Skip to main content
Beta: Front-End Checklist is currently in beta. Some issues are still being fixed. Thanks for your patience.
SEOHigh

Keep page titles unique

Checks that the <title> tag is unique across all pages of the site to avoid duplicate title SEO issues.

Utilities
Quick take
Typical fix time 10 min
  • Every page must have a `<title>` tag with content unique across the entire site
  • Duplicate titles cause search engines to arbitrarily choose which page to show for a query
  • Use page-specific keywords in the title: `[Page Topic] | [Brand]` pattern
  • Google rewrites titles that are too generic, too long (>60 chars), or keyword-stuffed
Why it matters: Duplicate titles prevent Google from determining which page is the authoritative result for a given query, splitting ranking signals and reducing total organic visibility.

Rule Details

The <title> tag is the primary on-page signal for what a page is about. Google's title link guidance (opens in new tab) makes it clear that duplicate titles tell search engines multiple pages cover the same topic, forcing them to pick one arbitrarily and creating the same ambiguity this rule is meant to eliminate.

Code Example

<!-- Homepage -->
<title>Buy Running Shoes Online | ShoeShop</title>
 
<!-- Category page -->
<title>Women's Trail Running Shoes | ShoeShop</title>
 
<!-- Product page -->
<title>Brooks Ghost 16 Women's Running Shoe | ShoeShop</title>
 
<!-- Blog post -->
<title>How to Choose Running Shoes for Flat Feet | ShoeShop Blog</title>

Why It Matters

Duplicate titles prevent Google from determining which page is the authoritative result for a given query, splitting ranking signals and reducing total organic visibility. They also make it harder to write a strong page title strategy that aligns with the snippet and title-link expectations Google documents in Search results title and description controls (opens in new tab).

❌ Duplicate Title Patterns

<!-- All category pages share the same template without a unique element -->
<title>Category | ShoeShop</title>   <!-- /shoes -->
<title>Category | ShoeShop</title>   <!-- /boots -->
<title>Category | ShoeShop</title>   <!-- /sandals -->
 
<!-- CMS default not overridden -->
<title>Untitled | MyWebsite</title>
<title>Home | MyWebsite</title>   <!-- Used on 12 pages -->

Title Best Practices

CriterionRecommendation
Length50–60 characters (truncated at ~580 px in results)
UniquenessEvery page must have a distinct title
Keyword placementPut the primary keyword near the start
Brand inclusionAppend brand at the end: `Topic
Avoid keyword stuffingOne clear topic, not a comma-separated list of keywords

Dynamic Title Generation

Next.js (App Router)

// app/products/[slug]/page.tsx
import { Metadata } from 'next'
 
export async function generateMetadata({ params }): Promise<Metadata> {
  const product = await getProduct(params.slug)
  return {
    title: `${product.name} | ShoeShop`,
  }
}

WordPress

Use SEO plugins (Yoast, RankMath) with per-page title templates that include the post/page title dynamically so the rendered title stays unique without drifting away from the page's H1 and search intent.

Finding Duplicates

  1. Crawl the site with Screaming Frog or a sitemap-based crawler
  2. Export <title> values and use Excel/Sheets "COUNTIF" to find values appearing more than once
  3. Google Search Console → Pages → filter by "Duplicate, Google chose different canonical-url"

Exceptions

  • Utility or intentionally noindex pages may keep minimal metadata when richer search presentation is not a goal.
  • Template-driven pages can look repetitive in isolation; confirm the fully rendered production output before flagging duplication or omission.
  • If a page is intentionally redirected or excluded from indexation, resolve that crawlability decision before treating metadata polish as the primary issue.

Verification

Automated Checks

  • Inspect rendered HTML and HTTP headers to confirm the expected metadata or crawlability signal is present.
  • Test the affected URL with Google Search Console or equivalent tooling where relevant.
  • Re-crawl a representative page set after deployment.

Manual Checks

  • Confirm the change does not create conflicting canonical-url, robots, or structured-data signals.

Use with AI

Copy these prompts to use with your AI assistant, or install the MCP server to use directly from Claude, Cursor, or Windsurf.

Check

Verify implementation

Crawl all pages and extract `<title>` tag content. Group pages by identical title text and flag duplicates. Also flag pages with no title, empty titles, or titles matching the CMS default (e.g., 'Home', 'Page', 'Untitled').

Fix

Auto-fix issues

Give each page a descriptive, unique title incorporating the page's primary keyword: `[Specific Topic] – [Site Name]`. For blog posts: use the post title. For products: use product name + key differentiator. For category pages: use the category name + context.

Explain

Learn more

Explain how duplicate titles affect crawl budget, indexing prioritization, and keyword ranking; and why Google rewrites titles it considers misleading or non-descriptive.

Review

Code review

Review metadata generation, rendered HTML, structured data, and response headers related to Keep page titles unique. Flag exact routes or templates where search-facing output violates the rule, and describe how to verify the final page output.

Sources

References used to support the guidance in this rule.

Further Reading

Tools and supplementary material for exploring the topic in more depth.

Google Search Console
search.google.comTool

Rules that often go hand-in-hand with this one.

Use a single descriptive H1

Validates that each page has exactly one H1 tag containing a descriptive, keyword-relevant heading

SEO
Write a descriptive page title

Validates page title presence and length

SEO
Avoid duplicate meta descriptions

Checks for duplicate meta descriptions across the site

SEO

Was this rule helpful?

Your feedback helps improve rule quality. This stays internal for now.

Loading feedback...
0 / 385