Turn on filtering in a Shopify collection and you have created more URLs than your catalogue has products. Colour times size times price band times availability, on every collection, multiplies fast. Most of those combinations are worth nothing to a search engine and cost something to crawl.
This is one of the few technical SEO problems where doing nothing and doing too much are both wrong, and the correct answer is specific to the store.
How many URLs are we actually talking about?
Take a collection with four filter groups โ say colour with eight options, size with six, price with four bands, and a stock toggle. The combinations run into the hundreds for that one collection. Multiply by the number of collections and a store with a modest catalogue can present tens of thousands of crawlable addresses, nearly all of them thin variations on the same product set.
Crawl budget is not an infinite resource, and a crawler spending it on colour-and-size combinations is not spending it on your new products.
Which filtered URLs deserve to be indexed?
The test is search demand, not internal logic. A filtered view earns indexation when people actually search for that combination as a phrase.
"Black leather boots" is a real query with real volume. That filtered view should be a proper page: its own title, its own intro copy, its own canonical pointing at itself. In practice the best version of this is not a filter URL at all โ it is a dedicated collection, built deliberately, that happens to contain the same products.
"Black leather boots size 41 under 200 in stock" is not a query anyone types. That view should exist for shoppers and be invisible to crawlers.
The line sits roughly at two facets. Single-facet views frequently match real demand. Three-and-more-facet combinations essentially never do.
What to do with the rest
The instinct is to canonicalise every filtered URL to the parent collection. That is better than nothing, but canonical is a hint, not a directive โ a crawler still has to fetch the page to read it, so the crawl cost stays.
The stronger pattern combines two things. First, do not link to combination URLs in a crawlable way โ filters applied through parameters that the site does not expose as ordinary links are not discovered in the first place. Second, block the parameter patterns you never want crawled at the robots level, so the crawler skips them without fetching.
Keep those two consistent. Blocking a URL in robots while also linking to it prominently sends contradictory signals, and the usual outcome is a URL that appears in results with no description at all.
The sorting trap
Sort parameters are the version of this problem that stores forget. Sorting by price, by newest, by best-selling โ each produces a distinct URL with identical content in a different order. There is no search demand for a sorted view and no reason for any of them to be crawled.
Pagination is different and gets over-corrected. Page two of a collection is a genuinely different set of products and should stay crawlable โ that is often how deep products get discovered at all. Canonicalising page two to page one is a common mistake that hides half a catalogue.
Getting to the answer for your store
Pull the list of URLs a crawler has actually fetched and group them by parameter. Most stores find one or two filter groups consuming the overwhelming majority of crawl activity, and the fix is narrow rather than a policy rewrite.
Then check the opposite direction: are there filtered views with genuine search demand that currently have no page at all? That is the upside half of the audit, and it usually pays for the work.