Faceted Navigation

By Christian Synoradzki · Updated

Faceted navigation refers to filter functions in online stores that help users narrow down products but create SEO challenges.

A store with a few hundred products can generate tens of thousands of URLs through filters. That costs crawl capacity and delays the discovery of new pages. At the same time, individual filters hold genuine landing pages.

What facets are

A facet is a property by which a collection can be narrowed down, such as color, size, brand or price. In a store, visitors combine several facets at once, and each combination usually gets its own URL.

Google’s documentation calls filters popular and useful. The common implementation through URL parameters, however, can create very large URL spaces. Google describes the consequences as overcrawling and slower discovery of new pages.

How filter URLs come about

Each selection appends a parameter to the category URL, for example ?color=red&size=10. With five filter types and several values each, the number of combinations grows fast. Sort orders and other parameters add to it.

Most of these pages show only a subset of the same products. To Google, they are hard to tell apart from the category page. That dilutes signals and ties up crawling on pages that should never rank. A related concept is crawl waste, meaning crawling without benefit.

Canonical, noindex and robots.txt compared

The three tools are often confused, but they solve different problems. The robots.txt file controls crawling. Google recommends it when filter URLs should not be indexed. The documentation says, in essence, that there is often no good reason to allow crawling of filtered pages.

The canonical tag controls which version is the main one. Google calls it a strong signal. According to Google it reduces crawling of non-canonical variants only over time, and the pages must stay fetchable for that to work.

Noindex controls indexing, not crawling. Google has to fetch the page to read the instruction. If the URL is also blocked in robots.txt, Google never sees the noindex. Combining the two is therefore pointless, and the old advice of “robots.txt or noindex” does not hold up.

According to Google, filters that work only through a URL fragment (#) have neither a positive nor a negative effect on crawling. The nofollow attribute works only if it is set on every link to the URL.

What this means for your store

First decide which filters have real demand. “Men’s running shoes” is a search; “running shoes sorted by price descending” is not. You check demand with keyword research and the Search Console.

Filters with demand get a clean URL of their own, with their own title and heading. Block all other parameters in robots.txt, and leave the unfiltered category page crawlable. Use the & character as the separator, as Google recommends. Other separators such as commas or semicolons are harder for crawlers to read.

If a combination returns no results, the URL should return a 404 status code. According to Google, this also applies to duplicate or nonsensical filters. Do not redirect such requests to a generic error page.

If you cannot control filters cleanly, an alternative is to load them with JavaScript without creating a new URL. Filtered views then cannot rank either.

Limits and typical mistakes

The most common mistake is blocking everything at once. You then lose the filter pages that bring revenue. The opposite is just as harmful: a canonical to the category on pages that should rank.

Second, Google can still index a blocked URL without its content if other pages link to it. The robots.txt file is therefore not a tool for removing pages from the index.

Third, control is often missing. Check the crawl stats in the Search Console to see how many requests go to parameter URLs. If the share stays high after your changes, the block is not yet complete.

Frequently asked questions

Should I set all filter pages to noindex?

Usually not. Noindex does not save crawling, because Google has to fetch the page to see the instruction. It also has no effect if the same URL is blocked in robots.txt. Decide per filter type: block it if the page should never rank, keep it indexable if it serves real demand.

Is a canonical tag pointing to the category page enough?

It helps, but it solves the crawling problem only slowly. Google calls the canonical a strong signal and expects crawling of non-canonical variants to decrease over time. With a very large number of filter combinations, blocking in robots.txt is more effective.

What happens when a filter combination returns no results?

The server should return a 404 status code. Google explicitly recommends this. An empty page with a 200 status creates an unlimited number of worthless URLs that Google has to fetch.

Sources

Want to put this into practice on your website? Get in touch · More aboutTechnical SEO

Cookies

Privacy policy · Imprint