Filters are one of the most useful tools for shoppers: size 42, black, Adidas, under €80. For Google, though, every combination can be a new URL. With 10 sizes, 12 colours, 15 brands and 5 price bands, a single category can theoretically produce thousands of near-identical pages.
We see the symptoms in Search Console all the time: tens of thousands of URLs under "Discovered – currently not indexed", crawl budget wasted, and category pages competing against filtered versions of themselves.
The key question: which combinations deserve a page?
Not every filter is bad for SEO. Some combinations match real searches:
- "Nike women's sneakers" → category + brand. Deserves a page.
- "black dress" → category + colour. Probably deserves one.
- "4-person camping tent" → category + attribute. Deserves one.
- "sneakers size 42 black €50–80 sorted by newest" → nobody searches like that. Does not.
Our rule of thumb: one filter (two at most) with proven search demand can become an indexable page. Everything else remains a tool for users, not a page for Google.
Three types of filters
Put every filter in your shop into one of these buckets.
1. Landing-page filters
Brand, main type, attributes with search demand. These should:
- Have a clean URL (
/sneakers/nike/rather than?filter_brand=nike). - Have their own H1, title tag and ideally a short intro.
- Use a self-referencing canonical and appear in the sitemap.
- Be linked internally (from the category, the menu or related products).
2. Usability filters
Size, price range, stock status, multi-filter combinations. Useful for shoppers, useless for Google. These should not become indexable pages.
3. Sorting and view options
?orderby=price, ?view=list, ?per_page=48. They change order or presentation, not content. They should never be indexed.
The tools at your disposal
There is no magic switch. There are several tools, each with a specific job:
- Canonical: tells Google which version is the main one. Good for sorting and minor variations. It is a hint, not a directive, and it does not stop crawling.
- noindex (meta robots): keeps a page out of the index, but Google has to crawl the page to see it. It does not save crawl budget.
- robots.txt Disallow: stops crawling of specific patterns (e.g.
?orderby=,?filter_size=). Saves crawl budget, but Google will not see any canonical or noindex on those pages. Do not combine Disallow and noindex on the same URL. - Filters without links: the cleanest option for usability filters. If filters are applied via JavaScript or a form, with no
<a href>to each combination, Google never discovers those URLs in the first place.
A combination that works well in most shops:
- Landing-page filters → clean URLs, indexable, in the sitemap.
- Usability filters → applied without crawlable links, or via parameters blocked in robots.txt.
- Sorting/view → Disallow in robots.txt or canonical to the main page.
WooCommerce and Shopify in practice
WooCommerce: most filter plugins (and the built-in layered navigation) produce parameters like ?filter_color=black&query_type_color=or. Some plugins offer "SEO-friendly URLs" for filters. Enable them only for the attributes you want indexed, not for all of them. Also check what your SEO plugin (Yoast, Rank Math) does with canonicals on filtered pages.
Shopify: filters from Search & Discovery use ?filter.p.m... parameters, and most themes canonicalise to the clean collection. For brand or type landing pages, it is usually better to create a separate collection with its own handle and copy rather than relying on the filter.
How to tell if you have a problem
- Search Console → Pages: lots of parameter URLs under "Discovered – currently not indexed" or "Duplicate".
- Google
site:yourshop.gr inurl:filterorinurl:orderby. - Crawl the site with Screaming Frog or similar: if it finds ten times more URLs than you have products, something is leaking.
- Server logs: if Googlebot spends most of its time on filtered URLs, it is spending less on your products.
A worked example
Take a clothing shop and its "Women's dresses" category. Filters: brand, colour, size, fabric, length, price, sort. A sensible decision might be:
- Landing pages: colour ("black dresses"), length ("maxi dresses"), perhaps fabric ("linen dresses"), and the four or five brands with the most demand.
- Usability: size, price, any combination of two or more filters.
- Sorting: every ordering option.
The outcome is a few dozen strong pages instead of thousands of near-duplicates. Check the decision against data: if a landing page gets no impressions after a few months, it may not need to be indexable after all.
Common mistakes
- Adding a robots.txt Disallow for pages that are already indexed, hoping they will disappear. They will not, at least not quickly. Noindex first, then Disallow if needed.
- Canonicalising every filtered page to the category, including the landing pages you want to rank.
- Brand filters that accept parameters in any order (
?brand=nike&color=blackand?color=black&brand=nike): two URLs, same content. - Filtered pages with zero results returning 200 instead of noindex or 404.
Checklist
- [ ] List every filter and sort option in the shop
- [ ] Classify each one: landing page, usability or sorting
- [ ] Clean URLs, unique H1 and self-canonical for landing pages
- [ ] Everything else kept out of the index with the right tool combination
- [ ] Consistent parameter order
- [ ] Only landing pages in the XML sitemap
- [ ] Monthly Search Console check for new leaks
Getting filters right is one of those invisible fixes that affects the entire site. If you first need to get the categories themselves in shape, start with our guide to category page SEO. If Search Console shows thousands of URLs you do not recognise, talk to us and we will untangle it together through our e-commerce SEO service.