---
title: "Canonicalize duplicate URLs"
description: "Duplicate URLs split signals across protocol, host, slash and parameter variants. Pick one canonical form, emit one absolute self-referencing canonical per page, and align internal links, sitemap entries, hreflang and og:url with it. Use redirects when the duplicate should not exist at all."
url: "https://seo-mcp.io/t/canonicalize-duplicate-urls"
---

# Canonicalize duplicate URLs

Duplicate URLs split signals across protocol, host, slash and parameter variants. Pick one canonical form, emit one absolute self-referencing canonical per page, and align internal links, sitemap entries, hreflang and og:url with it. Use redirects when the duplicate should not exist at all.

## Prerequisites

- A crawl of the site to enumerate URL variants

## Steps

1. **Choose the canonical URL policy** — Decide protocol, host, trailing slash and parameter handling once, then apply it to routing, canonicals and links. Lowercase paths and strip tracking parameters.
   Check: A redirect map exists for every variant that will not be canonical, such as http to https and apex to www.
2. **Emit one absolute self-referencing canonical** — Add a single link rel=canonical in the head of each indexable page, pointing at its own canonical URL. Remove plugin or component duplicates that emit a second value.
   Check: curl -s your production domain/page | grep -c 'rel="canonical"' returns exactly 1.
3. **Align every other signal** — Update sitemap loc values, internal links, og:url and hreflang entries to the same canonical URL. A canonical that contradicts the sitemap sends mixed signals.
   Check: For ten sampled pages, canonical, sitemap loc and og:url are identical strings.

## Source

@seo-mcp on 2026-10-19: https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls

Canonical: https://seo-mcp.io/t/canonicalize-duplicate-urls
