The problem#
An online store with 10 colours, 8 sizes, 15 brands and 5 price bands can generate thousands of URLs for a single category — /shoes/?color=red&size=9&brand=nike&sort=price and every combination. Most are near-duplicates with no search demand. Crawlers waste time on them, important products get crawled less, and the index fills with thin pages.
Decide which facets deserve to be indexed#
| Facet type | Example | Approach |
|---|---|---|
| High search demand | “red running shoes”, “nike running shoes” | Indexable, static URL, unique title and intro text |
| Useful but no demand | Size 9, in stock only | Not indexed — canonical to the category, or noindex |
| Sorting and view options | ?sort=price, ?view=grid |
Canonical to the unsorted URL; consider blocking in robots.txt |
| Multi-select combinations | Colour + size + brand + price | Block crawling (robots.txt) or render filters without crawlable links |
Implementation tips#
- Keep parameter order consistent so the same filter set always produces the same URL.
- Use canonicals for duplicates, but don’t rely on them alone for crawl control.
- Use robots.txt to stop crawl traps — but not on pages whose noindex you need Google to see.
- Link to valuable facet pages from category pages and menus so they’re discovered.
- Monitor Search Console’s Crawl stats and Pages report after changes.
Related: crawl budget, index bloat, e-commerce SEO guide.