Troubleshooting guide · technical-seo · Published 2026-08-15 · 3 min read
Duplicate content and canonical conflicts
Debugging duplicate content by cause, choosing canonical versus 301, and fixing www, trailing slash, query and pagination duplication.
- ·Symptoms
- ·Causes
- ·Fix order
Symptoms
- Search results show two or three versions of the same page with slightly different URLs.
- Page-level reports label some pages as "Duplicate, Google chose different canonical than user specified" or "Duplicate without user-selected canonical".
- The page you intended to rank is not the one the engine picked.
- Internal links and page titles report as duplicated across URL variants.
Causes
Duplicate content usually comes from the site itself serving the same content at more than one URL.
- www versus non-www:
https://example.com/pageandhttps://www.example.com/pageserve the same body unless one host redirects to the other. - Trailing slash:
/pageand/page/are technically different URLs. - Query parameters:
?utm_sourceand?refor tracking?id=produce repeated copies of one page. - Pagination or faceted navigation creating many parameterized URLs all showing the category landing.
- Protocol copies lingering after http and https both respond.
- Session or case-sensitive path variants on a case-insensitive content system.
How to diagnose
- Run a targeted
site:search.site:example.comthen open each result that looks like the same page and compare the URLs. - Check the response for each variant with a fetch that shows headers, and note whether it returns 200 and a deduplication signal (canonical or redirect).
- Look for pages reported as duplicate in the indexing coverage report.
- Group every duplicate set into one preferred URL and one action.
Choosing canonical versus 301
Pick the mechanism by how you want the alternative to behave.
| Situation | Use | Why |
|---|---|---|
| Query parameter and tracking copies that must keep working | Canonical | You want the clean URL indexed but the parameter pages still usable |
| www versus non-www, merged pages, moved slugs | 301 | Redirect consolidates and retires the old URL permanently |
| Truly retired pages that should die | 301 to nearest live page | The old URL stops existing as a candidate |
A canonical consolidates signal without retiring the URL. A 301 retires the old URL and ports its equity in one hop. Details on the latter are in HTTP 301 redirects that preserve rankings, and the canonical mechanics are in canonical tags explained.
How to fix (ordered)
- Resolve the host question first. Pick one host and 301 the other to it, which kills the www versus non-www duplication cleanly. See www versus non-www.
- Standardize trailing slashes at the server layer, or add a canonical that points every slash variant at one form.
- Add a self-referencing canonical to the preferred page and point every tracking or query variant at it.
- For parameter-driven duplication, prefer canonicalization over parameter blocking where the pages must stay live.
- For pagination, put a canonical on each page that points at that same page or at the canonical landing, and stop each paginated page from self-conflicting. Guidance is in canonical or index for paginated content.
- Re-request the deduplicated version in Search Console and re-crawl the affected set.
Prevention
- Add canonical tags to the template level so every page has one by default.
- Keep one redirect target per old URL and one preferred host.
- Retain clean, parameter-free canonical URLs for every piece of content.
- Re-check the duplicate report after a deploy, because new URL generation can re-open old conflicts.