
URL parameters are the query-string additions after a question mark, such as ?sort=price or ?utm_source=email. They can create many URLs for the same content, wasting crawl effort and splitting signals. Keep parameters off internal links, canonicalise the useful variants, block low-value filter combinations from crawling, and keep tracking tags on external links only.
The 2024 HTTP Archive Web Almanac SEO chapter found canonical tags on 65% of mobile pages and 69% of desktop pages, which shows how common duplicate-URL management has become across the web.
A parameter is just a name and value pair added to a URL. On its own it is harmless. The trouble starts when a shop with 500 products offers sorting, filtering, pagination and tracking, and the combinations multiply into tens of thousands of crawlable addresses that mostly show the same items. This guide separates the types of parameter, explains what each costs you, and gives a decision table for handling them.
The main types of URL parameter
Handling depends on what the parameter does to the page. Before choosing a fix, classify each one.
| Type | Example | Changes the content? | Usual handling |
|---|---|---|---|
| Tracking | ?utm_source=newsletter | No | Canonical to the clean URL; use on external links only |
| Session or visitor ID | ?sessionid=48213 | No | Remove from URLs entirely; use cookies |
| Sorting | ?sort=price_asc | Reorders the same items | Canonical to the default order; consider blocking crawling |
| Filtering (facets) | ?colour=red&size=m | Shows a subset | Index only combinations with real demand; control the rest |
| Pagination | ?page=3 | Shows different items | Keep crawlable and self-canonical |
| On-site search | ?s=blue+shirt | Shows results | Usually keep out of the index and out of crawl paths |
| Translation or display | ?lang=fr, ?view=grid | Sometimes | Prefer real, separate URLs for languages |
Why parameters cause duplication and crawl waste
Search engines treat each distinct URL as a separate address. If ten URLs show effectively the same page, signals such as links can be split between them, and you rely on the engine to choose the version you prefer. Google’s guidance on managing faceted navigation names the two main problems directly: overcrawling, where a crawler fetches many URLs before it works out they are not useful, and slower discovery of new content, because crawl effort is spent on URLs that add nothing.
For a small brochure site this barely matters. For a catalogue with filters it can matter a great deal. My explainer on crawl budget covers when it is worth worrying about, and my honest rule is that if your site has under a few thousand real pages and no filter system, parameters are a hygiene issue, not an emergency.
Rather have an expert do this for you?
Hand it over and get back to running your business.
Choosing the right control: a decision table
There are four main tools, and they do different jobs. Using the wrong one is the commonest mistake I see.
| Situation | Best tool | Why |
|---|---|---|
| Tracking tag creates a duplicate of a normal page | rel=canonical to the clean URL | Consolidates signals; the page must stay crawlable so the tag can be read |
| Large set of filter or sort URLs wasting crawl effort | robots.txt disallow pattern | Stops crawling, which canonical alone only reduces over time |
| Filtered page should never appear in search but must be crawlable | noindex | Removes it from the index; Google must crawl it to see the tag |
| Old parameter URL has been replaced by a clean one | 301 redirect | Strongest consolidation signal |
| Filter combination returns no products | 404 status | Google advises a 404 rather than redirecting to an error page |
Google’s page on consolidating duplicate URLs ranks redirects and rel=canonical as strong signals, and warns against using robots.txt as a canonicalisation method. That warning matters because of a conflict I cover in more depth in noindex vs canonical vs robots.txt: if you block a URL in robots.txt, Google cannot fetch it, so it cannot see the canonical or noindex tag on it. Pick one job per URL pattern. For the tag itself, see what a canonical tag is.
How Google’s own faceted navigation advice breaks down
The same guidance gives specific tactics worth knowing:
- Use the standard separator. Google recommends the ampersand to separate parameters. Commas, semicolons and brackets make it harder for crawlers to recognise where one parameter ends.
- robots.txt for filters. It gives a pattern in the style of
disallow: /*?*products=to stop crawling of filtered pages while leaving the unfiltered ones open. Test any pattern carefully, because a loose rule can block pages you want crawled. - rel=canonical is slower. Google says canonicalising faceted URLs may, over time, reduce crawling of the non-canonical versions. It is gentler and less immediate than blocking.
- rel=nofollow on filter links. It can help, but only if every link to a filtered URL carries it. One unmarked link elsewhere undoes the effect.
- URL fragments. Google generally does not support fragments (the part after #) in crawling and indexing, so a filter built on fragments neither helps nor harms crawl behaviour.
My own view is that the robots.txt route is the right one for sprawling filters on large stores, and canonical tags are the right default for everything else. The syntax is simple but unforgiving, so test every pattern before it goes live.
A worked example (illustrative)
Imagine a Karachi homeware shop with 300 products and four filters: colour, material, price band and sort order. If every combination is crawlable, the shop can expose a huge number of addresses for the same 300 products. A sensible plan would be:
- Give each product and category one clean URL, with a self-referencing canonical.
- Let a handful of high-demand combinations, such as a “cotton bedsheets” page, become proper static pages with their own titles and internal links.
- Disallow crawling of sort order and price band parameters with a tested robots.txt pattern.
- Return a 404 where a filter combination has no products.
- Keep UTM tags on emails and adverts only, with canonicals pointing to the clean address.
This is a planning example, not a client result. The point is that each parameter gets a deliberate job, instead of one blanket rule for everything.
Internal links without parameters
The cheapest fix is to stop creating the problem. Your internal links are a statement about which URLs matter, and a crawler follows them.
- Link to clean category and product URLs in menus, breadcrumbs, related products and banners.
- Never add UTM tags to links between your own pages. They create duplicates and corrupt your analytics, because the visit appears to come from a new source.
- Keep parameter links out of XML sitemaps. List only the canonical URLs.
- If a filter combination deserves to rank (for example a “red running shoes” page with real search demand), give it a proper static URL, a unique title and an internal link, instead of relying on a parameter.
If a parameter URL has no internal links and no sitemap entry it can still be found through external links and old campaigns, which is why you pair this with a canonical. A page nobody links to at all is a different problem, covered in how to find and fix orphan pages.
Handling UTM and tracking parameters
Tracking tags are the one type you should keep, since marketing teams need them. The rules are simple.
- Use UTM tags only on links from outside your site: emails, social posts, adverts, partner pages.
- Make sure every page has a self-referencing canonical to the clean URL, so a tagged copy consolidates onto the original.
- Agree a naming convention (lowercase, consistent source and medium names) so reports are not fragmented.
- For internal promotions, measure clicks as events in your analytics tool rather than appending parameters to links.
About the retired URL Parameters tool
Search Console used to have a URL Parameters tool where you could tell Google how to treat each parameter. Google announced its retirement in a March 2022 post titled Spring cleaning: the URL Parameters tool. If an older guide tells you to configure parameters there, it is out of date. The controls above, in your own code and files, are the way to manage this now.
A parameter audit in six steps
- Crawl the site and export every URL containing a question mark.
- Group them by parameter name and count how many URLs each creates.
- Classify each parameter using the first table in this guide.
- Check for duplicates in search with a
site:query and in Search Console’s indexing reports. - Apply one control per pattern, and document it.
- Re-crawl, then watch the number of parameter URLs being crawled and indexed over the following weeks.
Status codes matter during the clean-up, so keep my guide to HTTP status codes open when deciding between 301, 404 and 410. Parameter handling is one of the items inside my WordPress technical SEO checklist too, since WooCommerce and many themes generate sort and filter URLs by default.
Questions about URL parameters
Do URL parameters hurt SEO?
Not automatically. They hurt when they produce many crawlable duplicates or split links across versions. A site with a few harmless tracking tags and correct canonicals is fine.
Should I block parameters in robots.txt or use canonical tags?
Use canonical tags when you want the URL consolidated and still crawlable, and robots.txt for large sets of low-value filter URLs you do not want crawled. Do not use both on the same URL, because blocking prevents Google reading the canonical.
Are UTM parameters bad for SEO?
No, provided they appear on external links only and your pages carry a self-referencing canonical. The harm comes from using them on internal links.
What replaced the URL Parameters tool?
Nothing replaced it directly. Google retired it in 2022, and the management now sits in your site: clean internal links, canonicals, redirects, robots.txt rules and sensible status codes.
If your store or blog is generating thousands of parameter URLs and you are unsure which controls to apply, ask for a free audit and I will map what is being crawled. This kind of clean-up is a core part of technical SEO services.
More in this series (Technical SEO in depth): start with WordPress Technical SEO Checklist: What to Fix First, then explore:
- HTTP Status Codes for SEO: 200, 301, 302, 404, 410 and 5xx
- Redirect Chains and Loops: How to Find and Fix Them
- Noindex vs Canonical vs Robots.txt: Which to Use When
- Orphan Pages: How to Find and Fix Them
- How to Fix Structured Data Errors in Search Console
- HTTPS and Mixed Content: SEO and Security Fixes
Request received
Thank you! Saad will contact you within the next 24 hours.
Keep an eye on your phone and inbox.
