Prompt
How do I stop faceted navigation from creating duplicate URLs?
Latest observation
Faceted navigation creates duplicate URLs when filters/sorts generate many crawlable URL variants that show substantially similar content.
Best ways to prevent duplicate URLs
1) Decide which facet URLs should be indexable
Only allow search engines to index facets that:
- have real search demand
- add unique value
- are worth ranking on their own
For all other facet combinations, use one of the options below.
2) Use noindex, follow on low-value facet pages
If a faceted page should be accessible to users but not indexed, add:
<meta name="robots" content="noindex, follow">
This tells search engines not to index the page, but still crawl links on it.
3) Canonicalize to the main category page
For filter/sort variations that are duplicates, set a canonical tag pointing to the preferred URL:
<link rel="canonical" href="https://example.com/category/" />
Use this when the filtered page is essentially a duplicate of the category page.
4) Block crawlable parameters carefully
If your faceted URLs use query parameters like:
?color=blue?size=large?sort=price
you can reduce crawling by:
- limiting internal links to only important facets
- using robots.txt to block unimportant parameter patterns
Example:
Disallow: /*?sort=
Disallow: /*?price=
Be careful: blocking in robots.txt can prevent Google from seeing canonical or noindex tags on those pages.
5) Normalize URLs
Make sure only one version of each URL is used:
- lowercase vs uppercase
- trailing slash vs no trailing slash
- parameter order
- HTTP vs HTTPS
- www vs non-www
Redirect all variants to the preferred version.
6) Keep filter states out of the URL when possible
For UI-only filters that don’t need to be indexable, use JavaScript state instead of changing the URL. This reduces duplicate crawl paths.
7) Use parameter handling rules if supported
Some platforms or search tools let you define how URL parameters should be treated. This can help search engines understand which parameters change content and which don’t.
Recommended setup for most sites
A common approach is:
- Index only a small set of valuable category/facet pages
- Canonical all other facet combinations to the main category
- Use
noindex, followon low-value filter pages - Block useless parameter URLs from internal linking
- Use redirects for URL normalization
Example strategy
Suppose these URLs exist:
/shoes//shoes/?color=red/shoes/?color=red&size=10/shoes/?sort=price
You might:
- keep
/shoes/indexable - allow
/shoes/?color=redonly if it has search value - canonical
/shoes/?color=red&size=10to/shoes/?color=red noindexor block sort URLs like/shoes/?sort=price
If you want, I can suggest the best setup for your site if you tell me:
- your CMS/platform
- an example faceted URL structure
- which facets you want indexed, if any