URL parameters are the key-value pairs appended to a URL after a question mark — ?color=blue&size=large&sort=price — used to filter, sort, paginate, search, and track. They are essential to how modern sites work, and they are also the single most common cause of crawl waste and duplicate content on ecommerce and listing sites.
The core problem is arithmetic. A category page with five filters offering four options each, plus three sort orders and pagination, can generate tens of thousands of crawlable URLs from one page of products. Google will happily spend weeks crawling those permutations instead of your new product pages. Since Google retired the URL Parameters tool in Search Console in April 2022, you cannot simply tell it to ignore them — you have to control this on your own site.
The anatomy of a parameterized URL
Everything after the ? is the query string. Each parameter is a key=value pair, and pairs are joined with &. Everything after a # is a fragment, which browsers handle locally and crawlers generally ignore for indexing purposes — that distinction matters, because fragment-based filtering creates no crawl problem at all.
Parameters fall into four functional groups, and each needs different handling:
- Content-changing:
?category=boots,?q=waterproof,?page=3— genuinely different content - Content-narrowing:
?color=blue&size=9— a subset of the same content, faceted navigation - Content-reordering:
?sort=price_asc,?view=grid— identical content, different presentation - Tracking:
?utm_source=newsletter,?gclid=…,?fbclid=…— identical content, analytics only
What actually goes wrong
Four failure modes account for nearly every parameter problem worth fixing.
Crawl budget drain. Crawl budget only constrains large sites in practice — under roughly a few thousand URLs it is rarely the bottleneck. Above that, and especially above 100,000 URLs, a facet explosion means Googlebot spends its allocation on ?sort=price&color=red&page=7 while your new products sit undiscovered for weeks. You can see this directly in the Crawl Stats report in Search Console: if parameterized URLs dominate the request log, you have a problem.
Duplicate content dilution. Ten URLs serving the same product grid split link equity and confuse Google about which version to rank. Google usually picks one and consolidates, but it picks — and its choice is often not yours.
Index bloat. Thousands of near-identical thin filter pages in the index send a low-quality signal about the site as a whole. The “Duplicate, Google chose a different canonical” and “Crawled — currently not indexed” buckets in the Pages report are where this shows up.
Analytics fragmentation. Less dramatic but real: the same landing page reported as forty different rows because of tracking parameters, making performance impossible to read.
Google retired the URL Parameters tool — here is what replaced it
The old Search Console URL Parameters tool let you tell Google how to treat a given parameter: no effect, sorts, narrows, specifies, translates, or paginates. Google deprecated it in April 2022, stating that its systems had become good enough at inferring parameter behavior that the tool was used on fewer than 1% of sites and was often configured in ways that hurt those sites.
The honest reading: Google is now reasonably good at guessing, but “reasonably good” is not “correct on your site.” Control passed back to you, and the mechanisms available are all on-site. There is no equivalent Bing-only shortcut worth relying on either, so build one solution that works for every crawler.
How to control parameters properly
Work through these in order. The right answer is usually a combination, not a single technique.
- Self-referencing and consolidating canonicals. Every filtered, sorted, or tracked URL should carry a canonical pointing at the clean version.
/boots?sort=pricecanonicals to/boots. This is the workhorse fix and it handles sort, view, and tracking parameters cleanly. Remember canonicals are a hint, not a directive — Google can and does override them when the pages differ meaningfully. - Consistent parameter order and casing.
?color=blue&size=9and?size=9&color=blueare different URLs to a crawler. Have your application normalize order alphabetically and lowercase values, then redirect the non-canonical form. - robots.txt disallow for genuinely worthless combinations.
Disallow: /*?*sessionid=stops the crawl before it starts. Use this carefully: a blocked URL cannot be crawled, so Google will never see its canonical tag, and a blocked page with external links can still appear in results as a bare URL. Block only what should never be crawled at all. - noindex, follow on thin facet pages. Good for filter combinations you want crawled and link-followed but not indexed. Do not combine noindex with a robots.txt block — the crawler cannot read a tag on a page it is not allowed to fetch.
- Do not link to them. The cleanest control of all. Render facet links as JavaScript-driven or POST-based controls, or use fragments, so no crawlable
<a href>exists for combinations you never want crawled. - Static URLs for facets that deserve to rank. If “waterproof hiking boots” has real search demand, give it
/hiking-boots/waterproof/with unique copy — a real page, not a parameter.
Pagination and tracking: two special cases
Pagination changed. Google stopped supporting rel="next" and rel="prev" as indexing signals in 2019. Current best practice is straightforward: let paginated pages self-canonicalize (page 2 canonicals to page 2, not to page 1), keep them indexable, and make sure every paginated page links to the next with a crawlable anchor. Canonicalizing all pages to page 1 hides your deeper products from discovery entirely. A “view all” page is a reasonable alternative if it loads fast enough.
Tracking parameters are simpler than people fear. Google generally ignores common ones like gclid and utm_* for indexing, but a self-referencing canonical on the clean URL removes any ambiguity. Where possible, move tracking to a fragment or a first-party cookie set on landing, so the crawlable URL stays clean.
Auditing your own parameters
Start with three data sources. Crawl the site and group discovered URLs by query string key to see which parameters exist and how many URLs each generates. Pull the Crawl Stats report to see what Googlebot is actually spending requests on. Check server logs if you have them — they are the ground truth on crawler behavior.
Then build a simple inventory: parameter name, what it does, how many URLs it creates, whether it should be crawled, whether it should be indexed, and the mechanism enforcing that. Most sites find three or four parameters causing 90% of the waste, usually a session ID, a sort control, and one over-generous facet.
SEO Rocket’s crawler will surface the duplicate titles, canonical conflicts, and indexability problems that parameter sprawl creates, with the actual URLs and titles as evidence across full crawls of 900 pages and up. It will not rewrite your faceted navigation — that is a development job, and it is the one that actually fixes the problem at the source.