Emulent Let’s Talk
Skip links

How to handle URL parameters without creating thousands of duplicate pages

Author: Bill Ross, founder of Emulent Published Article

Key takeaways

  • Parameters either change page content (filters, pagination) or do not (tracking codes, session IDs, sort order), and each type needs different handling.
  • Google retired the Search Console URL Parameters tool in April 2022, saying only about 1% of configurations in it were useful for crawling.
  • Self-referencing canonicals that drop non-content parameters are the baseline fix.
  • Keep UTM tags off internal links, and do not redirect UTM URLs before analytics can record them.
  • Use robots.txt for parameters that should never be crawled, such as session IDs and endless sort combinations.
Quick answers
Question Short answer
What is the best way to prevent parameter-based duplication? Combine canonicals, careful linking and crawl rules.
How do you handle parameters that change content? Treat them as real pages when they show different content.
How do you audit your current parameter handling? Inventory every parameter, then see how Google responds to it.

URL parameters are the query strings after a question mark: tracking codes, session IDs, sort orders, filters, page numbers and test variants. Each unique combination is a new URL to search engines, so unmanaged parameters can create thousands of near-duplicate pages. This Emulent guide covers how to classify parameters, which controls to use and how to audit what you have.

How do URL parameters create SEO problems?

By producing many URLs for the same content.

  • UTM and campaign tags on email, social and ad links create new URL variants every time they are shared or linked.
  • Session or user IDs, still found on some older platforms, create a new URL for every visit.
  • Sort parameters such as ?sort=price-low show the same items in a different order.
  • Pagination combined with sorts and filters multiplies into huge URL sets.

Google said when it retired the URL Parameters tool that its crawlers now learn how to handle parameters automatically, and that robots.txt rules remain the option for more control. Automatic handling is not perfect, so site-side controls still count.

What is the best way to prevent parameter-based duplication?

Combine canonicals, careful linking and crawl rules.

  • Output self-referencing canonicals that strip tracking and sort parameters, so a /shoes URL carrying an email campaign tag canonicalizes to plain /shoes.
  • Never put UTM tags on internal links. Use them only on links from outside channels.
  • Avoid server-side redirects that strip UTM parameters before the page loads, because analytics tools read them from the landing URL. If you normalize URLs, do it after analytics records the visit or through canonicals.
  • Build internal sort and display options so they do not create crawlable links, for example with form controls or URL fragments.
  • Disallow session ID and sort parameters in robots.txt once you confirm none of those URLs need to stay indexed.

Most sites need canonicals as the baseline, with robots.txt for the worst crawl traps. On WordPress, Emulent sets canonical rules at the template level and configures caching so UTM-tagged visits still load from cache.

How do you handle parameters that change content?

Treat them as real pages when they show different content.

  • Pagination: each page lists different items, so give each page its own self-referencing canonical rather than pointing them all at page one.
  • Filters with search demand, such as “blue running shoes,” can become indexable pages, ideally on clean static URLs with unique titles and copy.
  • Filters without demand, such as stacked multi-attribute combinations, should canonicalize to the base category or be kept from crawling.

Classification is the foundation. Treat a content-changing parameter as a duplicate and you lose pages that could rank; treat a duplicate as unique and you create bloat.

How do you audit your current parameter handling?

Inventory every parameter, then see how Google responds to it.

  • Crawl the site, filter URLs containing “?” and group them by parameter name.
  • Test sample parameter URLs with URL Inspection in Search Console to see whether Google indexed them or chose another canonical.
  • Check server logs for Googlebot requests to parameter URLs to measure crawl spent on them.
  • Build a spreadsheet listing each parameter, whether it changes content and the handling rule, then share it with marketing and development.

Parameter rules touch marketing operations, development and analytics, which is why they belong in your enterprise SEO governance.

How can the Emulent team help?

Emulent audits parameter handling for enterprise clients, classifying each parameter, designing the rules and working with developers to implement them. A caveat: robots.txt and canonical changes can drop pages from search if misapplied, so test on a sample before rolling out sitewide. Contact the Emulent team to review your URL parameters.

Want a second set of eyes on your marketing? We’ll show you the math before asking for a contract. No long-term lock-ins.
Let’s Talk