In short
- A facet that matches a query users actually search is a landing page in its own right, with strong buying intent.
- Google reminds us in its December 2024 documentation: faceted navigation is by far the leading cause of over-crawling reported by site owners.
- The rule: index the combinations that have demand, block crawling for the rest, and give every indexed facet its own title tag, meta description and copy.
- Long, specific queries, typical of facets, are also the ones the AI Overview touches least: 7% in our France study.
On an e-commerce site, facets are the filters that narrow down a category: size, color, material, brand, price, use. For visitors, they are sorting tools. For SEO, they are potentially thousands of landing pages, each able to answer a specific search driven by buying intent. Or millions of useless URLs that Google crawls at your expense.
The whole challenge is telling the two apart.
Why facets are a source of traffic
A specific e-commerce search almost always looks like a facet: a category followed by an attribute.
| Query | Structure | Monthly volume |
|---|---|---|
| women's white sneakers | category + color + gender | 27,100 |
| 160x200 fitted sheet | category + size | 14,800 |
| food for neutered cats | category + need | 9,900 |
| compact stroller | category + use | 8,100 |
| bathroom paint | category + room | 9,900 |
Google France, October 2026. Source: DataForSEO.
These queries have three qualities. They are numerous: every relevant combination forms a query, and their sum can exceed the volume of the category itself. They are transactional: users who specify a size or a material are close to buying. And they are rarely exposed to AI answers: in our study of 599 French queries, transactional queries of three words or more display an AI Overview in only 7% of cases.
If your "fitted sheets" category is the only page ranking, it has to answer "160x200 linen fitted sheet", "extra deep fitted sheet" and "baby fitted sheet". It will do so less well than a dedicated page, with a title and copy that match the query exactly.
Why facets are also a risk
The problem comes from combinatorics. Ten filters with ten values each, combinable with one another in any order, produce a practically infinite number of URLs. Google says it bluntly in its documentation published in December 2024: faceted navigation is by far the leading source of over-crawling reported by site owners.
The consequences are concrete:
- the crawler wastes its time on pointless combinations ("red + blue + size 36 + price 20 to 30 € + sort by newest") instead of crawling your real pages;
- new pages and updates are discovered more slowly;
- the index fills up with near-identical pages, with the same products and the same tags.
The method: decide combination by combination
Step 1: start from demand, not from the catalog
List the attributes of each category, then check which combinations match real searches, with a keyword tool and Google Search Console queries. A combination deserves an indexable page if it meets three conditions:
- it is searched for: steady volume, even modest;
- it has enough products to form a real selection;
- it is different from its parent category: someone searching for it would not be fully satisfied by the general category.
In practice, most demand concentrates on facets with a single attribute (category + size, color, material, brand or use), sometimes two. Beyond that, volume drops to zero.
Step 2: treat the two families differently
| Facets to index | All other combinations | |
|---|---|---|
| Visitor access | Yes | Yes |
| URL | Clean and stable, constant filter order | Parameters, or filters in a # fragment |
| Google crawling | Yes, hard-coded internal links | Blocked (robots.txt) or discouraged |
| Indexing | Yes, canonical to itself | No |
| Tags and copy | Written specifically | Inherited, no importance |
Google offers two paths in its documentation. If you do not need facet URLs to be indexed, block crawling with robots.txt, or use URL fragments (#), which search engines generally ignore. If you do need them indexed, make them clean: standard & separator for parameters, always identical filter order, and a 404 status for combinations that return no products.
The canonical tag can consolidate signals from variants toward the right URL, but Google treats it as a hint, not a directive. And nofollow on filter links only works if it is applied consistently to every link pointing to those pages.
Step 3: make indexed facets reachable
An indexable facet must be reachable through regular internal links, not only through a JavaScript filter form. The right places:
- a block of links to the most in-demand selections at the top or bottom of the category;
- contextual links in the category SEO copy;
- the menu, for the most important facets;
- the XML sitemap.
Step 4: optimize each facet like a real page
This is the step most often rushed. An indexed facet with its parent category's title, followed by "- Color: White", will not rank. Every indexed facet deserves:
- a title written like the query it targets: see our method for the title tag;
- a meta description that echoes its attributes: see our guide to the meta description;
- an explicit H1 ("160x200 linen fitted sheets");
- short copy that says what characterizes this selection.
Example: a "fitted sheets" category
| Combination | Demand | Decision |
|---|---|---|
| fitted sheets + 160x200 | Strong | Index, optimized page |
| fitted sheets + linen | Real | Index, optimized page |
| fitted sheets + extra deep | Real | Index, optimized page |
| fitted sheets + 160x200 + linen | Low but real | Index if enough products |
| fitted sheets + 160x200 + linen + sage green | None | Accessible, not indexed |
| fitted sheets + sort by ascending price | None | Accessible, crawling blocked |
| fitted sheets + 90x190 + sateen + red, no products | None | 404 status |
The result: a few dozen indexed pages per major category, each targeted and optimized, instead of thousands of URLs that Google crawls without judging them useful.
How unblind handles your facets
The method is simple. Executing it is not: identifying the demand for each combination, then writing unique tags and copy for hundreds of facets. That is why most sites choose one of two extremes: block everything, or index everything with generic tags.
unblind was designed for the middle path:
- facet pages are recognized as such, with their own writing rules, distinct from those of categories;
- the facet's locked attribute (size, material, color, visible in the URL or the H1) is carried into the title, whereas a dimension is removed from the title of a general category;
- every facet gets its own copy, anchored in the products it displays, instead of reusing the parent category's;
- cannibalization detection flags facets and categories competing for the same queries, before Google has to choose.
To understand why these pages deserve the effort, see our analysis of e-commerce SEO traffic.
Frequently asked questions
Should facet pages be indexed?
Only those that match real search demand, such as "160x200 linen fitted sheet" or "women's white sneakers". The other combinations, with no volume or too many filters combined, should stay accessible to visitors but leave the index and, ideally, not be crawled.
robots.txt, noindex or canonical for facets?
They do not have the same effect. robots.txt prevents crawling, which saves crawl budget but does not stop an already known URL from appearing. noindex removes the page from the index but Google has to crawl it to read the directive. A canonical consolidates signals toward another URL, with no guarantee. For thousands of worthless combinations, blocking crawling is often the most effective option.
How many filters should be combined in an indexed facet?
In practice, rarely more than two. Beyond that, search demand becomes almost nil and the number of combinations explodes. A "category + one attribute" facet covers the bulk of demand.
What should be done with a facet with no products?
Google recommends returning a 404 status for filter combinations that yield no results, rather than an empty page with a 200 status.