@noelcetaSEO: URL parameters create duplicat...
@noelcetaSEO
37 views
Jan 06, 2026
1
URL parameters create duplicate content chaos.
example.com/page
example.com/page?ref=twitt…
example.com/page?ref=twitt…
Google sees 3 different URLs.
All with same content.
Wastes crawl budget.
Here's when to use parameters and when to avoid them: 🧵👇
example.com/page
example.com/page?ref=twitt…
example.com/page?ref=twitt…
Google sees 3 different URLs.
All with same content.
Wastes crawl budget.
Here's when to use parameters and when to avoid them: 🧵👇
2
1/ Parameters that DON'T change content
These should NEVER create new URLs:
❌ Tracking parameters
- utm_source, utm_medium, utm_campaign
- ref, source, campaign_id
❌ Session identifiers
- sessionid, sid, PHPSESSID
❌ Sorting (doesn't change products shown)
- sort=price, order=asc
Solution: Use hash fragments instead
`/page#sort=price` (not indexed by Google)
Or configure in GSC as "No URLs"
These should NEVER create new URLs:
❌ Tracking parameters
- utm_source, utm_medium, utm_campaign
- ref, source, campaign_id
❌ Session identifiers
- sessionid, sid, PHPSESSID
❌ Sorting (doesn't change products shown)
- sort=price, order=asc
Solution: Use hash fragments instead
`/page#sort=price` (not indexed by Google)
Or configure in GSC as "No URLs"
3
2/ Parameters that DO change content
These MAY need unique URLs:
✅ Pagination
- ?page=2
✅ Filters (if valuable)
- ?color=red
- ?brand=nike
✅ Search queries
- ?q=running+shoes
Decision: Does it have search volume?
- Yes → Let Google index
- No → Canonical to base or noindex
These MAY need unique URLs:
✅ Pagination
- ?page=2
✅ Filters (if valuable)
- ?color=red
- ?brand=nike
✅ Search queries
- ?q=running+shoes
Decision: Does it have search volume?
- Yes → Let Google index
- No → Canonical to base or noindex
4
3/ Google Search Console configuration
GSC → Settings → Crawling → URL Parameters
For each parameter, choose:
"No URLs":
Use for tracking parameters.
Google ignores them completely.
"Representative URL":
Google chooses which URL to index.
Good for filters.
"Every URL":
Google indexes all variations.
Use sparingly (pagination, search results).
Client had 15 parameters unconfigured.
Google indexed 200K useless variations.
GSC → Settings → Crawling → URL Parameters
For each parameter, choose:
"No URLs":
Use for tracking parameters.
Google ignores them completely.
"Representative URL":
Google chooses which URL to index.
Good for filters.
"Every URL":
Google indexes all variations.
Use sparingly (pagination, search results).
Client had 15 parameters unconfigured.
Google indexed 200K useless variations.
5
4/ The clean URL alternative
Instead of parameters, use clean paths:
Bad: `/products?category=shoes&color=red`
Good: `/products/shoes/red/`
Rewrite with .htaccess or nginx:
apache
`RewriteRule ^products/([^/]+)/([^/]+)/$ /products?category=$1&color=$2 [L]`
Benefits:
- Cleaner URLs
- Better for SEO
- Easier to optimize
- Can set unique titles/metas
Instead of parameters, use clean paths:
Bad: `/products?category=shoes&color=red`
Good: `/products/shoes/red/`
Rewrite with .htaccess or nginx:
apache
`RewriteRule ^products/([^/]+)/([^/]+)/$ /products?category=$1&color=$2 [L]`
Benefits:
- Cleaner URLs
- Better for SEO
- Easier to optimize
- Can set unique titles/metas
6
5/ The tracking parameter solution
Never use URL parameters for tracking.
Instead:
Google Analytics: Auto-tagging
- Enable in GA4 settings
- No URL parameters needed
Other platforms: Fragment identifiers
- `/page#ref=twitter`
- Not in URL Google sees
- Still tracked by analytics
Server-side: HTTP headers
- Store referrer in session
- No URL pollution
Client removed all tracking parameters.
Reduced indexed pages from 50K to 5K.
Never use URL parameters for tracking.
Instead:
Google Analytics: Auto-tagging
- Enable in GA4 settings
- No URL parameters needed
Other platforms: Fragment identifiers
- `/page#ref=twitter`
- Not in URL Google sees
- Still tracked by analytics
Server-side: HTTP headers
- Store referrer in session
- No URL pollution
Client removed all tracking parameters.
Reduced indexed pages from 50K to 5K.
7
6/ When parameters make sense
Valid use cases:
✅ Pagination (keeps position in list)
✅ Search results (shows query context)
✅ A/B testing (temporarily)
✅ Print versions (canonical to main)
✅ Ajax loading (if properly handled)
But always:
- Configure in GSC
- Set proper canonicals
- Monitor index size
Valid use cases:
✅ Pagination (keeps position in list)
✅ Search results (shows query context)
✅ A/B testing (temporarily)
✅ Print versions (canonical to main)
✅ Ajax loading (if properly handled)
But always:
- Configure in GSC
- Set proper canonicals
- Monitor index size
8
7/ Parameter handling checklist:
✅ Identify all URL parameters on site
✅ Classify: Changes content? Has search volume?
✅ Configure in Google Search Console
✅ Remove tracking parameters (use alternatives)
✅ Canonical filtered pages appropriately
✅ Consider clean URL rewrites
✅ Monitor indexed pages monthly
✅ Check for parameter-based duplicate content
Parameters = necessary evil.
Manage them properly or suffer.
✅ Identify all URL parameters on site
✅ Classify: Changes content? Has search volume?
✅ Configure in Google Search Console
✅ Remove tracking parameters (use alternatives)
✅ Canonical filtered pages appropriately
✅ Consider clean URL rewrites
✅ Monitor indexed pages monthly
✅ Check for parameter-based duplicate content
Parameters = necessary evil.
Manage them properly or suffer.