What is a URL Parameter and How Does It Work?
URL parameters are a major source of duplicate content and crawl waste. Here is how different parameter types affect SEO and how to handle each one correctly.
16 May 2026 · 7 min read
A URL parameter is a key-value pair appended to a URL that modifies how a page is served, filtered, tracked, or identified. Parameters begin after a question mark and follow the format ?key=value. Multiple parameters are joined with an ampersand: ?colour=red&sort=price. A fragment identifier (#section) is technically separate from parameters and is not sent to the server.
Parameters are everywhere on the web. They power filtering, tracking, search, pagination, and session management. For users and developers, they are a standard tool. For SEO, they are a significant source of crawl waste, duplicate content, and indexability problems if not handled correctly.
What types of URL parameters exist and why do they matter for SEO?
Not all parameters carry the same SEO risk. The type of parameter determines what problem it creates and how you should handle it.
Tracking parameters
Parameters like utm_source, utm_medium, utm_campaign, fbclid, and gclid are added by marketing tools to track the source of a visit. They do not change the content of the page: /blog/post/?utm_source=email returns exactly the same page as /blog/post/.
From Google's perspective, these are two different URLs. If both are crawled and indexed, you have duplicate content. Google is increasingly good at recognising common tracking parameters and consolidating them, but it is not reliable. The correct approach is to set a canonical tag on the parameter URL pointing to the clean version, or to configure parameter handling in Google Search Console.
Filtering and sorting parameters
Ecommerce sites generate large numbers of parameter URLs through category filtering. /shoes/?colour=black&size=8&brand=nike is a distinct URL from /shoes/ even though it returns a subset of the same products. Multiply this across a large catalogue: one category page with ten colour options, eight sizes, and twenty brands can generate 1,600 parameter URL combinations, most of which contain near-duplicate or thin content.
This is one of the most common sources of crawl budget waste on ecommerce sites. Google crawls hundreds of low-value filtered pages instead of spending that budget on pages that actually deserve indexing.
Session ID parameters
Session IDs are unique identifiers assigned to each visitor: /page/?sessionid=a3f92bc1. Every new visitor gets a new URL. A site with meaningful traffic can generate thousands of unique session ID URLs per day, all returning identical content.
This is the worst-case parameter scenario. It creates an effectively infinite URL space, burns crawl budget at scale, and produces massive amounts of exact duplicate content. Session IDs should never appear in URLs that search engines can crawl.
Pagination parameters
Paginated content is normally handled with parameters like ?page=2, ?page=3, and so on. This is generally fine as long as each paginated page is self-canonical (the canonical tag points to that page's own URL, not back to page 1) and the pagination has a defined end. Problems arise when paginated pages all canonicalise to page 1, hiding content from Google, or when pagination is infinite with no terminal point.
For more on this, see what is a canonical tag.
Search parameters
Internal site search creates parameter URLs like ?q=blue+trainers or ?s=summer+dresses. These are particularly dangerous because the URL space is essentially infinite: every possible search query generates a unique URL. Most return thin or zero-result pages. Search parameter URLs should be either blocked in robots.txt or tagged with noindex to prevent them from being indexed and to reduce crawl waste.
How does Google handle URL parameters?
Google tries to detect and consolidate parameter URLs automatically. For common tracking parameters like fbclid and common patterns it recognises, it does a reasonable job. For less common or site-specific parameters, it frequently fails to consolidate correctly and may index large numbers of parameter variants.
Session IDs are the case where Google struggles most. The URL is unique per visit, there is no consistent pattern to recognise across sites, and without explicit handling (canonical tags or robots.txt blocking), Google may index thousands of them.
Google Search Console used to include a URL Parameters tool that allowed you to specify how each parameter should be handled. This tool has been deprecated, which means the responsibility has shifted entirely to canonical tags and robots.txt configuration.
How do you correctly handle URL parameters?
The right approach depends on the type of parameter and whether the parameter URL has value worth indexing.
Canonical tags. For parameter URLs that return the same content as a clean URL, add a canonical tag pointing to the clean URL. This tells Google which version to index and consolidate link equity towards. For example, /products/?sort=price should carry a canonical pointing to /products/. This is the most flexible solution because it works page by page. For background on how canonical tags work, see what is a canonical tag.
robots.txt Disallow. For parameter patterns that should never be crawled at all, such as session IDs and internal search, blocking them in robots.txt stops Googlebot from following those URLs entirely. This conserves crawl budget but does not pass any equity or indexing signals to the canonical URL, so it works best for pages with no indexing value. See what is robots.txt for the syntax.
noindex tags. Applying a noindex meta tag to parameter URLs prevents them from being indexed while still allowing Googlebot to crawl and follow links on the page. This is appropriate for parameter pages that have some crawl value (for example, internal links to products) but no indexing value.
Clean URL architecture. The cleanest long-term solution for faceted navigation is to use URL-based facets with proper canonicalisation rather than parameter-based facets. For example, /shoes/black/size-8/ rather than /shoes/?colour=black&size=8. This makes each facet URL predictable, crawlable, and individually canonicalisable, but requires implementation at the CMS or framework level. For guidance on structuring URLs well from the start, see how to write SEO-friendly URLs.
What is the crawl budget impact of URL parameters?
Crawl budget is the number of URLs Googlebot will crawl on your site within a given period. Parameter URLs directly expand the total URL space Googlebot must navigate. On large ecommerce sites, unmanaged parameters can multiply the effective URL count by orders of magnitude.
The consequence is not just wasted crawl budget in the abstract. It means important pages get crawled less frequently. New product pages may take weeks to be indexed. Updated content may not be re-crawled promptly. The pages Google ends up indexing may be filtered parameter variants rather than the canonical category pages you actually want to rank.
Tracking parameters also affect your page indexability reporting. If parameter URLs are being indexed rather than your canonical URLs, your indexing data in Search Console is fragmented across dozens of URL variants for each page, making it difficult to understand actual coverage.
UTM parameters deserve specific attention because they are added by marketing tools and can propagate rapidly. A single email campaign can create hundreds of new UTM variant URLs within days of launch if not managed correctly.
How do you find parameter problems on your site?
A site crawler is the most direct way to discover parameter URL problems. Running a crawl and examining the full list of discovered URLs reveals parameter patterns you may not be aware of: session IDs added by a plugin, sort parameters created by a new site feature, or tracking parameters that have leaked into internal links.
Look for URL patterns that repeat with varying values, especially incrementing numbers, random strings (common with session IDs), and combinations of multiple filter parameters. Any URL containing characters that suggest a query string (?, =, &) warrants investigation.
Also check your robots.txt and canonical implementation against your actual URL patterns: blocks and canonicals configured for old parameters may not cover new ones introduced by recent site changes.
URL parameters are often introduced incrementally, by marketing teams adding UTM tracking, developers adding search functionality, or ecommerce platforms generating filters. The crawl and indexing impact accumulates quietly until it becomes a significant problem. Auditing your parameter landscape is part of any thorough technical SEO review.
Download Crawly to crawl your site and see every URL it discovers, including parameter variants. Crawly makes it easy to identify parameter bloat, spot session IDs in your URL space, and find parameter URLs that are being linked internally.