The UTM generator built for teams that take attribution seriously.
Live preview, hygiene enforcement, 12 channel presets, bulk mode, and a naming-convention guide that stops your reports from melting into mush six months from now. No signup. Runs in your browser.
Build your tagged URL.
Hit a preset above for a quick start, or use {yyyy} {quarter} {week} tokens - they expand to today's date.
optional parameters
Your tagged URL.
privacy · everything runs in your browser. URLs, presets, history - nothing leaves your device. No signup, no analytics on this tool.
What is a UTM parameter, actually?
Five small tags glued to the end of a URL that tell your analytics tool where a click came from. Used right, they turn fuzzy “direct” traffic into a clean channel-level report.
Origin
Urchin Tracking Module
UTM stands for Urchin Tracking Module - the company Google bought in 2005 to build Google Analytics. The naming has stuck for two decades.
Where they live
?utm_source=...
UTMs sit in the URL's query string - after the ? and before the # if there is one. Analytics tools parse them and write them to the session record.
What they replace
(direct)
Without UTMs, anything that's not a standard referrer (clicks from email apps, podcast read-outs, QR codes, push notifications) shows up as direct traffic. UTMs fix that blind spot.
Six rules that keep your campaign reports readable forever.
A naming convention is the one piece of analytics infrastructure you can't fix retroactively. Get it right at the start, write it down once, link to it everywhere.
Lowercase, always
GA4 is case-sensitive. Pick lowercase for everything and lock it in.
linkedin ✓ LinkedIn ✗
Use one separator
Pick - (kebab) or _ (snake). Use it everywhere. Never spaces.
2026-q2-launch ✓ 2026 Q2 launch ✗
Always anchor campaigns with a year
'launch' duplicates every quarter. '2026-q2-launch' is unique forever.
2026-q2-launch ✓ q2-launch ✗
Source = where, medium = how
Source is the publisher (linkedin, google, newsletter). Medium is the channel type (paid-social, cpc, email).
source=linkedin · medium=paid-social ✓ source=ad · medium=linkedin ✗
Reserve utm_content for variants
Same campaign, two creatives? Differentiate with utm_content (e.g. ad-a, ad-b). Don't put core data here.
Document it once, link it everywhere
A 1-page Notion doc with the canonical source / medium values, a campaign naming pattern, and three good examples beats every dashboard fix you'll do later.
The reason most UTM data is unreadable.
Every team makes the same mistakes - because UTMs look trivially simple and only show their bite three months later when the reports are full of duplicates and silent gaps. Here's the short list.
Mixing case (Facebook vs facebook)
GA4 treats 'Facebook' and 'facebook' as different sources. Pick lowercase, lock it in, never deviate. The tool below auto-lowercases by default - keep it on.
Spaces in values
A space in utm_campaign becomes %20 - reports get noisy and join keys break. Use - or _ as a separator and stick to one across the team.
Branded UTMs on internal links
If you tag your own website navigation with UTMs, you'll overwrite the original session source the moment a visitor clicks. People who came from organic search suddenly look like they came from your homepage banner. Never tag internal links.
Generic, throwaway campaign names
Names like 'q2-launch' or 'newsletter' duplicate every quarter. By month three you're aggregating two unrelated campaigns into one row. Always anchor with a year.
Using utm_content as the primary signal
GA4's 'Manual ad content' isn't a primary acquisition dimension. If you stuff key data into utm_content, you'll have to dig through secondary dimensions every report. Reserve utm_content for differentiating creatives within the same source/medium/campaign.
Tagging Google Ads links manually
If Google Ads auto-tagging (gclid) is on, manual UTMs will fight with it - and you'll lose data on cost, position, network. Pick one: either use GA4's gclid integration, or turn auto-tagging off and tag manually. Don't do both.
No naming convention written down
Without a one-page convention doc, every team member invents their own taxonomy. After six months your reports are unreadable. Write the conventions down (the section below is a starting point you can copy).
Tagging the destination, not the trackable hop
Email link → tracking redirect → final URL: only the first hop needs UTMs. If both have them, the second pair clobbers the first. Tag the link the user clicks, not the page they end up on.
UTMs on links shared in DMs / Slack
When someone shares a UTM-tagged URL in a DM, every click after gets attributed to your campaign - including coworkers. The tag survives the share. For internal sharing, strip UTMs first or use a clean URL.
Forgetting to tag offline channels
Print, podcast read-outs, conference signage - these are the only places UTMs really earn their keep, because there's no referrer to fall back on. If you're not tagging offline, you're not measuring it.
Every parameter, what GA4 calls it, what it's for.
The standard 5 + GA4's utm_id. If you ever wondered which GA4 dimension a UTM maps to, this is the lookup.
- utm_source required
- Where the click came from. The publisher or platform - never the channel type.
- utm_medium required
- How the visitor arrived. The channel type - paid, email, organic, video, audio, etc.
- utm_campaign required
- Which campaign the click belongs to. Anchor with year so it stays unique.
- utm_content optional
- Differentiate creatives or placements inside the same campaign. Useful for A/B variants.
- utm_term optional
- Originally for paid search keywords. Mostly redundant now if you use Google Ads auto-tagging.
- utm_id optional
- GA4 campaign ID. Numeric or alphanumeric, joined to GA4's campaign cost reports if you upload spend data.
linkedin · newsletter · google · podcast
email · cpc · paid-social · referral
2026-q2-launch · 2026-04-issue
hero-cta · footer-link · ad-a · ad-b
best+crm+for+sales · saas-pricing-tool
12491-fb-launch · ad-2026-04
Questions about UTMs and GA4.
What is a UTM parameter?
Are UTM parameters case-sensitive?
Which UTM parameters are required?
Can I use UTM parameters on internal links inside my own website?
Should I use UTM parameters on Google Ads links?
What's the difference between utm_source and utm_medium?
Will UTM parameters affect my SEO?
How long can a UTM-tagged URL be?
Should I use a URL shortener with UTMs?
Does this UTM generator store my data?
What is GA4's utm_id and do I need it?
Can I use UTM parameters with hash routes (#) or anchor links?
Tagging is solved. Let's go fix the conversions on the other end.
The Web Growth Audit is a two-week, no-meetings deep-dive into where your site leaks money. Delivered as a Notion playbook your team can ship from immediately - same builder energy that produced this tool.
A free UTM parameter generator for marketing teams. Builds GA4-ready campaign URLs with live preview, automatic case and space hygiene, validation against the most common attribution mistakes, 12 channel presets (email, LinkedIn, Google Ads, Meta, podcast, QR, YouTube, X, TikTok, affiliate, guest post), bulk-mode CSV export, and a saved history. No signup, no tracking, no data leaves your browser. Built by VeeberMedia - home of the Web Growth Audit.