---
title: "Control faceted navigation so filters help shoppers without flooding Google with URLs"
description: "Decide which filter pages deserve indexing, block or consolidate the rest as Google documents, and measure the crawl before and after."
canonical: "https://scalewithsearch.com/articles/ecommerce-seo-faceted-navigation"
date: "2026-03-20"
modified: "2026-09-25"
---
## Site navigation

- [Scale With Search](https://scalewithsearch.com/)
- Real estate
  - Real estate
    - [Real estate](https://scalewithsearch.com/for/real-estate)
- Work
  - Start here
    - [Send your brief](https://scalewithsearch.com/work#send-your-brief)
    - [Prepare your six-question brief](https://scalewithsearch.com/work#prepare-your-six-question-brief)
  - Build
    - [Site build, content library with SEO, signal desk](https://scalewithsearch.com/work)
- For your business
  - Trades and home services
    - [Auto body and collision shops](https://scalewithsearch.com/for/auto-body-and-collision-shops)
    - [Foundation and home repair contractors](https://scalewithsearch.com/for/foundation-and-home-repair)
    - [Garage door and fencing contractors](https://scalewithsearch.com/for/garage-door-and-fencing-contractors)
    - [HVAC contractors](https://scalewithsearch.com/for/hvac-contractors)
    - [Janitorial and commercial cleaning companies](https://scalewithsearch.com/for/janitorial-and-commercial-cleaning)
    - [Locksmiths](https://scalewithsearch.com/for/locksmiths)
    - [Moving companies](https://scalewithsearch.com/for/moving-companies)
    - [Pest control companies](https://scalewithsearch.com/for/pest-control-companies)
    - [Plumbing and electrical contractors](https://scalewithsearch.com/for/plumbing-and-electrical-contractors)
    - [Restoration and water or fire damage companies](https://scalewithsearch.com/for/restoration-and-water-fire-damage)
    - [Roofing companies](https://scalewithsearch.com/for/roofing-companies)
    - [Towing companies](https://scalewithsearch.com/for/towing-companies)
    - [Tree services and landscaping companies](https://scalewithsearch.com/for/tree-services-and-landscaping)
    - [Solar installers](https://scalewithsearch.com/for/solar-installation)
    - [General contractors](https://scalewithsearch.com/for/general-contractors-and-construction)
    - [Paving, concrete, and flooring contractors](https://scalewithsearch.com/for/paving)
  - Practices and professional services
    - [Bookkeeping and tax practices](https://scalewithsearch.com/for/bookkeeping-and-tax-practices)
    - [Dental practices](https://scalewithsearch.com/for/dental-practices)
    - [Family and criminal defense law firms](https://scalewithsearch.com/for/family-and-criminal-defense-law-firms)
    - [Med spas and aesthetics practices](https://scalewithsearch.com/for/med-spas-and-aesthetics)
    - [Personal injury law firms](https://scalewithsearch.com/for/personal-injury-law-firms)
    - [Veterinary clinics](https://scalewithsearch.com/for/veterinary-clinics)
    - [Gyms and fitness studios](https://scalewithsearch.com/for/fitness)
    - [Therapy and outpatient health practices](https://scalewithsearch.com/for/therapy-and-outpatient-health)
    - [Medical billing companies](https://scalewithsearch.com/for/medical-billing)
    - [Insurance agencies](https://scalewithsearch.com/for/insurance-agencies)
    - [Financial advisors](https://scalewithsearch.com/for/financial-advisors)
    - [Property management companies](https://scalewithsearch.com/for/property-management)
    - [Recruiting and staffing agencies](https://scalewithsearch.com/for/recruiting-and-staffing)
    - [Architects and interior designers](https://scalewithsearch.com/for/architects-and-interior-designers)
    - [Logistics and supply chain companies](https://scalewithsearch.com/for/logistics-and-supply-chain)
  - Agencies, MSPs, and manufacturing
    - [IT and managed service providers](https://scalewithsearch.com/for/it-and-managed-service-providers)
    - [Machine shops and precision manufacturers](https://scalewithsearch.com/for/machine-shops-and-precision-manufacturing)
    - [Marketing agencies and freelancers](https://scalewithsearch.com/for/marketing-agencies-and-freelancers)
    - [SEO agencies and consultants](https://scalewithsearch.com/for/seo-agencies-and-consultants)
    - [Small manufacturers and fabricators](https://scalewithsearch.com/for/small-manufacturers-and-fabricators)
  - Restaurants, shops, studios, and nonprofits
    - [Restaurants and hospitality businesses](https://scalewithsearch.com/for/restaurants-and-hospitality)
    - [Retail stores and ecommerce sellers](https://scalewithsearch.com/for/retail-and-ecommerce)
    - [Photographers, event planners, and travel agents](https://scalewithsearch.com/for/photographers)
    - [Churches and nonprofits](https://scalewithsearch.com/for/churches-and-nonprofits)
  - [All industries](https://scalewithsearch.com/for/)
- Learn
  - For your office
    - [Office job guides](https://scalewithsearch.com/guides/)
    - [Browser calculators](https://scalewithsearch.com/tools/)
  - Start here
    - [How it works](https://scalewithsearch.com/how-it-works)
    - [Free Starter Kit](https://scalewithsearch.com/kit/business-memory-starter-kit.zip)
    - [Synthetic specimen](https://scalewithsearch.com/specimen/working-session-specimen.zip)
  - Guides
    - [The Complete Guide to Business Memory for AI Agents](https://scalewithsearch.com/articles/business-memory-for-ai-agents-guide)
    - [The Complete Small-Business Guide to AI Agent Governance](https://scalewithsearch.com/articles/ai-agent-governance-guide-small-business)
    - [The Complete Guide to Leaving Vendor AI Memory](https://scalewithsearch.com/articles/leaving-vendor-ai-memory-guide)
  - Articles by cluster
    - [Business memory](https://scalewithsearch.com/articles/business-memory-for-ai-agents-guide)
    - [Agent governance](https://scalewithsearch.com/articles/ai-agent-governance-guide-small-business)
    - [Migration and ownership](https://scalewithsearch.com/articles/leaving-vendor-ai-memory-guide)
  - For machines
    - [llms.txt](https://scalewithsearch.com/llms.txt)
    - [llms-full.txt](https://scalewithsearch.com/llms-full.txt)
    - [Machine view](https://scalewithsearch.com/?view=machine)
- Company
  - Evidence
    - [Proof](https://scalewithsearch.com/proof)
  - Company
    - [About](https://scalewithsearch.com/about)

# Control faceted navigation so filters help shoppers without flooding Google with URLs.

A shopper filters a boot category by color, size, and width. The platform writes each choice into the URL. Every combination becomes a new page that Googlebot can find and crawl. The store has 300 products and, as far as a crawler can tell, tens of thousands of pages.

Faceted navigation is the set of filters on a category page: size, color, brand, price, material, and so on. Shoppers need it. Search engines mostly do not. Most filter combinations are near-duplicates of the category page. A crawl of them uses time that Googlebot could spend on new and changed products. This article shows you how to decide which filter pages to index and how to keep the rest out of the way.

## Count the URLs your filters create

Start with arithmetic. For each category, list the filters and the number of options in each. With single-choice filters, each filter adds its options plus "none." Multiply across filters.

An example with hypothetical inputs: a boot category has 12 colors, 40 sizes, 3 widths, and a waterproof or not option. That gives 13 × 41 × 4 × 3 = 6,396 possible filter URLs for one category. Four sort orders multiply that to 25,584. Filters that allow several choices at once, such as "black or brown," multiply it much further.

Then check what Google actually finds. Search Console's Page indexing report lists URLs that Google discovered and did not index. Filter URLs often fill the "Duplicate" and "Crawled, currently not indexed" groups. The Crawl stats report shows how many requests Googlebot makes each day. Server logs show how much of that crawl goes to filter URLs. For the log method, read [log file analysis for SEO](/articles/log-file-analysis-seo).

## Decide which filter pages deserve to rank

A few filter combinations match real searches. "Wide hiking boots" and "brown leather hiking boots" are phrases shoppers type. A page that shows exactly those products can rank for them. "Size 9, black, narrow, sorted by price" is not a search anyone types.

Apply three tests to each candidate filter page:

1. **Demand.** The phrase has search volume in your keyword research tool.
2. **Supply.** The filter returns enough products to be a useful page, not one or two items.
3. **Distinct results.** The live search results for the phrase show product lists, and your category page does not already rank for it.

A filter page that passes all three becomes an indexable landing page. Treat it like a category. Give it a stable, readable URL, its own title, H1, and short introduction, and a self-referencing canonical URL. Link to it from the category page, and include it in the XML sitemap. The page template is in [ecommerce category page SEO](/articles/ecommerce-category-page-seo).

Every other combination stays available to shoppers and out of the index.

## Keep the other combinations out of the crawl

Google's crawling documentation on faceted navigation (checked September 2026) gives two paths. The choice depends on whether you need the filter URLs crawled at all.

**If you do not need the filter URLs in search**, stop Googlebot from crawling them. Google names two methods:

- Disallow the filter parameters in robots.txt. For example, `Disallow: /*?*size=` blocks every URL with a size parameter.
- Put the filter state in a URL fragment, such as `/boots/waterproof#size=9`. Google's documentation says fragment-based filters have no effect on crawl.

A robots.txt block saves crawl capacity. A `rel="canonical"` tag can reduce crawl volume over time, but Google calls it less effective in the long term. A `noindex` tag saves no crawl, because Googlebot must fetch the URL to read it. For the robots.txt rules, read [robots.txt and crawl budget for developers](/articles/robots-txt-crawl-budget-developers).

**If you do need some filter URLs crawled**, make them easy to understand:

- use the standard `&` separator for parameters, not commas, semicolons, or custom separators;
- keep filters in one consistent order, so that "color then size" and "size then color" never form two URLs;
- return HTTP 404 when a filter combination has no products, instead of a "no results" page with status 200;
- point the canonical URL of near-duplicate filter pages at the page you want indexed.

A canonical tag is a hint, not a directive. Google can choose a different canonical. It also cannot read a canonical or `noindex` on a URL that robots.txt blocks. Do not block a URL in robots.txt and expect Google to see its `noindex`. The canonical rules are in [canonical tags for developers](/articles/canonical-tags-developers).

The URL Parameters tool that once let site owners describe parameters in Search Console was retired in 2022. Parameter handling now lives on the site itself.

## Choose how the filter links work

How the filter controls link matters as much as the URL format.

For filter pages you want indexed, use plain links with an `href`. Googlebot can then follow them from the category page.

For filter combinations you do not want crawled, you have three choices. The first is a fragment URL, as above. The second is a blocked parameter, which still produces a shareable URL for shoppers. The third is a filter that updates the product grid with JavaScript without changing the crawlable URL. The third option keeps crawlers out, but shoppers lose shareable filter links. The grid must still render for users without errors. If the store filters with JavaScript, check how Google renders the page. The rendering rules are in the [JavaScript SEO guide](/articles/javascript-seo-guide).

Keep sort orders out of the index in all cases. A sort changes the order of products, not the set. Point the canonical of each sort URL to the unsorted page, or block the sort parameter.

## Worked example: one boot category

The inputs are hypothetical. A store sells hiking boots in 40 sizes and 12 colors, in 3 widths, waterproof and not. Its platform writes every filter into query parameters in the order the shopper clicks them. It has 6 categories and about 300 products.

**Step 1: measure.** Server logs for one month show that most of Googlebot's requests go to URLs with filter parameters. Search Console lists thousands of filter URLs as "Crawled, currently not indexed." Several new products added that month have not been crawled yet.

**Step 2: pick landing pages.** The owner tests filter phrases. "Wide hiking boots" has demand, 30 matching products, and product-list results, so it becomes a landing page at `/boots/wide`. "Brown leather hiking boots" passes as well. Color-and-size combinations fail the demand test.

**Step 3: build the landing pages.** Each landing page gets a readable URL, its own title and H1, and a two-sentence introduction. It also gets a self-referencing canonical, a link from its parent category, and a sitemap entry.

**Step 4: block the rest.** The developer fixes the parameter order so that each combination produces one URL. The developer disallows the size, color, width, and sort parameters in robots.txt. A filter combination with no products now returns 404.

**Step 5: check for conflicts.** The developer confirms that no landing page URL matches a blocked pattern. The developer also confirms that the landing pages are plain links in the category template.

**Step 6: measure again.** One and two months later, the owner compares the share of Googlebot requests that go to filter URLs. The owner also compares the time until new products are crawled. The owner checks the impressions for the two landing pages too. The example stops at the measurement, because the outcome depends on the site.

## Recheck after every platform change

Theme updates, new apps, and new filters can reintroduce crawlable filter URLs. After each change, crawl one category with a desktop crawler and count the unique URLs it finds. Compare the count with the last baseline. Check the robots.txt file and the canonical tags on a sample of filter pages. A single new filter can multiply the URL count again.

----

```text
                  .|########||.                                       .|########||.                                       .|########||.
               |##||.      .||##|.                                 |##||.      .||##|.                                 |##||.      .||##|.
             |#|.              .|#|.                             |#|.              .|#|.                             |#|.              .|#|.
           |#|                    |#|                          |#|                    |#|                          |#|                    |#|
         .#|                        |#.                      .#|                        |#.                      .#|                        |#.
        .#.                          .#|                    .#.                          .#|                    .#.                          .#|
       |#.                            .#|                  |#.                            .#|                  |#.                            .#|
      |#             ......             #|                |#             ......             #|                |#             ......             #|
     .#           ||#########|           #|              .#           ||#########|           #|              .#           ||#########|           #|
    .#.         |######||######|.        .#.            .#.         |######||######|.        .#.            .#.         |######||######|.        .#.
    #.        .##|###|##|#|######|        .#            #.        .##|###|##|#|######|        .#            #.        .##|###|##|#|######|        .#
   ||        |##|#||||||||||||#||#|        ||          ||        |##|#||||||||||||#||#|        ||          ||        |##|#||||||||||||#||#|        ||
   #        |#||||||||||||||||||||#|        #.         #        |#||||||||||||||||||||#|        #.         #        |#||||||||||||||||||||#|        #.
  ||       |#||||||||||||||||||||||#|       ||        ||       |#||||||||||||||||||||||#|       ||        ||       |#||||||||||||||||||||||#|       ||
  #       .#||||||||||||||||||||||||#|       #        #       .#||||||||||||||||||||||||#|       #        #       .#||||||||||||||||||||||||#|       #
 ||   ....|||#||||||##|#|||#|#||##||||....|. ||      ||   ....|||#||||||##|#|||#|#||##||||....|. ||      ||   ....|||#||||||##|#|||#|#||##||||....|. ||
 #.  .  ....|#  ....#|||   ||| .#|||  ....#. .#      #.  .  ....|#  ....#|||   ||| .#|||  ....#. .#      #.  .  ....|#  ....#|||   ||| .#|||  ....#. .#
 #   .  ||||#| .#####||  . .#| .#|||  ||||#   #.     #   .  ||||#| .#####||  . .#| .#|||  ||||#   #.     #   .  ||||#| .#####||  . .#| .#|||  ||||#   #.
.|   |||||  #. |#|||||. ||  #. |#||. .|||||   ||    .|   |||||  #. |#|||||. ||  #. |#||. .|||||   ||    .|   |||||  #. |#|||||. ||  #. |#||. .|||||   ||
||   |....  #. ....|#.      |. ...|. ....||   ||    ||   |....  #. ....|#.      |. ...|. ....||   ||    ||   |....  #. ....|#.      |. ...|. ....||   ||
#.  .||||||##||||||##||####|||||||#||||||#|   .#    #.  .||||||##||||||##||####|||||||#||||||#|   .#    #.  .||||||##||||||##||####|||||||#||||||#|   .#
#    .||####|###########################|.     #    #    .||####|###########################|.     #    #    .||####|###########################|.     #
#      .#||||||.#.|| # |. ..# #| #|||||#|      #    #      .#||||||.#.|| # |. ..# #| #|||||#|      #    #      .#||||||.#.|| # |. ..# #| #|||||#|      #
#      .#|||||| ..  |# ## |#| ...#|#|||#|      #    #      .#|||||| ..  |# ## |#| ...#|#|||#|      #    #      .#|||||| ..  |# ## |#| ...#|#|||#|      #
#      .#|||#|# .# .#| #| ##|.#..#|||||#|      #    #      .#|||#|# .# .#| #| ##|.#..#|||||#|      #    #      .#|||#|# .# .#| #| ##|.#..#|||||#|      #
#      .#||||||############|######|||||#|      #    #      .#||||||############|######|||||#|      #    #      .#||||||############|######|||||#|      #
#   |...||#||||||#||||#|#||||||#|||||#||| |.|  #    #   |...||#||||||#||||#|#||||||#|||||#||| |.|  #    #   |...||#||||||#||||#|#||||||#|||||#||| |.|  #
#. .. ||||# .|||##|.  |#| .|| || .|||#. #|  # .#    #. .. ||||# .|||##|.  |#| .|| || .|||#. #|  # .#    #. .. ||||# .|||##|.  |#| .|| || .|||#. #|  # .#
|| |  ...||  ...##| |  #| .|. |. #####  .. .| ||    || |  ...||  ...##| |  #| .|. |. #####  .. .| ||    || |  ...||  ...##| |  #| .|. |. #####  .. .| ||
|| ||||| || ||||#|  .  |. |. |#. ||||| |#| || ||    || ||||| || ||||#|  .  |. |. |#. ||||| |#| || ||    || ||||| || ||||#|  .  |. |. |#. ||||| |#| || ||
.# |.....#|....|#.||||.|||##.|#|....||.#||.#. #.    .# |.....#|....|#.||||.|||##.|#|....||.#||.#. #.    .# |.....#|....|#.||||.|||##.|#|....||.#||.#. #.
 #.|||||||#############################| ||| .#      #.|||||||#############################| ||| .#      #.|||||||#############################| ||| .#
 ||       ##||#||#||||||#||#||#||#||##.      ||      ||       ##||#||#||||||#||#||#||#||##.      ||      ||       ##||#||#||||||#||#||#||#||##.      ||
  #       .#|||||||||#||#|||||||||||#|       #        #       .#|||||||||#||#|||||||||||#|       #        #       .#|||||||||#||#|||||||||||#|       #
  ||       |#||||||||||||||||||||||#|       ||        ||       |#||||||||||||||||||||||#|       ||        ||       |#||||||||||||||||||||||#|       ||
  .#        |#||||||||||||||||||||#|        #.        .#        |#||||||||||||||||||||#|        #.        .#        |#||||||||||||||||||||#|        #.
   ||        |#||||||||||||||||||#|        ||          ||        |#||||||||||||||||||#|        ||          ||        |#||||||||||||||||||#|        ||
    #.        .######|#|#########|        .#            #.        .######|#|#########|        .#            #.        .######|#|#########|        .#
    .#.         |#####||||#####|         .#.            .#.         |#####||||#####|         .#.            .#.         |#####||||#####|         .#.
     |#           ||########||           #.              |#           ||########||           #.              |#           ||########||           #.
      |#             ......             #|                |#             ......             #|                |#             ......             #|
       |#.                            .#|                  |#.                            .#|                  |#.                            .#|
        |#.                          .#.                    |#.                          .#.                    |#.                          .#.
         .#|                        |#.                      .#|                        |#.                      .#|                        |#.
           |#|                    |#|                          |#|                    |#|                          |#|                    |#|
            .|#|.              .|#|.                            .|#|.              .|#|.                            .|#|.              .|#|.
               |##||.      .||##|                                  |##||.      .||##|                                  |##||.      .||##|
                 .||########||.                                      .||########||.                                      .||########||.

Scale With Search  2026  [scalewithsearch.com](https://scalewithsearch.com)
```
