UTM Link Builder
Build campaign URLs with utm_source, utm_medium, utm_campaign and the other Google Analytics parameters. Validation, presets, and one-click copy.
Runs in your browser — nothing uploaded
Landing URL
UTM parameters
Where the visit came from — domain, partner, or platform name.
Marketing channel category. Use consistent values across campaigns.
The specific campaign or promo — short, lowercase, no spaces.
Paid keyword or audience segment. Optional for non-paid traffic.
Distinguish two ads, links, or A/B variants in the same campaign.
Optional unique campaign identifier matching your CRM or ad-platform ID.
Built URL
Type a valid landing URL and fill the required fields (source, medium, campaign).
Missing required fields: utm_source, utm_medium, utm_campaign.
Build clean, consistent UTM-tagged URLs for any campaign. Type the landing page, fill in source, medium, and campaign, and copy the ready-to-share link. Validates the URL and lowercases values by default so your Google Analytics reports don't fragment.
Private by design — your data never leaves your device
How to use it
No account, no upload — it all happens on your device.
1
Type or paste your landing URL (must start with http:// or https://).
2
Fill at least the three required fields: source, medium, and campaign.
3
Optionally add term, content, and id for finer-grained tracking.
4
Copy the assembled URL — paste it wherever the link will live.
The five (and a half) UTM parameters
Three required, two optional, plus utm_id for GA4.
| Parameter | Required | Holds |
|---|---|---|
| utm_source | Yes | Where the visit came from — google, newsletter, partner-domain.com. |
| utm_medium | Yes | Channel category — email, cpc, social, referral. |
| utm_campaign | Yes | The campaign name — spring_launch, black_friday. |
| utm_term | No | Paid keyword or audience segment. |
| utm_content | No | A/B variant or link position — hero_button, footer_link. |
| utm_id | No (GA4-only) | A unique ID matching your CRM or ad-platform ID. |
A naming convention that survives 18 months
Pick once, stick with it forever.
- All lowercase. Case-sensitivity in analytics is the #1 cause of split reports. This tool enforces it by default.
- Underscores, never spaces. Spaces become
%20in URLs and read as ugly tokens in reports. - Use the same value across channels. "newsletter" everywhere — not "email-newsletter" in some links and "nl" in others.
- Don't put the landing page in the campaign name. The URL already shows it. Use
utm_contentto differentiate links that point at the same page from different ads. - Keep a shared spreadsheet of canonical source/medium values. New marketers, ad platforms, and agencies will invent new values otherwise.
Common pitfalls
- Tagging internal links.If a user clicks a link inside your own site, the new UTM parameters overwrite their original source — making it look like they came from "the homepage" instead of "Google Search". Don't tag internal navigation.
- UTMs in email signatures. Every reply your reps send will carry the same tag. Use
utm_campaign=signatureand accept that the data is noisy. - Shared social posts. Anyone re-sharing your tagged URL preserves the tag, so you may double-count a single original click. Consider stripping UTMs on the landing page after capture.
- SEO and UTMs.UTMs don't hurt SEO — Google ignores them for ranking and treats the canonical-tagged URL as the same page. Just make sure your
rel="canonical"is set so the un-tagged URL is the canonical version.
Frequently asked
What's the difference between utm_source and utm_medium?
utm_source is the specific origin — 'google', 'newsletter', 'twitter'. utm_medium is the category of channel — 'cpc' (paid search), 'email', 'social'. The pair answers 'which channel and which sender'. Google Analytics rolls up by medium for high-level reports, so consistent values here matter more than for source.
Why does the tool lowercase my values?
Google Analytics treats UTM values as case-sensitive — 'Newsletter' and 'newsletter' show up as two different sources, splitting reports. Auto-lowercasing keeps everything in one bucket. Untick the box if you have a strict naming scheme that needs mixed case.
Are URLs sent anywhere?
No. The URL is assembled in your browser using the native URL constructor. Nothing about your destinations, campaign names, or tagging strategy leaves the device.