Every product in your Shopify store has at least two URLs. If that product appears in three collections, it has four. Shopify creates this duplicate content automatically — and most merchants never notice until their organic traffic stalls.
Shopify duplicate content is when multiple URLs on your store serve the same (or nearly identical) page content. It doesn't trigger a Google penalty — that's a myth — but it splits your ranking signals across those URLs. Instead of one strong product page with consolidated backlinks and engagement data, you get several weak pages competing against each other. According to a 2026 analysis by erock-marketing, stores with uncontrolled duplicate content see organic traffic drop by 20–40%.
How Shopify Creates Duplicate Content (Without You Knowing)
Shopify's URL structure is the root cause. When you add a product to a collection, Shopify generates a second URL that includes the collection path. Your product lives at /products/blue-widget, but it's also accessible at /collections/summer-sale/products/blue-widget. Both URLs load the same page with the same content.
This isn't limited to collections. Shopify creates duplicate URLs through:
- Collection-based product paths — every collection a product belongs to generates a separate URL
-
Tag filter pages — clicking a tag on a collection page creates a new URL like
/collections/shoes/tag-namewith a subset of the same products - Pagination — pages 2, 3, 4+ of collections are indexed as separate pages with overlapping content
-
Variant URLs — some themes append
?variant=123456to the URL, creating another indexable version
A store with 200 products across 10 collections can easily have 2,000+ indexable URLs when only 200 are unique. That's a lot of wasted crawl budget.
How Do You Find Duplicate Content on Shopify?
Before you fix anything, confirm you actually have a problem. Open Google Search Console, go to Pages (under Indexing), and look for pages listed under "Duplicate without user-selected canonical" or "Duplicate, Google chose different canonical than user." These are the pages where Google found your duplicates and made its own decision about which version to rank.
Next, click into the Performance report and search for your product names. If you see the collection-based URL ranking instead of the root product URL, your canonical tags aren't working as intended. Canonical tags are hints, not directives. Google can and does ignore them when other signals conflict.
You can also run a quick site search in Google: type site:yourstore.com "product name" and count how many URLs show up for the same product. More than one means duplicates are being indexed.
Run a Full Audit With Screaming Frog (Free)
Google Search Console shows you what Google sees, but Screaming Frog shows you everything your site generates. The free version crawls up to 500 URLs — enough for most small-to-mid-size Shopify stores.
Here's how to audit your store:
- Download Screaming Frog SEO Spider (free) and enter your store URL
- Before crawling, go to Configuration → Content → Duplicates and check "Enable near duplicates"
- Set rendering to None (Raw HTML) — Shopify serves all content in the initial HTML, so JavaScript rendering isn't needed and slows things down
- Start the crawl and wait for it to finish
- Go to Bulk Export → Content → Exact Duplicates to see every page that shares identical content with another URL
One Shopify-specific note: if your crawl returns a flood of 429 (Too Many Requests) errors, Shopify is rate-limiting the crawler. Shopify's Web Bot Auth feature lets you authorize Screaming Frog so it can crawl without hitting rate limits. Set this up in your Shopify admin under Online Store → Preferences before re-running the audit.
Fix Collection-Based Product URLs
This is the biggest source of Shopify duplicate content, and the fix depends on your theme.
Shopify themes use a Liquid filter called within that appends the collection path to product links. In your theme code, you'll find lines like:
<a href="{{ product.url | within: current_collection }}">
This creates the /collections/x/products/y URLs. Replacing it with:
<a href="{{ product.url }}">
…forces all internal product links to use the root /products/y URL instead. This is the single most impactful change you can make. It doesn't delete the collection-based URLs (Shopify still generates them), but it stops your theme from linking to them internally. That tells Google which version matters.
If you're not comfortable editing theme code, most Shopify SEO apps include a setting to remove the within filter automatically. Look for "canonical URL" or "product URL structure" in the app settings. For a broader look at SEO tools, see our Shopify SEO checklist.
Handle Tag Pages and Pagination
Tag filter pages — URLs like /collections/shoes/blue — are useful for shoppers but usually terrible for SEO. They show a filtered subset of the same products already on the main collection page. Google sees them as thin, duplicate content. Shopify recently changed how filter URLs work, which adds another layer — see our guide on Shopify filter URL changes and collection page SEO.
The fix: add a noindex meta tag to tag pages. In your theme's collection.liquid template, add this at the top:
{% if current_tags %}<meta name="robots" content="noindex, follow">{% endif %}
This keeps tag pages accessible to shoppers (the links still work) but tells Google not to index them. The "follow" directive means Google will still crawl links on these pages, so your products don't lose any link equity.
For pagination, Shopify already adds rel="next" and rel="prev" tags to paginated collection pages. Google deprecated support for these in 2019, but they don't hurt. If page 2 of a collection just shows products 13–24, it's not truly duplicate — it's a continuation. Most Shopify stores don't need to noindex paginated pages unless they have 1,000+ products in a single collection causing crawl budget issues.
Fix Your Robots.txt and Sitemap
Shopify auto-generates your robots.txt file with some built-in rules that block certain duplicate paths. As of 2026, Shopify's default robots.txt already disallows crawling of /collections/*+* (tag filter URLs) and some other known duplicate patterns.
Check your robots.txt at yourstore.com/robots.txt and verify these rules are present. If you've customized your robots.txt through the Shopify admin (Online Store → Preferences), make sure you haven't accidentally removed the default disallow rules.
For your sitemap (yourstore.com/sitemap.xml), Shopify automatically includes only the canonical product URLs — not the collection-based variants. This is one thing Shopify gets right out of the box. But verify it by opening your sitemap and spot-checking a few product URLs. If any contain /collections/ in the path, something's wrong with your theme or a third-party app has overridden the default behavior.
Variant URLs Need Canonical Tags Too
When a customer selects a product variant (size, color, material), some themes append ?variant=12345678 to the URL. This creates a separate indexable URL for every variant of every product.
Most Shopify themes handle this correctly — the canonical tag on variant URLs still points to the root product URL. But verify this by viewing the page source of a variant URL and searching for rel="canonical". If the canonical tag includes the variant parameter, it's broken.
The fix is in your theme's head section. Find the canonical tag output and make sure it uses {{ canonical_url }} (which Shopify sets to the root product URL) rather than {{ request.url }} (which includes whatever parameters are in the current URL).
What to Do This Week
Start with Google Search Console. If you see fewer than 10 duplicate pages flagged, your store is in decent shape — focus on the collection URL fix and move on. If you see hundreds, run the full Screaming Frog audit and work through the fixes above in order: collection URLs first (biggest impact), then tag pages, then variant URLs.
One audit a quarter is enough to stay ahead of new duplicates as you add products and collections. Set a calendar reminder. Duplicate content creeps back in every time you create a new collection or install a new app that modifies your theme's link structure.
If you're optimizing your Shopify store's conversion funnel alongside SEO, EasySell lets you build conversion-optimized order forms that work with your existing URL structure — no duplicate page issues added.