UTM Length Best Practices: Character Limits & Naming Guidelines
Complete guide to UTM parameter character limits, optimal lengths, and naming conventions that prevent truncation while maintaining tracking clarity.
GA4 truncates UTM parameters at 100 characters. No warning. No error. Just silent data loss.
The solution isn't memorizing the limit—it's building naming systems that never come close.
Here's the complete guide to UTM parameter lengths: hard limits, safe targets, and naming conventions that prevent truncation forever.
Table of contents
- GA4 Character Limits (Hard Rules)
- Recommended Safe Targets
- Optimal Length Ranges by Parameter
- utmsource: 5-25 characters
- utmmedium: 3-15 characters
- utmcampaign: 20-70 characters
- utmcontent: 10-50 characters
- utmterm: 10-40 characters
- Naming Convention Templates
- Template 1: Email Campaigns
- Template 2: Paid Social
- Template 3: Content Partnerships
- Template 4: Webinars
- Character Budget Allocation
- URL Encoding Considerations
- Validation Checklist
- Enforcement Methods
- Method 1: Google Sheets Character Counter
- Method 2: Conditional Formatting
- Method 3: Data Validation
- Method 4: JavaScript Validation
- Migration from Long to Short Names
- Phase 1: New Campaigns (Immediate)
- Phase 2: Document Mapping (Week 1)
- Phase 3: Accept Historical Data (Ongoing)
- FAQ
- What if I absolutely need more than 100 characters?
- Does the limit apply to the entire URL or just each parameter?
- What about Universal Analytics—did it have the same limit?
- Can I request Google increase the limit?
- How do I handle multi-language campaigns with long names?
- What if my platform auto-generates long campaign names?
🚨 Not sure what's breaking your tracking?
Run a free 60-second audit to check all 40+ ways UTM tracking can fail.
Scan Your Campaigns Free✓ No credit card ✓ See results instantly
GA4 Character Limits (Hard Rules)
Maximum length per parameter: 100 characters
| Parameter | Limit | What Happens at 101+ |
|---|---|---|
| utm_source | 100 chars | Truncated |
| utm_medium | 100 chars | Truncated |
| utm_campaign | 100 chars | Truncated |
| utm_content | 100 chars | Truncated |
| utm_term | 100 chars | Truncated |
Total URL length: No GA4-specific limit, but browsers limit URLs to ~2,000 characters
Recommended Safe Targets
Don't aim for 100. Aim for 85.
| Parameter | Hard Limit | Safe Target | Buffer |
|---|---|---|---|
| utm_source | 100 | 85 | 15 chars |
| utm_medium | 100 | 85 | 15 chars |
| utm_campaign | 100 | 85 | 15 chars |
| utm_content | 100 | 85 | 15 chars |
| utm_term | 100 | 85 | 15 chars |
Why 85 chars?
- URL encoding buffer: Spaces become %20 (expands by 3x)
- Platform additions: Some tools add prefixes/suffixes
- Safety margin: Prevents accidental truncation
😰 Is this your only tracking issue?
This is just 1 of 40+ ways UTM tracking breaks. Most marketing teams have 8-12 critical issues they don't know about.
• 94% of sites have UTM errors
• Average: $8,400/month in wasted ad spend
• Fix time: 15 minutes with our report
✓ Connects directly to GA4 (read-only, secure)
✓ Scans 90 days of data in 2 minutes
✓ Prioritizes issues by revenue impact
✓ Shows exact sessions affected
Optimal Length Ranges by Parameter
utm_source: 5-25 characters
Too short:
utm_source=fb (cryptic, needs documentation)
Optimal:
utm_source=facebook (9 chars)
utm_source=linkedin (8 chars)
utm_source=newsletter (10 chars)
utm_source=partner_techcrunch (18 chars)
Too long:
utm_source=facebook_business_page_company_account (40 chars - unnecessary detail)
Guideline: Platform or publication name only. No campaign details.
utm_medium: 3-15 characters
Optimal:
utm_medium=cpc (3 chars)
utm_medium=email (5 chars)
utm_medium=social (6 chars)
utm_medium=display (7 chars)
utm_medium=affiliate (9 chars)
utm_medium=paidsocial (10 chars)
Avoid:
utm_medium=cost_per_click_advertising (28 chars - unnecessarily long)
Guideline: Use GA4-standard values. Already optimized for length.
utm_campaign: 20-70 characters
Too short:
utm_campaign=jan (lacks context)
Optimal:
utm_campaign=winter_sale_2024_jan (20 chars)
utm_campaign=product_launch_beta_signup (26 chars)
utm_campaign=webinar_pm_best_practices_2024_03 (37 chars)
utm_campaign=newsletter_weekly_digest_2024_jan_15 (40 chars)
Too long:
utm_campaign=promotional_email_campaign_newsletter_winter_clearance_sale_january_2024_segment_existing_customers (104 chars - TRUNCATED!)
Guideline:
- Include: channel type, campaign name, date
- Exclude: redundant details, full sentences
utm_content: 10-50 characters
Used for: Creative variations, ad placements, A/B tests
Optimal:
utm_content=header_cta (10 chars)
utm_content=video_30sec (11 chars)
utm_content=carousel_ad_5_products (22 chars)
utm_content=headline_variant_a (18 chars)
utm_content=audience_segment_enterprise (27 chars)
Avoid:
utm_content=creative_variation_test_number_one_featuring_product_image_and_cta_button (76 chars)
utm_term: 10-40 characters
Used for: Paid search keywords, audience targeting
Optimal:
utm_term=project_management_software (27 chars)
utm_term=best_crm_tools (14 chars)
utm_term=email_marketing_platform (24 chars)
Avoid:
utm_term=best_project_management_software_for_remote_teams_with_collaboration_features (79 chars)
Naming Convention Templates
Template 1: Email Campaigns
Format:
utm_source=newsletter
utm_medium=email
utm_campaign=`{"{"}{"{"}type{"}"}{"}"}}`_{"{"}{"{"}YYYY_MM{"}"}{"}"}}_`{"{"}{"{"}descriptor{"}"}{"}"}}`
utm_content=`{"{"}{"{"}section{"}"}{"}"}}`_`{"{"}{"{"}variant{"}"}{"}"}}`
Example:
utm_campaign=promo_2024_01_winter_sale (29 chars ✅)
utm_content=header_cta_blue (16 chars ✅)
Template 2: Paid Social
Format:
utm_source=`{"{"}{"{"}platform{"}"}{"}"}}`
utm_medium=cpc
utm_campaign=`{"{"}{"{"}prod{"}"}{"}"}}`_{"{"}{"{"}YYYY_MM{"}"}{"}"}}_`{"{"}{"{"}offer{"}"}{"}"}}`
utm_content=`{"{"}{"{"}creative{"}"}{"}"}}`_`{"{"}{"{"}audience{"}"}{"}"}}`
Example:
utm_source=facebook (8 chars ✅)
utm_campaign=prod_launch_2024_01_early_access (36 chars ✅)
utm_content=video_carousel_lookalike (24 chars ✅)
Template 3: Content Partnerships
Format:
utm_source=partner_`{"{"}{"{"}name{"}"}{"}"}}`
utm_medium=referral
utm_campaign=`{"{"}{"{"}content_type{"}"}{"}"}}`_`{"{"}{"{"}topic{"}"}{"}"}}`_{"{"}{"{"}YYYY_MM{"}"}{"}"}}
Example:
utm_source=partner_techcrunch (18 chars ✅)
utm_campaign=sponsored_article_pm_2024_01 (32 chars ✅)
Template 4: Webinars
Format:
utm_source=`{"{"}{"{"}platform{"}"}{"}"}}`
utm_medium=email or social or cpc
utm_campaign=webinar_`{"{"}{"{"}topic{"}"}{"}"}}`_{"{"}{"{"}YYYY_MM_DD{"}"}{"}"}}
utm_content=`{"{"}{"{"}registration_source{"}"}{"}"}}`
Example:
utm_campaign=webinar_pm_best_practices_2024_03_15 (40 chars ✅)
utm_content=linkedin_organic_post (21 chars ✅)
Character Budget Allocation
For utm_campaign (total: 85 chars):
Component | Chars | Example
-------------------|-------|------------------
Channel type | 8 | email_
Campaign type | 6 | promo_
Year-month | 8 | 2024_01_
Core descriptor | 40 | winter_clearance_segment_vip_70pct
Separators (_) | 6 | (included above)
-------------------|-------|------------------
Total | 68 | Well under 85 ✅
URL Encoding Considerations
Characters that expand when URL-encoded:
| Character | Encoded | Expansion |
|---|---|---|
| Space | %20 | 3x |
| ! | %21 | 3x |
| # | %23 | 3x |
| $ | %24 | 3x |
| % | %25 | 3x |
| & | %26 | 3x |
Example of encoding expansion:
Before encoding: winter sale 2024! (18 chars)
After encoding: winter%20sale%202024%21 (27 chars)
Expansion: +9 characters
Best practice: Avoid spaces and special characters
✅ winter_sale_2024 (17 chars encoded)
❌ winter sale 2024! (27 chars encoded)
Validation Checklist
Before launching any campaign:
- utm_source < 85 characters
- utm_medium < 85 characters (and matches GA4 standards)
- utm_campaign < 85 characters
- utm_content < 85 characters (if used)
- utm_term < 85 characters (if used)
- No spaces (use underscores)
- All lowercase
- Tested in GA4 Realtime (full value appears)
Enforcement Methods
Method 1: Google Sheets Character Counter
Add indicator column:
=IF(LEN(C2)>85,
"⚠️ TOO LONG: "&LEN(C2)&" chars",
"✅ OK: "&LEN(C2)&" chars"
)
Method 2: Conditional Formatting
Highlight cells over 85 characters:
Format → Conditional formatting
Format cells if: Custom formula is
Formula: =LEN(C2)>85
Formatting: Red background
Method 3: Data Validation
Prevent submission if too long:
Data → Data validation
Criteria: Custom formula
Formula: =AND(LEN(C2)>0, LEN(C2)<=85)
Reject input: TRUE
Method 4: JavaScript Validation
function validateUTMLength(params) {
const MAX_LENGTH = 85;
const errors = [];
Object.keys(params).forEach(key => {
if (params[key].length > MAX_LENGTH) {
errors.push(
`${"{"}{"{"}key{"}"}{"}"}} too long: ${params[key].length} chars (max: ${"{"}{"{"}MAX_LENGTH{"}"}{"}"}})`
);
}
});
return errors.length === 0;
}Migration from Long to Short Names
If you currently use long campaign names:
Phase 1: New Campaigns (Immediate)
Start using shortened format:
Old format (100+ chars):
promotional_email_newsletter_campaign_winter_clearance_sale_january_2024_segment_existing_high_value_customers
New format (68 chars):
nl_promo_2024_01_winter_clear_seg_hv_cust
Phase 2: Document Mapping (Week 1)
Create lookup table:
Short Name | Full Description
------------------------------------|------------------------------------------
nl_promo_2024_01_winter_clear_hv | Newsletter Promotional, Jan 2024, Winter Clearance, High Value Customers
Phase 3: Accept Historical Data (Ongoing)
Old campaigns: Keep long names in historical data New campaigns: Use shortened format Reports: Filter by date to separate old vs new naming
✅ Fixed this issue? Great! Now check the other 39...
You just fixed one tracking issue. But are your Google Ads doubling sessions? Is Facebook attribution broken? Are internal links overwriting campaigns?
• Connects to GA4 (read-only, OAuth secured)
• Scans 90 days of traffic in 2 minutes
• Prioritizes by revenue impact
• Free forever for monthly audits
Join 2,847 marketers fixing their tracking daily
FAQ
What if I absolutely need more than 100 characters?
Use utm_content for overflow:
utm_campaign=product_launch_2024_q1 (27 chars)
utm_content=segment_enterprise_offer_extended_trial_90_days (51 chars)
Total detail: 78 characters across 2 parameters
Both parameters have 100-char limits, giving you 200 total characters.
Does the limit apply to the entire URL or just each parameter?
Each parameter individually. The overall URL can be much longer (browsers support ~2,000 chars), but each UTM parameter maxes out at 100 characters.
What about Universal Analytics—did it have the same limit?
No. Universal Analytics allowed 500 characters per campaign parameter. GA4's 100-character limit is much stricter, which surprises teams migrating from UA.
Can I request Google increase the limit?
No. The 100-character limit is hard-coded in GA4's data collection. It cannot be increased via settings or support requests.
How do I handle multi-language campaigns with long names?
Use language codes:
utm_campaign=winter_sale_2024_en (24 chars)
utm_campaign=winter_sale_2024_es (24 chars)
utm_campaign=winter_sale_2024_fr (24 chars)
Or utm_content:
utm_campaign=winter_sale_2024 (20 chars)
utm_content=lang_es (7 chars)
What if my platform auto-generates long campaign names?
Override auto-generation:
- Use custom campaign name field (if available)
- Build URLs externally, paste complete URLs
- Contact platform support requesting character limit enforcement
- Use tracking templates instead of platform's default UTM builder