Pixel2Tech

Shopify Duplicate Content: Fix Collection, Tag and Filter URLs

Shopify makes duplicate URLs for collection-scoped products, tags and filters. Check which URL Google chose, then fix internal links and noindex rules.

  • Written by Pixel2Tech Team
  • Topic: SEO
  • Published
  • 8 min read
Several Shopify collection and product URLs pointing to one canonical product page

Key takeaways

  • Shopify creates duplicate URLs by design: a product can load at /products/handle and at /collections/any-collection/products/handle, and tags, filters, sort orders and pagination add more collection URLs.
  • Shopify themes typically point the canonical tag at the clean /products/ URL, so the bigger problem is internal links. If product cards use the Liquid 'within' filter, your own site keeps linking to the duplicates.
  • Before changing anything, run Search Console's URL Inspection tool and compare the user-declared canonical with the Google-selected canonical.
  • Don't point paginated collection pages at page 1 or use robots.txt as a canonical tool. Google advises against both.
  • Re-check after every theme update, because a new theme version or app can bring collection-scoped product links back.

Does Shopify create duplicate content?

Yes, by design. A Shopify product can load at /products/handle and at /collections/any-collection/products/handle, and collections spawn extra URLs for tags, filters, sort orders and pages. Shopify themes add canonical tags to most of these, so the real work is checking which URL Google chose and cleaning up your internal links.

Duplicate URLs aren't a penalty. Google's canonicalization documentation says some duplicate content on a site is normal and isn't a violation of its spam policies. Google groups duplicates, picks one URL as the canonical and usually shows that one in results.

The cost is less dramatic but real. Signals such as links get split across several URLs unless you consolidate them. Crawlers spend time on variations instead of new products. And sometimes Google picks a URL you didn't want, such as a collection-scoped product path, as the canonical.

To see what a default setup does, we checked Shopify's public Dawn theme demo store in September 2026. A collection-scoped product URL declared the plain /products/ URL as its canonical. A collection URL with a filter and a sort order declared the unfiltered collection as canonical. Page 2 of a collection declared itself canonical. A single-tag collection URL also declared itself canonical. Your theme may differ, so check yours by viewing the page source and searching for rel="canonical".

Type 1: /collections/x/products/y product paths

Shopify's Liquid 'within' filter generates a product URL in the context of a collection, for example /collections/sale-potions/products/draught-of-immortality. Shopify's own reference cautions that the standard product page and the collection-scoped version have the same content on separate URLs, and asks developers to consider the SEO implications.

Many themes use it in product cards so the product page can show a collection-aware breadcrumb or 'back to collection' link. The side effect: every product listed in five collections has five extra URLs, and your internal links point at them.

In a typical theme the canonical tag on those pages still points to /products/handle, which is what you want. But Google's documentation on consolidating duplicate URLs treats canonicals as one signal among several and recommends linking internally to the canonical URL. When thousands of internal links point at the collection paths, you're sending mixed signals.

Variant links are a related case. Selecting a size or color usually adds ?variant= and a variant ID to the product URL. On the Dawn demo, a variant URL declared the plain product URL as its canonical, so Google should treat it as the same page. Check that your theme does the same, especially if a developer has customized the product template or an app builds its own variant links.

A quick way to size the problem on your own store: open a collection page, hover over a few product cards and look at the link in your browser's status bar. If it starts with /collections/, your product cards use the 'within' filter.

Type 2: tag-filtered collection pages

Product tags create collection URLs such as /collections/shirts/linen. Combining tags joins them with a plus sign, as in /collections/all/handbag+tote. On the Dawn demo, single-tag pages declared themselves canonical, so each one is a candidate for indexing even though it's mostly a subset of the parent collection.

The multi-tag versions are less of a worry. The default robots.txt on the Shopify stores we checked in September 2026, including the Dawn demo, disallowed collection URLs containing a plus sign, so crawlers don't fetch those combinations.

Single-tag pages need a decision. If a tag page matches something people search for and you can give it a unique title, description and intro copy, turn it into a real collection. If it's just a navigation convenience, keep it out of the index with a noindex rule in theme.liquid. Liquid's current_tags object is available on collection templates, so a developer can add the noindex tag only when tags are applied.

Type 3: storefront filter and sort parameters

Shopify's Search & Discovery filters let shoppers narrow collection and search pages by availability, price, product type, vendor, tags, variant options and metafields. Each filter adds a URL parameter, such as filter.p.product_type=shoes or filter.v.option.color=red, and sorting adds sort_by.

As of September 2026, Shopify allows up to 25 filters per store, and collections with more than 5,000 products don't show filters. Even within those limits, the combinations add up quickly.

Shopify's defaults handle most of this. On the Dawn demo, a filtered and sorted URL declared the plain collection as canonical. Shopify's help center says the default robots.txt blocks crawling of filtered and sorted collection pages to avoid duplicate content, and on the stores we checked it disallowed sort_by URLs and URLs with more than one filter parameter. Google's own faceted navigation guidance supports blocking faceted URLs with robots.txt when indexing them adds little value.

How do you check which URL Google actually chose?

Open Search Console's URL Inspection tool, enter a product or collection URL, and compare the 'User-declared canonical' with the 'Google-selected canonical'. If they match, Google accepted your preference. If they differ, check internal links, sitemaps and content before touching tags.

Inspect a sample: five best-selling products, five main collections, one tag page and one filtered URL. The indexed result shows data from the last crawl, while the live test shows what Google sees now, which is useful right after a fix.

Then open the Page indexing report and look at the reasons pages aren't indexed. The statuses that matter for Shopify duplicates are below.

Don't rely on a site: search in Google to judge duplicates. It shows a sample of what's indexed, not which URL Google treats as canonical for each product. URL Inspection answers that question directly, one URL at a time.

  • Pick a sample: top-selling products, main collections, one tag page, one filtered URL and one collection-scoped product URL.
  • Inspect each in URL Inspection and note the user-declared and Google-selected canonicals.
  • For any mismatch, run the live test to see whether the current page still sends the same signals.
  • Open the Page indexing report and export the examples under each duplicate-related status.
  • Look for patterns: are the mismatches all products in one collection, all tag pages, or all URLs linked from one menu?
  • Fix the pattern, not the individual URL, then re-inspect a few examples after Google recrawls them.
Page indexing statuses you'll see on Shopify stores, and what to do
Status in Search ConsoleWhat it meansTypical Shopify causeAction
Alternate page with proper canonical tagGoogle found a duplicate that correctly points to an indexed canonical/collections/x/products/y pointing to /products/yNothing; this is working as intended
Duplicate without user-selected canonicalNo canonical declared, so Google picked oneA custom template or app page missing the canonical tagCheck the theme outputs a canonical tag on that template
Duplicate, Google chose different canonical than userGoogle indexed another URL instead of the one you declaredInternal links, sitemaps or feeds favoring a different URLAlign internal links and sitemaps with your canonical
URL marked 'noindex'Google found a noindex directiveTag pages or search pages you've noindexedFine if intended; a problem on paginated or main collections
URL blocked by robots.txtGoogle didn't crawl the URLSort, multi-tag and multi-filter URLsFine for those; a problem on anything you want indexed
Indexed, though blocked by robots.txtIndexed from links despite the blockSomeone linked to a blocked filter URLRobots.txt isn't a noindex; fix the linking or leave it

When to use noindex, canonicals or robots rules, and when to leave things alone

Use canonical tags and internal links to pick between duplicates, noindex to keep thin pages out of the index, and robots.txt only to save crawling on endless variations. Don't use noindex or robots.txt to choose a canonical.

Google's documentation is direct on two mistakes. Don't use robots.txt for canonicalization, because Google may still index a blocked URL without seeing its content. And don't use noindex to steer canonical selection within your site; use rel="canonical" instead.

The other common mistake is over-noindexing pagination. Google's ecommerce pagination guidance says not to use the first page of a paginated sequence as the canonical and to give each page its own canonical URL, which is what the Dawn demo did. Products that only appear on page 3 need page 3 to be crawlable.

If you do need to change robots.txt, Shopify supports a robots.txt.liquid template, but its help center calls this an unsupported customization that Shopify Support can't help with, and warns that incorrect use can lose all your traffic.

What to do with each Shopify URL type
URL typeDefault behavior we observedRecommended
/collections/x/products/yCanonical points to /products/yKeep the canonical; fix internal links to use /products/y
/collections/x?filter...Canonical points to /collections/x; multi-filter URLs disallowed in robots.txtLeave alone unless a filter combination matches real searches; then build a real collection
/collections/x?sort_by=...Disallowed in robots.txtLeave alone
/collections/x/tagSelf-canonicalNoindex thin tag pages, or turn valuable ones into collections
/collections/x/tag1+tag2Disallowed in robots.txtLeave alone
/collections/x?page=2Self-canonicalKeep indexable; never canonical to page 1

A checklist for theme updates so the problem doesn't come back

Duplicate content fixes tend to regress quietly. A theme update, a new section or a recommendations app can reintroduce collection-scoped links months later. Run this after every theme update and every new app that touches product listings.

  • Search the updated theme for within: collection before publishing it.
  • View source on a product page reached from a collection and confirm the canonical still points to /products/handle.
  • Confirm filtered and sorted collection URLs still declare the unfiltered collection as canonical.
  • Check that paginated pages still declare their own canonical and aren't noindexed.
  • Re-crawl and compare the count of /collections/.../products/... internal links with your last crawl.
  • Open yourstore.com/robots.txt and confirm nobody has changed the defaults by accident.
  • Recheck URL Inspection for your top products and collections a few weeks after publishing.

Sources and further reading

Frequently asked questions

Does Shopify create duplicate content?

Yes. Every product is reachable at /products/handle and at a collection-scoped path for each collection it belongs to, and collections create extra URLs for tags, filters, sort orders and pagination. Shopify themes typically add canonical tags that point duplicates to the main version, and Google says some duplicate content is normal. The fixes are about consistent signals, not avoiding a penalty.

Should I remove 'within: collection' from my Shopify theme?

In most cases, yes, in product card links. Replacing product.url | within: collection with product.url makes your internal links point at the canonical /products/ URL, which is what Google recommends. The trade-off is losing collection-aware breadcrumbs on product pages. Make the change on a duplicate theme, and search every snippet and section, not just the main product card.

Should I noindex Shopify tag pages?

Noindex tag pages that are thin copies of their parent collection with no unique title or copy. If a tag page matches real search demand, such as a style or material people search for, turn it into a proper collection with its own title, description and intro text instead. Multi-tag combinations joined with a plus sign are usually blocked by Shopify's default robots.txt already.

Why did Google choose a different canonical than my Shopify store?

Google treats canonical tags as a strong hint, not a command, and weighs other signals such as internal links, redirects and sitemaps. If your theme links to collection-scoped product URLs thousands of times while declaring the /products/ URL as canonical, Google may disagree. Align internal links, sitemaps and feeds with your declared canonical, then re-inspect the URL.

Do Shopify filter URLs hurt SEO?

Usually not, because Shopify's defaults point filtered collection URLs to the unfiltered collection as canonical and block multi-filter and sorted URLs in robots.txt. Problems start when a store edits robots.txt, links to filtered URLs heavily, or wants a filter combination to rank. In that last case, build a dedicated collection with unique content rather than trying to index the filter URL.

About the author: Pixel2Tech Team

Pixel2Tech is a Lahore studio for brand, web, video and automation work. We write about problems we see in client projects.

Meet the team

Is Google picking the wrong URLs on your store?

Share your Search Console access or a few problem URLs. We'll compare declared and Google-selected canonicals, trace where the duplicate links come from and give you a fix list your developer can apply on a duplicate theme.

Send a project brief

Related Pixel2Tech services

Get new articles by email

Leave your email and we'll send new posts when they're published.

WhatsApp us