UTM Generator & Validation Helper

Build clean, consistent UTM links and catch the errors that break analytics.

Required, e.g. google, linkedin
Required, e.g. cpc, paid-social
Required
Paid keyword
Creative / A-B variant
Tagged URL
✓ Ready
Cleaned & encoded
Validation
1 to review
Common UTM errors

utm_campaign was normalised (casing/spaces cleaned). Consistent, lowercase, hyphenated tags keep your analytics from splitting one campaign into five.

Standardise a taxonomy once, source/medium/campaign conventions, and every report stays clean across channels.

About this calculator

A single campaign that ends up split five ways in your analytics, "linkedin," "LinkedIn," "Linkedin," "linked-in", isn't a tracking bug, it's inconsistent UTM tagging, and it's almost always a manual-entry problem. This tool builds a properly encoded, tagged URL from your source, medium and campaign values and validates it in real time, catching the casing and spacing errors that quietly fragment your reporting.

How to use it

  1. Enter your base URL, the landing page destination for the link.
  2. Enter campaign source, medium, and campaign name, the three parameters every UTM link needs.
  3. Optionally add term (paid keyword) and content (creative or A/B variant identifier) for more granular tracking.
  4. Review the validation messages and copy the generated, cleaned URL once it shows all clear.

Methodology

Every value is normalized through the same cleaning function: trimmed of whitespace, lowercased, spaces converted to hyphens, and any character outside letters, numbers, periods, underscores and hyphens stripped out, so "Q3 Demo Push" becomes "q3-demo-push" automatically.

Validation checks for a properly formed base URL (must start with http:// or https://), and flags missing values for the three required parameters, source, medium and campaign, since a UTM link without these three is not usable in most analytics platforms.

It also flags when a value you typed differs from its cleaned version, so you know the tool normalized casing or spacing on your behalf rather than silently using something different from what you typed.

The final URL is assembled by appending the non-empty parameters as a query string, using a "?" or "&" depending on whether the base URL already contains query parameters, and each value is URL-encoded before being inserted.

FAQ

Why does inconsistent casing actually break analytics?

Most analytics platforms, including Google Analytics, treat UTM parameter values as case-sensitive strings by default. "LinkedIn" and "linkedin" are recorded as two separate sources, splitting what should be one campaign's traffic and conversion data across multiple rows.

What is a good naming convention for utm_medium?

Keep a short, fixed vocabulary you reuse everywhere, cpc, paid-social, email, referral, rather than inventing a new value per campaign. Consistency in utm_medium is what lets you roll up performance by channel type across every campaign you ever run.

Do I need utm_term and utm_content for every link?

No, they're optional and most useful when you're running multiple creative variants or paid keywords under the same source/medium/campaign and need to tell them apart in reporting. Skip them for simple, single-variant links.

Should I build a shared taxonomy doc for my team?

Yes, once more than one person is tagging links. A short reference sheet of accepted source, medium and campaign-naming values prevents the exact fragmentation this tool catches, and keeps everyone's tagging consistent without relying on each person remembering the convention.