Faceted navigation is a great way to help users find what they need on your site, but it can
create an SEO nightmare if not implemented carefully. Why? Because it can generate a near-infinite
number of URLs, leading to:
Overcrawling: Search engines waste time crawling countless URLs that aren't
valuable to search users.
Slower discovery: This overcrawling slows down the discovery of your important,
new content.
In fact, faceted navigation is by far the most common source of overcrawl issues site owners
report to us, and in the vast majority of the cases the issue could've been avoided by following
some best practices. But let's back up a little.
The problem with URLs
Each filter combination in a faceted navigation generally creates a unique URL. For example:
Changing any parameter — product, color, or size
— creates a new URL, leading to a potential explosion of URLs. And that's the problem: a
virtually infinite number of new URLs waiting to be discovered. Let's fix it.
Two approaches
Block faceted navigation URLs:
If you don't need these URLs indexed, use robots.txt to disallow crawling.
Or use URL fragments (#) for filters, as search engines generally ignore them.
Optimize faceted navigation URLs (if you need them crawled, no matter the cost):
Use the standard & separator for URL parameters. 💩
is not a good parameter separator character.
Maintain a consistent order of filters in the URL path.
Return a 404 status code for filter combinations with no results.
Unless you have no other options (for example,
you have a single-page app),
avoid redirecting empty results to a generic "not found" page.
Important considerations
You can also use rel="canonical" to help consolidate signals by pointing variations
to a main page. This one takes time to get picked up.
rel="nofollow" on filter links can discourage crawling, but must be applied
consistently. As in, every link pointing to these pages, internal and external, must have a
rel="nofollow" attribute.
Crawling faceted navigation URLs will always consume server resources and may impact the
discovery of new content.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],[],[[["\u003cp\u003eFaceted navigation can cause overcrawling and slow down the discovery of new content due to the creation of a near-infinite number of URLs.\u003c/p\u003e\n"],["\u003cp\u003eIf faceted navigation URLs don't need to be indexed, you can block them using \u003ccode\u003erobots.txt\u003c/code\u003e or URL fragments (\u003ccode\u003e#\u003c/code\u003e).\u003c/p\u003e\n"],["\u003cp\u003eIf faceted navigation URLs must be crawled, use standard \u003ccode\u003e&\u003c/code\u003e separators, maintain a consistent filter order, and return a \u003ccode\u003e404\u003c/code\u003e status for empty result combinations.\u003c/p\u003e\n"],["\u003cp\u003eConsolidate signals by using \u003ccode\u003erel="canonical"\u003c/code\u003e to point to a main page, or use \u003ccode\u003erel="nofollow"\u003c/code\u003e consistently to discourage crawling of filter links.\u003c/p\u003e\n"],["\u003cp\u003eCrawling faceted navigation URLs consumes server resources and impacts new content discovery.\u003c/p\u003e\n"]]],["Faceted navigation can create excessive URLs, leading to overcrawling and slower discovery of important content. To mitigate this, block unnecessary URLs via `robots.txt` or URL fragments. If indexing is needed, use standard URL parameter separators, maintain consistent filter order, and return 404 errors for empty results. Employ `rel=\"canonical\"` to consolidate signals and `rel=\"nofollow\"` consistently to limit crawling. Remember that crawling these URLs consumes resources, regardless of best practices.\n"],null,["Tuesday, December 17, 2024\n\n\nWe just published\n[a new document about faceted navigation best practices](/search/docs/crawling-indexing/crawling-managing-faceted-navigation),\nwhich was\n[originally published as a blog post](/search/blog/2014/02/faceted-navigation-best-and-5-of-worst).\nThis is a summary of some of the important parts of the new documentation page.\n\n\nFaceted navigation is a great way to help users find what they need on your site, but it can\ncreate an SEO nightmare if not implemented carefully. Why? Because it can generate a near-infinite\nnumber of URLs, leading to:\n\n- **Overcrawling:** Search engines waste time crawling countless URLs that aren't valuable to search users.\n- **Slower discovery:** This overcrawling slows down the discovery of your important, new content.\n\n\nIn fact, faceted navigation is by far the most common source of overcrawl issues site owners\nreport to us, and in the vast majority of the cases the issue could've been avoided by following\nsome best practices. But let's back up a little.\n\nThe problem with URLs\n\n\nEach filter combination in a faceted navigation generally creates a unique URL. For example: \n\n```\nhttps://example.com/items.shtm?products=fish&color=radioactive_green&size=tiny\n```\n\n\nChanging any parameter --- `product`, `color`, or `size`\n--- creates a new URL, leading to a potential explosion of URLs. And that's the problem: a\nvirtually infinite number of new URLs waiting to be discovered. Let's fix it.\n\nTwo approaches\n\n1. **Block faceted navigation URLs:**\n - If you don't need these URLs indexed, use `robots.txt` to disallow crawling.\n - Or use URL fragments (`#`) for filters, as search engines generally ignore them.\n2. **Optimize faceted navigation URLs (if you need them crawled, no matter the cost):**\n - Use the standard `&` separator for URL parameters. 💩 is not a good parameter separator character.\n - Maintain a consistent order of filters in the URL path.\n - Return a `404` status code for filter combinations with no results.\n - Unless you have no other options (for example, [you have a single-page app](/search/docs/crawling-indexing/javascript/javascript-seo-basics#avoid-soft-404s)), avoid redirecting empty results to a generic \"not found\" page.\n\nImportant considerations\n\n- You can also use `rel=\"canonical\"` to help consolidate signals by pointing variations to a main page. This one takes time to get picked up.\n- `rel=\"nofollow\"` on filter links can discourage crawling, but must be applied consistently. As in, every link pointing to these pages, internal and external, must have a `rel=\"nofollow\"` attribute.\n- Crawling faceted navigation URLs will always consume server resources and may impact the discovery of new content.\n\n\nIf you have suggestions or need clarification about our\n[new document about faceted navigation best practices](/search/docs/crawling-indexing/crawling-managing-faceted-navigation),\nuse the feedback tool on that doc. If you are really into faceted navigation and wanna chat about\nit with others, the\n[Search Central community](https://goo.gle/sc-forum) is the place\nto go, but you can also find us on\n[LinkedIn](https://www.linkedin.com/showcase/googlesearchcentral/).\n\n\nPosted by [Gary Illyes](/search/blog/authors/gary-illyes)\n\n*** ** * ** ***\n\nWant to learn more about crawling? Check out the entire Crawling December series:"]]