Faceted navigation SEO: which filter pages should Google index?

Faceted navigation is the set of filters on category pages: color, size, brand, price, material, rating, and the sort order next to them. Shoppers love it. Search engines have a harder time, because every combination of filters can produce a new URL.
This guide explains how to decide which filtered pages deserve to be indexed, and how to keep the rest from getting in the way.
Why facets become an SEO problem
The numbers grow quickly. Take one category with 10 colors, 8 sizes, 12 brands and 4 sort orders. If each filter can be combined with the others and applied in any order, that single category can generate thousands of URLs, most of them showing a slightly different slice of the same products.
Three problems follow:
- Crawling is wasted. Search engines spend their time on filtered variations while new products and important categories wait to be crawled. Google's documentation notes that crawling these URLs increases server load and can slow the discovery of new URLs.
- Signals are split. Links and relevance spread across many near-identical pages instead of concentrating on the category you want to rank.
- Thin and duplicate pages get indexed. "Blue, size 7, brand X, sorted by newest" with two products is not a page anyone searches for.
Decide per facet, not per URL
Most facets fall clearly into one of three groups.
1. Indexable landing pages. Some filtered views match real searches: "black running shoes", "women's waterproof hiking boots", "oak dining tables". Treat these as categories in their own right. The test:
- people search for this combination, confirmed with keyword data or Search Console queries;
- there are enough products to make a useful page, and it rarely goes empty;
- you can give it a unique title, heading and short introduction.
2. Useful for shoppers, not for search. Most size, price range, rating and availability filters help users narrow a list but don't match how people search. Keep them working for users and keep them out of the index, and ideally out of crawling.
3. No value for anyone in search. Sort orders, view options (grid or list), items-per-page settings, and multi-select combinations of several brands at once. Keep these away from crawlers entirely.
A simple spreadsheet works: one row per facet, with columns for search demand, product depth, decision, and implementation. It becomes the reference developers build from.
How to keep unwanted facets out of the way
Google's guidance on faceted navigation is direct. If you don't need filtered URLs indexed, prevent them from being crawled:
- robots.txt disallow rules for the parameters that create unwanted combinations, while leaving the unfiltered category crawlable. For example:
User-agent: *
Disallow: /*?*sort=
Disallow: /*?*size=
Disallow: /*?*price=
- URL fragments instead of parameters (for example
#size=7). Google generally doesn't crawl fragments, so filters built this way have no effect on crawling at all.
Google describes rel="canonical" and rel="nofollow" as generally less effective in the long term. A canonical may reduce crawling of non-canonical versions over time but gives no guarantee, and nofollow only works if every single link to the URL carries it.
If the URLs are already indexed
Order matters here. robots.txt stops crawling, not indexing. If thousands of filtered URLs are already in Google's index and you block them immediately, Google can no longer crawl them to see that they should go, and some may stay indexed without a description.
The safer sequence is:
- Add
noindexto the unwanted filtered pages and keep them crawlable. - Watch them drop out in Search Console's Page indexing report.
- Once they're gone, add the robots.txt rules to stop the crawling.
How to implement facets you do want indexed
- Give them clean, stable URLs. Either a path (
/running-shoes/black/) or parameters in a consistent order. Google recommends the standard&separator for parameters rather than commas, semicolons or brackets. - Enforce one order.
?color=black&size=7and?size=7&color=blackshould never both exist. Generate one form and redirect or never link to the other. - Return a 404 for empty combinations. Google recommends returning an HTTP 404 when a filter combination returns no results, instead of an empty page or a redirect to the category.
- Make each page unique. A specific title and H1 ("Black running shoes"), a short introduction that says something useful, and the products that match.
- Link to it. Add important filtered pages to category navigation, related-category links and your XML sitemap. A page reachable only by clicking filters is weakly signalled.
- Use a self-referencing canonical on each indexable filtered page, so it isn't canonicalized back to the parent category.
Sorting and pagination are different problems
Sort orders show the same products in a different order. They should never be indexable and usually don't need to be crawlable.
Pagination is not duplication: page 2 of a category contains different products than page 1. Keep paginated pages crawlable with their own URLs and self-referencing canonicals, so crawlers can reach every product. Canonicalizing every paginated page to page 1 hides the products on later pages. Infinite scroll needs crawlable paginated URLs behind it for the same reason.
Mistakes to avoid
- Indexing everything "for long-tail traffic". Most combinations have no demand, and the few that do get lost among the rest.
- Blocking everything, including filtered views people actually search for. That throws away demand your competitors will happily take.
- Changing strategy without measuring. Record crawl stats and indexing before and after, so you can see whether the change worked.
- Letting marketing links bypass the rules. Campaign links to filtered URLs with tracking parameters can reopen crawl paths you just closed.
How to measure the result
In Search Console, watch the Crawl stats report for a shift from parameter URLs toward real categories and products, the Page indexing report for unwanted URLs leaving the index, and the Performance report for filtered landing pages you chose to index. For large stores, server logs show exactly how Googlebot spends its time, which is the most precise measure of all.
