What is faceted navigation in an online store?
Faceted navigation is the filter system on a category or results page that lets shoppers combine attributes, such as size, color, brand or price, to narrow the products shown. In a store, faceted navigation usually creates a different URL for each filter combination, and those combinations multiply the pages a crawler can find and request.
Key takeaways
- Faceted navigation is a category's combinable filters; each attribute you can filter by is a facet.
- Each filter combination can have its own URL, and with multi-select filters the possible combinations grow very fast.
- For filter URLs you do not want crawled, Google suggests robots.txt or fragments; canonical and nofollow work worse in the long run.
- For the ones you do want crawled: the & separator, a fixed order of filters and a 404 when a combination has no results.
- In Shopify the filters travel in filter. parameters, and the default robots.txt already blocks sorted collections and collections filtered with +.
You know it even if you do not know its name: it is the column of filters on a category, the one that lets you narrow down to running shoes in size 9, black, from a particular brand. Each attribute you can filter by is a facet, hence the name. For the shopper it is the fastest way to get to the product. For a crawler it is something else: every filter combination can be a new URL, and a single category can manufacture thousands. It matters because those URLs compete for the time search engines spend on your store, and because almost all of them show the same products as the category they came from.
How it works
Google defines it as a common feature of websites that lets visitors change how the items on a page are displayed, whether products, articles or events, and illustrates it with a parameter URL such as items.shtm?products=fish&color=radioactive_green&size=tiny.[1]Google, crawling documentation. Improve crawling of faceted navigation URLs The problem it describes is one of crawling: because those URLs look new and the crawler cannot know whether they are useful without requesting them, it often visits a very large number of filter URLs before concluding they are not useful, and the time spent on them is not spent on new, useful URLs.[1]Google, crawling documentation. Improve crawling of faceted navigation URLs The detail of that split is the crawl budget.
What is rarely calculated is how fast the combinations grow. A fictional example calculation: a category with a size filter of 9 values, a color filter of 6 and a brand filter of 4.
| How the filters work (fictional example) | Possible filter URLs | Where the figure comes from |
|---|---|---|
| A single value per facet | 349 | (9 + 1) × (6 + 1) × (4 + 1) − 1 |
| Several values per facet (size 9 or 10) | 524,287 | 2⁹ × 2⁶ × 2⁴ − 1 |
| Several values, and the order of the parameters changes the URL | Several times more | Each combination allows several distinct URLs |
The second row is the one that tends to surprise. As soon as a filter accepts several values at once, each facet stops having "9 options" and has all of its possible subsets. No store has 524,287 distinct listings to show: most of those combinations repeat products or return none.
Google separates two decisions.[1]Google, crawling documentation. Improve crawling of faceted navigation URLs
- For filter URLs you do not need in the search engine, it suggests blocking their crawling with robots.txt, with
disallowrules for each filter parameter, or moving the filters into URL fragments (#color=green), because Google Search generally does not support fragments for crawling or indexing. Pointing filtered URLs at the category with a canonical can reduce crawling over time, and puttingrel="nofollow"on links to filtered results can help, but Google considers these two routes generally less effective in the long run. - For the ones you do need crawled, it asks you to use the standard
&separator between parameters, keep a logical, fixed order of filters in the URL, not repeat a filter or allow nonsensical combinations, and return a 404 when a combination has no results.
The question for each facet is therefore whether any of its combinations answers a search someone really makes, and so deserves a category page of its own with a stable URL, or whether it only serves to narrow the list someone is already looking at.
In a store
In Shopify, storefront filtering is the recommended method for filtering products in a theme, and it works on collections as well as on search results. Applied filters travel in the URL as parameters of the form filter.scope.attribute=value, where the scope is p for product filters and v for variant filters: for example, filter.p.product_type=shoes or filter.v.option.color=red. You can filter by availability, price, product type, vendor, tags, category, variant options and metafields. Different filters combine with "and"; several values of the same filter, with "or", and you can create up to 25 filters.[2]Shopify.dev. Storefront filtering
Here is what the URL map of a single collection would look like in a Shopify store, in a fictional example:
| What the visitor does (fictional example) | Resulting URL |
|---|---|
| Opens the collection | /collections/trail-running-shoes |
| Filters by size 9 | /collections/trail-running-shoes?filter.v.option.size=9 |
| Adds the color black | …?filter.v.option.size=9&filter.v.option.color=black |
| Also checks blue | …&filter.v.option.color=black&filter.v.option.color=blue |
| Sorts by price | …&sort_by=price-ascending |
Shopify already ships two defenses in its default robots.txt. The Disallow: /collections/*+* rule stops crawling of filtered collection pages, because they duplicate the content already on the collection page, and the Disallow: /collections/*sort_by* rule stops crawling of sorted collections, because they return the same products in another order.[3]Shopify Help Center. Editing robots.txt.liquid What your store does with the filter. parameters is worth checking in your own file.
What people often get wrong
Moving the filters into # fragments takes them out of crawling, including the ones you wanted to be findable. Google generally does not support fragments for crawling or indexing,[1]Google, crawling documentation. Improve crawling of faceted navigation URLs and it says so with an example: /product/t-shirt#black and /product/t-shirt#white are the same page to Google.[4]Google Search Central. Designing a URL structure for ecommerce sites It works for filters that only reorder the view; it does not work for a combination that should rank on its own, which needs a URL without a #.
How to check it
- Apply two filters in one order and then in the opposite order. If the URL changes, each combination has at least two addresses; Google asks for a fixed order.[1]Google, crawling documentation. Improve crawling of faceted navigation URLs
- Combine filters until no product is left and look at that page's status code (in the browser's developer tools, network tab). Google asks for a 404 in that case.[1]Google, crawling documentation. Improve crawling of faceted navigation URLs
- Open your
/robots.txtand look for which rules cover the filter, sort and pagination parameters. In Shopify, check whether the default rules for filtered and sorted collections are still there.[3]Shopify Help Center. Editing robots.txt.liquid - Review Search Console's page indexing report. Filter URLs tend to show up under statuses such as "Blocked by robots.txt" or "Duplicate without user-selected canonical"; the goal Google sets is for the canonical version of every important page to be indexed.[5]Search Console Help. Page indexing report
- Decide facet by facet. Note which combinations you want findable, with their stable URL, and block or pull the rest out of crawling with one coherent rule, not three methods at once.
Related concept: duplicate content
Faceted navigation is one of the most common causes of duplicate content in a store: Google cites the results of sorting and filtering a category among the reasons a site has duplicate content.[6]Google Search Central. What is URL canonicalization The difference lies in which problem weighs more. Duplicate content is mostly a question of which URL counts, and it gets sorted with signals such as the canonical; faceted navigation is also a crawling question, and there the canonical arrives late: Google places it among the less effective routes in the long run.[1]Google, crawling documentation. Improve crawling of faceted navigation URLs The PLP entry explains how all this fits into the product listing.
To keep going, the crawling and indexing reading path orders the rest of the terms.
Synonyms
- English
- faceted navigation, faceted search
- Español
- navegación por facetas, filtros de categoría
Sources
- [1] Google, crawling documentation. Improve crawling of faceted navigation URLs. Accessed . ↑ ↑ ↑ ↑ ↑ ↑ ↑
- [2] Shopify.dev. Storefront filtering. Accessed . ↑
- [3] Shopify Help Center. Editing robots.txt.liquid. Accessed . ↑ ↑
- [4] Google Search Central. Designing a URL structure for ecommerce sites. Accessed . ↑
- [5] Search Console Help. Page indexing report. Accessed . ↑
- [6] Google Search Central. What is URL canonicalization. Accessed . ↑
Change history
- First English version.
This definition is published under CC BY 4.0. Reuse this definition freely, crediting Clione with a link to this page.
Related terms
Duplicate content
What duplicate content is, why Google does not penalize it but does split your signals, how AI engines treat it and how to sort it out in an online store.
Crawl budget
What crawl budget is, when an online store should care, what wastes it (filters, duplicates, noindex) and how to measure it.
PLP
What a PLP is, which pages count as one, how Google crawls them, and how to handle pagination, filters and sorting without losing product pages.
Canonical URL
What a canonical URL is, how Google uses it to pick the address of a product page with several URLs and how to check which one it chose in your store.
robots.txt
What the robots.txt file is, how Googlebot, GPTBot and OAI-SearchBot read it, why it can't remove a page from the index and how to review your store's.
Category page
What a category page is, how it differs from a filter or internal search results, how Google reads it and how to check it.
Make your catalog easy for bots to read
Clione fills every product page with what bots read best: the JSON-LD graph with its structured data, the meta description and the FAQs. You review and press Push; then we check your live store so it all stays published.