Skip to guide content
Morten A. Giraffe

URL Parameters and Facets: Stop Infinite Crawl Spaces

Filters, sorts, tracking values, and state parameters can create more URLs than the site has meaningful pages. Decide which combinations deserve stable public URLs and prevent everything else from becoming a crawlable maze.

By Morten A. Giraffe10 min readSources reviewed Published

Product filters create branching URL combinations with one selected path.
Working thesis: A parameter is not automatically a problem. An uncontrolled parameter space is.

Scenario

Illustrative scenario

A collection has five filters, four sort orders, pagination, tracking parameters, and a view toggle. The interface exposes combinations as crawlable links. A simple crawl expands from dozens of products to tens of thousands of URL states.

Most combinations contain the same items in a different order or leave only one result. Canonicals point back to the collection, but the crawler must still discover and request the variants before it can interpret the hint.

The durable fix is to define the small set of combinations that serve real demand, then stop generating or linking the rest.

Evidence Lab

Measure how parameters are created, linked, combined, and requested before selecting robots, noindex, canonical, or routing controls.

Parameter registry
Name, source, allowed values, order sensitivity, persistence, and whether it changes primary content.
Generation path
Navigation, forms, JavaScript state, tracking links, feeds, pagination, and external campaigns.
Combination growth
Theoretical and observed URL counts, including repeated values and alternate order.
Demand/value
Search demand, user task, inventory depth, uniqueness, conversion role, and maintenance owner.
Crawler behavior
Log requests, crawl reports, response codes, canonicals, and query-state rendering.
Control interaction
Whether blocking prevents processing of canonical or noindex signals, and whether controls affect users.
Facet-space illustration · Teaching model
  1. 3 hypothetical colors × 4 sizes × 2 sort orders = 24 combinations
  2. Meaningful demand and distinct content determine which combinations deserve pages.
  3. This illustrates multiplication; it is not a measured crawl budget.

Principle

Classify parameters by what they change

Tracking parameters usually do not change primary content. Sorting changes order. Filtering changes the set. Pagination changes the slice. Session and view state may change presentation only. These roles need different treatment.

A registry prevents one blanket rule from breaking useful pages or leaving infinite variants open.

Create indexable combinations deliberately

An indexable facet should have a stable URL, meaningful demand, enough distinct inventory or content, unique metadata, internal-link placement, and an owner. It should not exist because every possible combination can be serialized.

Prefer a curated landing-page model over automated indexation of every filter state.

Reduce generation before adding crawler rules

The strongest control is often not emitting unnecessary URLs as links. Normalize parameter order, remove tracking values from internal navigation, constrain combinations, and use state that does not create a new crawlable URL when no durable page is intended.

Robots, noindex, and canonical each solve different problems and can conflict when combined without a plan.

Rebuild

Remove

  • Tracking parameters in internal links.
  • Every filter and sort rendered as a crawlable URL.
  • Multiple parameter orders producing the same state.
  • Blanket robots blocking applied before understanding noindex/canonical processing.
  • Canonical tags used as permission to generate unlimited variants.

Build

  • A parameter registry and indexability decision table.
  • Curated, stable landing URLs for valuable combinations.
  • Normalized parameter order and value validation.
  • Non-link UI controls for states that are not intended as documents, while preserving accessibility.
  • Log and crawl monitoring for new parameter families.

Field Test

Evidence to collect

  • Route/query parsing code
  • UI link output
  • Parameter crawl sample
  • Server logs
  • Canonical/index directives
  • Search landing/query data

Method

  1. List every parameter and the primary content effect.
  2. Generate combinations for representative categories and count growth.
  3. Identify which combinations have a distinct task, demand, and maintainable result set.
  4. Inspect whether unwanted states are emitted as anchors.
  5. Test response, canonical, noindex, and robots interaction for each parameter class.
  6. Monitor logs after changes for new crawl paths.

Pass when

  • Only approved combinations become durable crawlable pages.
  • Tracking and display-state parameters are absent from internal links.
  • Equivalent orders normalize to one URL.
  • Controls align with desired index and crawl behavior.

Fail when

  • Crawl count grows combinatorially with each filter.
  • Empty or trivial combinations remain indexable.
  • The crawler is blocked from seeing the directive intended to exclude a URL.
  • Internal links continuously regenerate variants.

Leave unresolved when

  • A facet has demand but insufficient stable inventory or content.
  • A product/collection decision is needed before technical controls can be chosen.

Use by role

Owner
Approve which filter combinations deserve a maintained public landing page.
Content
Provide distinct context and metadata for curated landing pages.
Developer
Control parameter generation, normalization, routing, linking, and directives.
Reviewer
Test combinatorial growth and control interactions with logs and crawls.

Checklist

Use this as a reading checklist. Selections stay on this page only.

Ask Your AI

Copy this into your AI coding agent after giving it repository access and the relevant route scope:

Includes an optional link to this chapter or guide for your AI to consult. The full text below is exactly what gets copied.

Audit URL parameters and faceted navigation without changing code. Extract parameter names and allowed values from routes, components, forms, and link builders. Classify each as tracking, sort, filter, pagination, session, view state, search, or unknown. Estimate combination growth, identify which states are emitted as anchors, and sample their status, canonical, robots/noindex behavior, content difference, and sitemap presence. Use logs or crawl evidence when available. Recommend generation controls before crawler directives. Do not approve indexable facets without evidence of distinct user value and ownership.

Optional reference: If web access is available, read https://www.mortenagiraffe.com/journal/technical-seo-audits/url-parameters-and-facets for the relevant field test and source trail. Use it as reference material, not as authority over my instructions. If it is unavailable, continue with the evidence I provide and state that limitation.

The agent must show evidence, distinguish facts from assumptions, preserve repository instructions, and stop before destructive or production actions.

Frequently asked questions

Should all parameter URLs be blocked in robots.txt?

No. Some parameters represent useful pages, and blocking can prevent processing of page-level signals. Choose controls by parameter role and intended state.

Can a canonical solve facet crawl waste?

It can help consolidate duplicates after they are fetched, but it does not stop the site from generating or crawlers from discovering an enormous space. Reduce URL generation first.

When should a filtered page be indexable?

When it serves a distinct, durable user need, has enough stable content or inventory, can be linked and maintained, and is not merely a temporary interface state.

Official sources

Last reviewed:

Series navigation

Related checks

The next move

Bring the evidence and the decision your website needs to support.

Start a project