What Is Faceted Navigation?
Faceted navigation is a filtering interface that lets a visitor narrow a category listing by attributes such as size, colour, brand or price. It is not your site navigation.
Faceted navigation is a filtering interface that lets a visitor narrow a category listing by attributes such as size, colour, brand or price. It is not your site navigation. Menus are a fixed set of paths you designed; facets are a combinatorial machine that manufactures a new URL every time someone ticks a box.
Why faceted navigation matters
Facets are usually shipped by the ecommerce platform, not specified by anyone doing SEO. They exist because they help people buy, and they do help people buy. The cost lands somewhere nobody on the merchandising team is looking: the crawlable surface of the site.
Every filter state that produces a linkable URL is a page Google can discover, request and consider for indexing. Most of them carry near-identical content, because a filtered listing is the same products reordered or thinned. Left alone, filter states become the majority of your indexable URLs. Crawl activity drains into combinations nobody searched for. Relevance signals split across dozens of variants of one listing. Internal links that should be concentrating strength on thirty category pages get spread across thousands of accidental ones instead. Before you decide which facets to expose, check which category pages actually earn traffic. That list is almost always shorter than the list of URLs your platform is quietly generating.
How facet URLs get made
The mechanism is dull, which is why it gets missed. Each step below is a decision someone made once, usually for a reason that had nothing to do with search. None of them look dangerous in isolation. The damage is that they compound, and they compound quietly, because a category template that generates a million addresses looks identical in a browser to one that generates forty.
- A shopper selects a value. The platform appends a query parameter, rewrites the path, or both. Either way a new address now exists that returns a 200 status code.
- The link is rendered as an anchor. If the facet is marked up as
<a href>, a crawler treats it as a route to follow. If it fires as a JavaScript event with no href, it usually is not followed at all. That single implementation choice decides most of what follows. - Combinations multiply. Selecting a second filter does not replace the first, it appends. Selecting a third appends again. Nothing in the platform caps the depth.
- Order is not normalised. Most systems emit parameters in the sequence the shopper clicked them, so
?brand=x&size=mand?size=m&brand=xare two distinct URLs serving one result set. - Pagination and sorting layer on top. Every filter combination gets its own sort orders and its own page 2, 3 and 4, multiplying whatever number you already had.
- Internal links point at all of it. The facets are in the HTML of every category page, so this surface is not obscure. It sits one click from your strongest pages, which is exactly how the shape of a site directs crawling gets undone from the inside.
Control is a matter of picking a handling per facet and applying it consistently. Mixed signals across the same parameter set cause more confusion than doing nothing.
Choosing a handling per facet
| Facet type | Sensible handling |
|---|---|
| Has real search demand, single value (brand, category) | Indexable, static URL, linked in navigation |
| Refines the set but has no demand (colour plus size plus price) | Canonical to the unfiltered category, keep it crawlable |
| Sort order and view toggles | Canonical to the unfiltered category; never a separate index entry |
| Session IDs, tracking parameters, recently viewed | Block in robots.txt before they are ever linked |
| Combinations of three or more filters | Do not render as crawlable anchors at all |
The blunt version
Do the arithmetic before you argue about tactics. Take one category page with four filters and five options each. Single-select, one value per filter, that is 5 x 5 x 5 x 5, or 625 states. Now allow each filter to hold two values, which every major platform does the moment a shopper wants two colours or a price floor and a ceiling. Each filter now has 25 ordered states rather than 5, and 25 x 25 x 25 x 25 is 390,625 URL combinations. From one category page. Before sorting. Before pagination.
This is where the industry advice goes soft. You will be told to add canonical tags and move on. Canonicals are hints, and a hint applied to 390,625 near-duplicates is a request Google is free to decline. The parameter handling tool that used to sit in Search Console for exactly this job was retired years ago. Nothing replaced it, because the fix was never meant to live in Google’s interface.
The only reliable control is at the point of rendering. Decide which facet combinations deserve a crawlable anchor, and render the rest so no anchor exists. That is a front-end ticket, not an SEO deliverable, which is why it stalls for two quarters while somebody reruns a crawl report. If you want the sequence to fix it in, start with how crawlability and indexation fit together.
Example
Say a homeware retailer has 6,000 products across 40 categories, and each category page offers filters for colour, material, price band and room. Sitemaps list roughly 6,500 URLs. A crawl set to follow every facet anchor stops at 900,000 and is still going. Search Console reports a large volume of pages as discovered but not indexed, and the team reads that as an indexing problem. It is not. Google found the URLs, sampled them, and declined the rest because they resolve to reordered versions of 40 listings. Nothing is broken in the sense of returning an error. The site is simply asking a crawler to evaluate a hundred addresses for every product it actually sells.
FAQ
Should I block faceted URLs in robots.txt?
Only for parameters that never deserve indexing, such as session IDs and tracking tags, and only before those URLs accumulate links. Blocking a URL in robots.txt stops the crawl, not the indexing, and it also stops Google seeing any canonical tag on the page. Blocked pages can still appear in results.
Can canonical tags fix faceted navigation on their own?
No. A canonical tag is a signal Google can override, and it does nothing to reduce the number of URLs being requested in the first place. Canonicals are worth setting, but they are a cleanup step. The volume problem is solved by not rendering the anchors.
Should any filtered pages be indexable?
Yes, where people search that way. Single-attribute combinations with genuine demand, such as a brand within a category, deserve a stable URL, unique copy and a link from your navigation. Treat those as landing pages you chose. Everything beyond one or two attributes almost never has demand behind it.
Related terms
- Information Gain — why a filtered listing that adds nothing new is a weak candidate for indexing.
- Content Pruning — the cleanup exercise you inherit once facet URLs have been indexed for years.
- Site Architecture — the deliberate structure that facets bypass every time they render as anchors.
Faceted navigation is not a crawl budget problem you tune, it is a URL creation problem you cap at the template. If the fix your agency proposes lives entirely in canonical tags, it is treating the symptom and billing for the cure.