URL Parameters

How query-string parameters create duplicate and near-duplicate URLs and crawl problems — and how to manage them today, now that the GSC URL Parameters tool is gone.

First published: Jun 23, 2026 · Last updated: Jul 18, 2026 · Advanced
demand #4 in Indexing#14 in How Search Works#76 in Technical SEO#102 on the site
1 evidence signal on this page

URL parameters are the ?key=value data tacked onto a URL. The whole framework is active vs passive: active params (filter/sort/paginate/search) change the page and create near-duplicates; passive params (tracking, session, affiliate IDs) don't change content and create pure duplicates. They cause duplicate content, split signals, and wasted crawl budget — Google's own 2024–25 data blames faceted navigation plus action parameters for ~75% of crawl problems. The Google Search Console URL Parameters tool is gone (retired April 2022) — don't tell anyone to use it; Google found only ~1% of configs useful and now handles parameters automatically. Manage them today with consistent parameter order, rel=canonical for passive params (let them crawl, don't reflexively block), robots.txt only for genuine crawl traps (it doesn't deindex), 404 for empty filter combos, and don't internally link to parameterized URLs. Bing still has its Ignore URL Parameters tool — a real Google-vs-Bing difference.

TL;DR — URL parametersThe `?key=value` data tacked onto the end of a URL after a question mark — used for tracking, sessions, filtering, sorting, and search — and one of the biggest sources of duplicate URLs and wasted crawling in SEO. (?key=value query strings) split into active (filter/sort/paginate/search — change the page) and passive (tracking, session, affiliate IDs — don’t). Passive variants often duplicate contentThe same or very similar primary content reachable at more than one URL. There's no general duplicate content penalty — the real costs are possible signal dilution, the wrong URL getting chosen, and less-efficient crawling.; active combinations can create a very large crawl space whether or not their content is identical. The GSCA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. URL Parameters tool is dead (retired 26 April 2022) — Google foundA 302 (\"Found\") is a temporary redirect: it forwards users to a new URL while telling search engines the original URL should stay in the index. It's a weak canonicalization signal, not the zero-equity dead end of SEO folklore. only ~1% of configs useful and now learns parameters automatically. Manage them today with consistent parameter order, rel=canonical for passive params (let them crawl — don’t reflexively block), robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere. only for genuine crawl trapsA spider trap (also called a crawler trap) is a site structure that generates an effectively infinite number of URLs — from faceted filters, calendars, session IDs, or redirect loops — so crawlers waste their budget on low-value, near-duplicate pages instead of your real content. (it doesn’t deindexDeindexing means getting a URL to stop appearing in Google's search results. There's no single delete button — the right method depends on whether you own the page, whether removal is temporary or permanent, and whether the content should still exist.), 404 for empty combos, and never internally link to parameterized URLs. Bing still has its Ignore URL Parameters tool — the live Google-vs-Bing difference.

Evidence for this claim Faceted navigation parameters can create very large URL spaces; Google recommends controlling crawlable combinations and returning consistent status codes. Scope: Current Google faceted-navigation guidance. Confidence: high · Verified: Google Search Central: Faceted navigation URLs Evidence for this claim Canonicalization can signal the preferred URL among duplicate or very similar parameter variants, but redirects are stronger when alternatives should not remain accessible. Scope: Current Google canonicalization methods. Confidence: high · Verified: Google Search Central: Canonicalization

Anatomy: query string vs path

A URL parameter is the data after the ?, passed as key=value pairs joined by &. As I put it in my Ahrefs guide on URL parameters, “URL parameters or query strings come after a question mark (?) and pass data along with the URL.” The path (/shoes) identifies the resource; the query string (?color=blue&sort=price) modifies the request. Everything in this article hinges on one fact: the same content can be reached through countless parameter combinations, and search engines treat many of those as distinct URLs.

Active vs passive — the whole framework

I frame parameters through one split, and the right fix follows from which side a parameter lands on.

Active parameters change what’s on the page. The three I always name:

  • Filter — removes some of the content, leaving the more specific subset a user wants to see.
  • Sort — reorders the content (by price, rating, etc.).
  • Paginate — divides content into a series of related pages.

On-site search is the fourth. These create real — often near-duplicate — content variants. The deeper, ecommerce-flavored version of this is faceted navigationFaceted navigation (faceted search, product filtering) lets visitors refine a list of products or content by attribute — price, color, size, brand, rating. The SEO problem: each filter combination can spawn a distinct crawlable URL, turning a small catalog into millions of near-duplicate pages that waste crawl budget and dilute ranking signals.; this article is the parameter lens on it.

Passive parameters don’t change the content. They’re typically used for tracking — UTM tags, gclid, fbclid, affiliate IDs — and for session IDs. These produce pure duplicates of the clean URL. My default position here is specific: “Passive parameters can cause issues with duplicate contentThe same or very similar primary content reachable at more than one URL. There's no general duplicate content penalty — the real costs are possible signal dilution, the wrong URL getting chosen, and less-efficient crawling.. Typically, you want them to be crawled, and each page should have a canonical set to the main version.” In other words, don’t reflexively robots-block tracking parameters — let them be crawled and consolidate them with a canonical.

Treat active/passive as a diagnostic, not a lookup table keyed on the parameter name. The same key name (id, sort, ref) can behave differently on different sites, so before you classify a parameter, check what the response actually does — does the returned content change, or just the tracking/analytics context? Names like utm_ or sort= are strong hints, not proof.

How parameters cause SEO problems

Three distinct failure modes, and they compound:

  • Duplicate / near-duplicate content. Passive params duplicate a page exactly; active params (sort especially) produce near-duplicates. This is squarely a canonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it. problem — the engine has to pick one representative URL out of the cluster.
  • Split ranking signals. Links and authority scatter across every variant instead of consolidating on one URL.
  • Wasted crawl budgetThe number of URLs an engine will crawl in a timeframe. and infinite crawl spaces. “Infinite URL paths with parameters or tons of different combinations can cause issues with crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor..” When parameters can stack arbitrarily, a single site starts to look nearly infinite — the spider trapA spider trap (also called a crawler trap) is a site structure that generates an effectively infinite number of URLs — from faceted filters, calendars, session IDs, or redirect loops — so crawlers waste their budget on low-value, near-duplicate pages instead of your real content. pattern. Google describes the web itself as “a nearly infinite space, exceeding Google’s ability to explore and index every available URL,” and parameter explosion turns one site into a small version of that problem.

Google’s faceted-nav doc explains the crawl mechanic well: a filter system “often means a very large number of possible combinations of filters, which translates to a very large number of possible URLs,” and because those URLs “seem to be novel and crawlersA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index. can’t determine whether the URLs are going to be useful without crawling first, the crawlers will typically access a very large number of faceted navigation URLs.”

The data: parameters are a top crawl drain

This isn’t theoretical. In Google’s 2024–25 crawling discussions, Gary Illyes put real numbers on it. Per Search Engine Land’s coverage, “The biggest issues were faceted navigationFaceted navigation (faceted search, product filtering) lets visitors refine a list of products or content by attribute — price, color, size, brand, rating. The SEO problem: each filter combination can spawn a distinct crawlable URL, turning a small catalog into millions of near-duplicate pages that waste crawl budget and dilute ranking signals. and action parameters, which accounted for about 75% of the problems,” split as “50% come from faceted navigation” and “25% come from action parameters.” SEL defines action parameters as “URL parameters that trigger actions instead of meaningfully changing page content” — think add-to-cart, compare, or sort triggers that mint near-infinite URLs. So Google itself blames parameters for roughly a quarter of all crawl problems on their end.

The underlying mechanism, in Illyes’ words: “Once it discovers a set of URLs, it cannot make a decision about whether that URL space is good or not unless it crawled a large chunk of that URL space.” The crawler has to spend budget to learn a parameter space is junk.

How to find your parameter problems

Before fixing, see the scope:

  • Google Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results.. The Pages report — especially “Duplicate without user-selected canonical” and Discovered – currently not indexedA Google Search Console Page Indexing status meaning Google knows the URL exists but hasn't crawled it yet — the Last Crawl date is empty. Often a crawl-capacity or crawl-demand (site-quality) signal. — and the Crawl Stats report (Settings → Crawl Stats) surface parameter bloat.
  • A site crawl. Ahrefs Site Audit or Screaming Frog will show you parameterized URLs, their canonicals, and where you’re internally linking to them.
  • site: + inurl: searches. A quick site:example.com inurl:? (or inurl:utm_, inurl:sort=) gives a back-of-envelope feel for what’s indexed.
  • Server logs. Log file analysisLog file analysis is reading a web server's raw access logs to see exactly which URLs search engine crawlers actually requested, when, how often, and what status code they got. Unlike crawl tools or Search Console, logs are the unsampled, ground-truth record of what really happened. is the ground truth for which parameter URLs bots actually hit and how often — the only way to confirm real crawl waste.
TIP Classify parameter URLs before choosing a control

Tracking, sorting, and filtering parameters create different page states and need different treatment. Classification narrows the audit; it does not decide which combinations deserve indexing.

Paste a URL sample into my Faceted Navigation Auditor to group parameter patterns, expose duplicate combinations, and separate tracking parameters from content-changing filters. Faceted Navigation Auditor Free

  1. Sample URLs from crawls, logs, and internal links rather than inventing combinations.
  2. Review tracking, sorting, and filter groups separately.
  3. Choose canonical, link-generation, robots, or indexability changes from the actual page behavior.
The classification makes passive tracking variants easy to separate from parameters that materially change content.

How to manage parameters today

There is no single switch — you pick the tool that matches the job. Three distinct jobs, and conflating them is where people go wrong.

1. Consistent handling, first. A lot of duplication is self-inflicted and free to fix. My rule: “Keep a consistent order, and don’t have paths that allow for adding additional parameters.” Use one key per value, and use the industry-standard separator. Google is explicit: “Use the industry standard URL parameter separator ’&’. Characters like comma (,), semicolon (;), and brackets ([ and ]) are hard for crawlers to detect as parameter separators.” And keep the order fixed — Google: “Ensure that the logical order of the filters always stays the same and that no duplicate filters can exist.” Inconsistent order alone multiplies duplicate URLs. Two more free fixes: don’t emit a parameter at all when it’s set to its default value (?sort=default mints a needless duplicate of the un-parameterized URL), and reject or normalize invalid combinations at the application level instead of letting every nonsense combination generate its own URL — without collapsing combinations that genuinely produce different, useful content.

2. rel=canonical for passive / tracking params — my default. Let them be crawled and point each variant’s canonical at the clean URL. My exact framing: a canonical “can help consolidate signals to a chosen URL but requires each additional version of a page to be crawled… This is what I’d opt for by default.” Be honest about the speed, though — a canonical is a hint, not a directive (it’s one of the canonical tagA rel=\"canonical\" annotation — in the HTML <head> or an HTTP Link header — that tells search engines which URL is the preferred version of duplicate or near-duplicate content.s among many signals in canonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it.), and Google says using it “may, over time, decrease the crawl volume of non-canonical versions of those URLs.” Note the slow “over time.”

3. noindex when you truly want a parameter variant out of the index. It works, but the page has to stay crawlable for Google to see the tag, and like canonical it “may be crawled less over time.” Don’t pair it with a robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere. block — if the URL is blocked, Google can’t see the noindex at all.

4. robots.txt disallow — only for genuine crawl traps. This stops crawling, not indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed.. The myth-killer, in my words: “Blocking parameters in robots.txt means that the pages may still get indexed.” They won’t usually show in normal searches, but “these pages won’t be crawled and won’t consolidate signals.” So reserve robots.txt for parameter spaces you never want crawled (true combinatorial traps), not as a duplicate-content fix. Google’s own crawl-budget guidance agrees with the sequence: “Consolidate duplicate content to focus crawling on unique content rather than unique URLs,” and only “if you can’t consolidate them… block these unimportant pages using robots.txt.”

5. 404/410 for empty filter combinations. Google: “Return an HTTP 404 status code when a filter combination doesn’t return results.” Don’t return a 200 empty page (that’s a soft 404A soft 404 is a URL that returns a success status code (usually 200 OK) even though the page is empty, missing, or shows a 'not found' message. It isn't a status code a server sends — it's a label search engines apply after comparing the response code against the rendered content, and they treat the page like a 404 for indexing. — Google keeps crawling it and it “will continue to be crawled, and waste your budget”).

6. Don’t internally link to parameterized URLs. You’re handing crawlers the trap yourself. My rule: “You should avoid passive parameters like those used for tracking on internal linksAn internal link is a hyperlink from one page on a website to another page on the same website. Internal links help search engines discover your pages and pass ranking signals (PageRank and anchor-text context) between them..” Before you strip a tracking parameter off an internal link, though, verify it actually needs to be there — check whether analytics campaign capture or a redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. depends on it — and consider firing an analytics event instead of a URL parameter for interactions that only need to be tracked, not crawled.

A note on prevention tactics you’ll see elsewhere: some people render filters via POST or swap the ? for a # fragment so no crawlable URL is minted. I don’t recommend the fragment swap — “There’s a growing trend where people are using # instead of ? as the fragment identifier, especially for passive parameters like those used for tracking. This is generally not a good idea.” Treat those as general industry options, not a recommendation from me.

The GSC URL Parameters tool is gone

The single most important currency check on this topic: Google retired the Search Console URL Parameters tool in 2022. It was announced on 28 March 2022 and removed on 26 April 2022. Per Barry Schwartz’s Search Engine Land write-up, “Google will be sunsetting this feature on April 26, 2022 and you will no longer be able to access the tool after that date.”

Google’s stated reasons (relayed as direct quotes of Google’s blog post by SEL and 9to5Google): “only about 1% of the parameter configurations currently specified in the URL Parameters tool are useful for crawling,” and “Over the years, Google became much better at guessing which parameters are useful on a site and which are —plainly put— useless.” So they “deprecat[ed] the URL Parameters tool.”

What to do instead, per Google: nothing, by default“Google’s crawlers will learn how to deal with URL parameters automatically.” For more control, Google points to “robots.txt rules… or… hreflangHreflang is an annotation (in HTML, HTTP headers, or XML sitemaps) that tells search engines which language and optional region a page targets, and which alternate versions exist. It only works when every page in the cluster references all the others. — i.e. the same tools above, not a dedicated parameter panel. I say the same thing about the dead tool: “The tool was deprecated in early 2022.” If a guide still tells you to configure parameters in Search ConsoleGoogle's free tool for monitoring crawling, indexing, and search performance., it predates 2022.

There’s no single switch that replaced it. The retirement means you fix parameter sprawl at the source (URL generation, internal links) and pick a state-specific control — canonical, noindexNoindex is a directive that tells search engines to keep a page out of their index, so it won't appear in search results. It works only on pages a crawler can actually fetch — a page blocked in robots.txt can never be noindexed., robots.txt, or 404 — per the framework above, then confirm it’s working through GSC’s Pages and Crawl Stats reportsA Google Search Console report (under Settings) that shows how Google has crawled your site over the last 90 days — total requests, download size, and average response time, broken down by response code, file type, Googlebot type, and purpose. It's only available for root-level properties (a Domain property or a URL-prefix property verified at the site's root). rather than a dedicated parameter panel.

Bing still lets you ignore parameters

Here’s a genuine Google-vs-Bing difference almost everyone omits: Bing still has a parameter tool. In Bing Webmaster ToolsMicrosoft's free portal for monitoring and improving how a site appears in Bing search — the peer to Google Search Console, plus IndexNow instant indexing, richer backlink data, and keyword volumes. Because Bing's index also feeds Microsoft Copilot, it doubles as a window into AI-search visibility., under Configure My Site › Ignore URL Parameters, you can tell Bing which parameters to ignore while crawling — the modern incarnation of Bing’s old URL Normalization feature. Bing even suggests parameters it thinks are safe to ignore; you add them with a click. The one caveat to respect: only add a parameter to ignore if you’re sure it isn’t needed for your content to display correctly.

Bing’s historical framing, from its 2012 URL Normalization post, captures why it exists: “When you have duplicate problems due to extra URLs parameters, using the URL Normalization feature in the Bing Webmaster Tools is the preferred method,” after which “the crawler will not visit the URLs with extra parameters except for an occasional test of the quality of the normalization rules.” Bing is candid that canonical alone is imperfect — “relying on canonical tag is not necessarily the perfect solution to fix all your duplicate content problems” — and treats the tag as “complimentary information to the URL Normalization rules provided.” Practical upshot: use Bing’s tool for Bing; use robots.txt / canonical for Google.

Parameters, faceted navigation & spider traps

These three overlap but aren’t the same. Faceted navigation is the ecommerce-filter case (the deep dive on active filter parameters). Spider traps are the infinite-URL pathology that unbounded parameter stacking can create. And crawl budget is the resource the whole mess drains. This article is the parameter-handling lens that ties them together — see those for the broader treatment.

Common myths

  • “Use the GSC URL Parameters tool.” Gone since 26 April 2022. Use canonical, robots.txt, noindex (and Bing’s Ignore URL Parameters for Bing). Google’s crawlers now “learn how to deal with URL parameters automatically.”
  • “Parameters always hurt SEO.” No. Parameters are normal and necessary (sessions, tracking, filters, paginationPagination splits a large set of content — product listings, blog archives, search results — across multiple sequentially numbered URLs. For SEO, each paginated page should be crawlable, indexable, and self-canonical; Google no longer uses rel=prev/next, but Bing still does.). The problem is unmanaged duplication, not parameters per se. Passive params are usually fine to crawl and canonical.
  • “Block all parameters in robots.txt.” Over-blocking orphans content and hides your canonicals and noindex from Google — and it doesn’t deindex anyway (“the pages may still get indexed”). Block only true crawl traps; canonical the rest.
  • “A canonical fixes parameter duplicates instantly.” It’s a hint and slow — “may, over time, decrease the crawl volume.” Crawlers still hit the variants meanwhile.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.