How to fix duplicate content on Shopify
Find the duplicate URLs Google reports for your Shopify store, check which canonical it chose, and fix real duplicates with redirects and rewrites.
What this is for
Duplicate content on a Shopify store is usually one product or collection reachable at several URLs, plus text that also appears on other sites. Google groups copies together and picks one canonical URL to show. source, checked 28 September 2026
Much of it is harmless, because Shopify adds canonical tags on its own. The job is to find the cases that are not harmless: Google choosing the wrong page, two products competing for one search, or copied text. By the end you will know which duplicates Search Console reports, which ones need a fix, and what fix each kind needs. source, checked 28 September 2026
Time needed and what you need
Time needed: about 2 hours. Reading the report and inspecting sample URLs takes most of it; merging products and adding redirects is quick once you know which ones.
- Owner or full access to your store's Google Search Console property
- Staff access to Products and to the theme code editor in your Shopify admin
- A browser where you can view a page's source
- A list of any products you copied to sell a colour, a bundle or a wholesale price
The steps
Diagnose before you change anything. Most duplicate notices on a Shopify store need no action, and the wrong fix makes things worse.
1. Learn where Shopify stores create duplicate URLs
The same product loads at /products/name and inside each collection at /collections/collection-name/products/name. Shopify's own theme documentation flags this on the Liquid filter that builds the collection version of the link. source, checked 28 September 2026
Sorting and filtering add more: each sort order or filter makes a new URL showing the same products. Google's Page indexing help names these parameter URLs as a common cause of large numbers of duplicates. source, checked 28 September 2026
- Product URLs inside a collection path
- Variant URLs ending in ?variant= and a number
- Sorted and filtered collection URLs
- Products copied in the admin for a colour, a bundle or a wholesale price
- Descriptions pasted from a supplier
2. Open the Page indexing report
In Search Console, open Pages under Indexing and scroll to the reasons pages are not indexed. Two reasons matter here: Duplicate without user-selected canonical, and Duplicate, Google chose different canonical than user. Google's help treats a page marked duplicate as normal, because it means the main version was found and indexed. If you have no property yet, set up Google Search Console and wait for data first. source, checked 28 September 2026
3. Inspect a sample of the flagged URLs
Click each reason, pick five example URLs, and run them through URL Inspection. Compare the user-declared canonical, which is what your theme says, with the Google-selected canonical, which is what Google decided. source, checked 28 September 2026
If both name the plain /products/ URL for a product reached through a collection, nothing is wrong. Keep a list only of URLs where Google picked a page you did not expect.
4. Check the canonical tag your theme prints
Open a product through a collection link, view the page source and search for rel="canonical". Shopify's theme guide builds the tag in the head of theme.liquid from a global Liquid object. If the tag is missing, or names a page you would not choose, that is a theme fix for you or your developer. source, checked 28 September 2026
5. Point your own links at the main URL
Google asks sites to link to the canonical URL internally. If your theme's product cards link to the collection version of each product, ask your developer to switch them to the plain /products/ link. Consistent internal links are a signal Google reads alongside the tag. source, checked 28 September 2026
6. Merge copied products and redirect the old URL
Products you copied for a colour, a bundle or a wholesale price are real duplicates: two handles, near-identical text. Where you can, fold them into one product with variants, then redirect the retired product's URL to the one you keep. Shopify's SEO overview lists redirects among the technical jobs when you move or discontinue products. source, checked 28 September 2026
Google ranks a redirect as a strong signal that its target should be the canonical, so this settles which page shows. Add each one in your Shopify admin's URL redirect settings, from the old path to the product you kept. source, checked 28 September 2026
7. Rewrite descriptions copied from suppliers
Supplier text duplicates you against other shops rather than against yourself, and no tag fixes that. Shopify's help centre warns against it directly. Rewrite your best sellers first, in your own words, with details only you know. The product page audit guide covers what else those pages need. source, checked 28 September 2026
8. Keep robots.txt and noindex out of it
Blocking duplicate URLs in robots.txt looks tidy but works against you: Google says robots.txt is not a canonicalization tool, and blocked URLs can still be indexed without their content. A noindex tag removes a page from search altogether. source, checked 28 September 2026
Shopify already generates a robots.txt for every store, so only add a robots.txt.liquid template for a specific rule you understand. source, checked 28 September 2026
9. Request indexing, then give it two weeks
After a real fix, inspect the page you want shown and request indexing. Google says it may keep pages in a duplicate cluster for up to two weeks even after the content is fixed, and indexing requests have a quota, so use them on the pages that matter most. source, checked 28 September 2026
A worked example
For a pet accessories store with 220 products and 14 collections
Worked example (an invented store, with invented numbers)
The Page indexing report lists 610 URLs as Duplicate without user-selected canonical and 18 as Duplicate, Google chose different canonical than user.
Inspecting samples shows the 610 are sorted, filtered and collection-path versions of pages that are already indexed, so the store leaves them alone. The 18 trace back to 9 pairs of products it copied to sell one harness in two colour ranges.
The store merges each pair into one product with colour variants, keeping 9 products and adding 9 redirects from the retired URLs. Two weeks after requesting indexing, none of the 18 URLs is left in the Google chose different canonical group.
Common mistakes
Treating every duplicate notice as an error. Google's help calls the no-canonical duplicate status intended behaviour when the page it chose is the right one. Act only where it chose the wrong page. source, checked 28 September 2026
Pointing a canonical tag at a page that is not really a copy. Google will not accept a declared canonical that is unlike the page carrying the tag. source, checked 28 September 2026
Sending mixed signals, such as a sitemap listing one URL while the canonical tag names another. Pick one URL per page and use it everywhere. source, checked 28 September 2026
Deleting a copied product without a redirect. The old URL starts returning a not found error and any links pointing at it are wasted. Redirect it to the product you kept.
Questions people ask
Will duplicate content get my Shopify store penalised?
Not by itself. Google says some duplication is normal and not against its spam policies. The real cost is practical: signals split across URLs, and Google may show a page you did not choose. source, checked 28 September 2026
Should I add a canonical tag to every page myself?
No. Shopify themes print one already. Google recommends that the main page carry a canonical pointing to itself, so check that the tag on a /products/ page names that same page. source, checked 28 September 2026
Why does Google pick a different URL from my canonical tag?
Because the tag is a preference, not an order. Google also weighs redirects, HTTPS, sitemaps and how your own pages link, and picks the version it thinks serves searchers best. source, checked 28 September 2026
See this on your own store
Paste your store URL. The first pass takes about a minute and needs no account. Save a card (nothing is charged) and Tilly reads the whole store and works out who buys from you.