URL parameters are the strings after a question mark: filters, sort orders, session identifiers, tracking tags. Individually harmless, collectively they are the largest source of URL sprawl on most sites, because they multiply rather than add.
Four filters with five options each generate hundreds of variants of a single page. Add sorting and pagination and one category can produce thousands of crawlable URLs, almost none of which anyone searches for.
The types, which need different handling
Content-changing parameters
Filters and pagination genuinely change what is shown. They matter to users and mostly should not be indexed.
Content-preserving parameters
Sort order, view toggles and currency selectors reorder or restyle the same items. Canonical to the default view.
Tracking parameters
Campaign and referral tags change nothing at all. They must keep working for users while never being indexed.
Session and technical parameters
Session identifiers and cache-busting strings are the worst case, because they can generate a unique URL per visit. These should never be crawlable.
What to do with each
- Filters: canonical to the base category, and prevent crawling at source where volume is high. See ecommerce filters SEO.
- Sorting and views: canonical to the default. There is nothing distinct to index.
- Tracking: canonical to the clean URL. Never block these, since blocking breaks nothing but helps nothing either and the URLs still get linked.
- Pagination: keep crawlable and self-canonical, so deeper items stay reachable. See infinite scroll SEO.
- Session IDs: eliminate at source. No SEO configuration fixes a URL that changes every visit.
Canonical or block?
The distinction that decides most parameter problems.
- Canonical where users reach the URL deliberately and it should keep working. Signals consolidate onto the clean version.
- Block where the URLs were never indexed and are consuming crawl capacity.
- Never block something already indexed and expect it to disappear. The crawler can no longer see your canonical or noindex, so it stays. See crawlability vs indexability.
Stopping them being generated
Configuration is downstream of the real fix, which is not linking them in the first place. Crawlers follow links regardless of directives.
- Do not link filtered URLs in a crawlable way unless you want them crawled.
- Use POST rather than GET for filters where the interface allows it.
- Keep parameter order consistent, since
?a=1&b=2and?b=2&a=1are different URLs. - Strip unnecessary parameters server-side.
- Exclude parameter URLs from your sitemap.
Finding the scale of the problem
- Compare indexed count against your genuine page count. A large surplus is usually parameters.
- Run a
site:search and look for question marks in the results. - Segment crawl requests by pattern to see how much capacity parameters consume.
- Check Search Console for excluded URLs grouped as duplicates.
Frequently asked questions
Do URL parameters hurt SEO?
Not inherently. Uncontrolled ones do, by consuming crawl capacity and splitting signals across near-identical URLs. Controlled ones are harmless.
Should I block all parameters in robots.txt?
No. Blocking already-indexed parameter URLs leaves them stuck. Canonical first, let them drop, then block to preserve crawl capacity.
Do tracking parameters cause duplicate content?
They can if indexed. A self-referencing canonical on the clean URL usually resolves it, and most platforms handle this correctly by default.
Is Search Console’s parameter tool still available?
It was retired. Handle parameters through canonicals, robots rules and by not linking them, which are more reliable anyway.
Consulting CTA
If your indexed page count far exceeds your real content, book an SEO consultation for a parameter and crawl footprint review.