Why every site has duplicate URLs
Duplicates are a byproduct of how the web works. The same article answers over HTTP and HTTPS, with and without www, with and without a trailing slash, and with whatever tracking parameters a campaign appends. Stores multiply the count: every sort order, filter and color choice mints a new address for the same page. None of these URLs is wrong on its own. The cost is dilution: links and signals spread across addresses a search engine then has to reconcile.
That reconciliation is canonicalization. Google groups duplicates into a cluster, weighs the signals attached to each member, and selects one URL to show and to credit with the cluster's links. Your tag, written as <link rel="canonical" href="..."> inside the head, is your nomination for that job. Redirects, sitemap entries, internal links and HTTPS all feed the same decision, and the outcome is only as clear as their agreement.
A strong hint, never a command
Google's documentation rates rel="canonical" as a strong signal, in the same class as a permanent redirect, and rates sitemap inclusion as a weak one. Strong is not binding. When your signals disagree, or the URL you nominated is a poorer version of the page, Google selects a different one and reports the override in Search Console. That is why most problems here are contradictions: a tag pointing one way while redirects, internal links or a noindex rule point another. The fix is to make the signals agree, not to repeat the tag.
The same logic explains why a self-referencing canonical, a tag on each page naming its own clean URL, is recommended rather than required. Google says a site without any declared canonical preference will likely do fine. Its value is defensive: it settles the question before a stray parameter, a capitalized path or a host variant raises it, and gives any audit a baseline.
Three ways into the reference
Alternate page with proper canonical tag is the Search Console status people meet most, and it usually means the tag is working exactly as written. The Page indexing report files it among reasons pages are not indexed, which alarms people more than it should. Duplicate without user-selected canonical means Google found duplicates and nobody stated a preference, so Google picked a representative on its own; when that pick matches yours, nothing needs fixing. The status most worth a closer look is Duplicate, Google chose different canonical than user: you did declare a preference, and Google weighed the evidence differently.
The second way in starts with the URL, since many duplicates are created at the server before any tag is read. A canonical domain decision, one host on HTTPS, is enforced with redirects rather than tags, while campaign and filter addresses have to stay reachable and therefore need a canonical instead. Conflicts belong on this path too. A page carrying a canonical and a noindex rule asks Google to consolidate it and drop it at once. A theme and a plugin printing multiple canonical tags may lead Google to discard every one.
The third way in is the platform. WordPress writes a canonical on single posts and pages but leaves archive pages, the home page and taxonomy pages without any canonical at all, and those gaps are exactly what a WordPress SEO plugin exists to close. One widely used example, Yoast SEO, adds a self-referencing tag to essentially every indexable page type and removes the core tag, so each page ends up with exactly one.
Hosted systems vary more than people expect. Shopify generates canonicals automatically and folds product URLs reached through a collection into the plain product URL, so most stores never need to touch the setting. Site builders are far less uniform, and a few do nothing at all by default: Webflow writes no tag until a global canonical URL is entered in its site settings. Every platform page says what the system does by default, where the override lives, and what tends to break after an update.
Topic hubs and free tools
The longer guides sit under three hubs. Canonical Tag Fundamentals covers what the tag is, what a canonical URL means, how canonicalization works and the exact syntax. Implementing Canonical Tags covers adding the tag, checking it, and the mistakes that quietly undo it. Duplicate Content and Indexing Signals covers the neighboring controls, from redirects and robots directives to hreflang and keyword cannibalization, each explained through its interaction with the canonical. Alongside the guides, five free tools answer narrower questions:
- The canonical tag checker fetches a live URL and reports its canonical, redirects and robots directives.
- The bulk canonical checker runs that inspection across a list of URLs to expose template patterns.
- The canonical tag generator writes the element from a URL, normalized for host and protocol.
- The canonical tag validator tests pasted HTML against the published rules before it ships.
- The hreflang tag generator builds the alternate link set for language and region versions.
None of them can report the URL Google selected. That answer lives only in the indexed result of the URL Inspection tool. Declared is not the same as selected: View Source or a checker shows what a site says about itself; Search Console shows what Google decided after weighing everything. Most canonical work is closing the distance between those two answers.