/resourcesutm-generator
Free tool · v1.0 · May 2026

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.

● live preview·● validation·● bulk mode·● csv export·● 0 trackers
utm_generator.exe · live
hygiene
presets
parameters 0/3 required

Build your tagged URL.

Hit a preset above for a quick start, or use {yyyy} {quarter} {week} tokens - they expand to today's date.

needed
The final landing page. Existing utm_* params will be replaced.
needed
Where the click came from. The publisher / platform.
needed
How the visitor arrived. The channel type.
needed
The campaign tag. Anchor with year so it stays unique.
optional parameters
empty
Differentiate variants inside the same campaign.
empty
Originally for paid search keywords. Mostly redundant now.
empty
GA4 campaign ID. Only needed for cost-data import.
output

Your tagged URL.

tagged · raw0 chars
Fill in the required fields to generate a URL.
open url ↗
parameters
utm_source*
utm_medium*
utm_campaign*
utm_content
utm_term
utm_id
validation
Pick a preset above or start filling in fields - validation kicks in as soon as you type.
historyempty
Copied URLs land here. Stays in your browser - never leaves your device.

privacy · everything runs in your browser. URLs, presets, history - nothing leaves your device. No signup, no analytics on this tool.

primer

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.

[01]

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.

[02]

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.

[03]

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.

naming convention

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.

[01]

Lowercase, always

GA4 is case-sensitive. Pick lowercase for everything and lock it in.

linkedin   ✓
LinkedIn   ✗
[02]

Use one separator

Pick - (kebab) or _ (snake). Use it everywhere. Never spaces.

2026-q2-launch     ✓
2026 Q2 launch     ✗
[03]

Always anchor campaigns with a year

'launch' duplicates every quarter. '2026-q2-launch' is unique forever.

2026-q2-launch  ✓
q2-launch       ✗
[04]

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           ✗
[05]

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.

[06]

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.

10 mistakes that break analytics

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.

[01]mistake

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.

[02]mistake

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.

[03]mistake

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.

[04]mistake

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.

[05]mistake

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.

[06]mistake

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.

[07]mistake

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).

[08]mistake

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.

[09]mistake

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.

[10]mistake

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.

glossary

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
ga4 · Session source
Where the click came from. The publisher or platform - never the channel type.
linkedin · newsletter · google · podcast
utm_medium
required
ga4 · Session medium
How the visitor arrived. The channel type - paid, email, organic, video, audio, etc.
email · cpc · paid-social · referral
utm_campaign
required
ga4 · Session campaign
Which campaign the click belongs to. Anchor with year so it stays unique.
2026-q2-launch · 2026-04-issue
utm_content
optional
ga4 · Session manual ad content
Differentiate creatives or placements inside the same campaign. Useful for A/B variants.
hero-cta · footer-link · ad-a · ad-b
utm_term
optional
ga4 · Session manual term
Originally for paid search keywords. Mostly redundant now if you use Google Ads auto-tagging.
best+crm+for+sales · saas-pricing-tool
utm_id
optional
ga4 · Session campaign ID
GA4 campaign ID. Numeric or alphanumeric, joined to GA4's campaign cost reports if you upload spend data.
12491-fb-launch · ad-2026-04
FAQ

Questions about UTMs and GA4.

What is a UTM parameter?
A UTM parameter is a tag added to the end of a URL that tells your analytics tool where a visitor came from. There are five standard UTM parameters - utm_source, utm_medium, utm_campaign, utm_content, utm_term - plus utm_id, which GA4 introduced for campaign-cost mapping. They were created by Urchin (the company Google bought to build Google Analytics), and the name still stands for Urchin Tracking Module.
Are UTM parameters case-sensitive?
Yes - and this is the most common reason analytics reports get messy. 'Facebook' and 'facebook' are two different sources to GA4. Pick lowercase across the board and never deviate. This generator auto-lowercases by default to enforce that.
Which UTM parameters are required?
Three are required for clean reporting: utm_source, utm_medium, utm_campaign. The other three (utm_content, utm_term, utm_id) are optional. If you skip utm_source or utm_medium, GA4 will fall back to '(direct)' or '(referral)' - which means you'll lose attribution to the channel you actually paid for.
Can I use UTM parameters on internal links inside my own website?
No - and this is a critical mistake. UTM parameters overwrite the original session source. If a user came from organic search and clicks an internal link tagged with UTMs, GA4 will reattribute the rest of their session to that internal banner. Only tag links that bring visitors INTO your site, never links between pages on your site.
Should I use UTM parameters on Google Ads links?
Usually no. Google Ads auto-tagging (gclid) is more powerful than manual UTMs - it brings cost, network, position, and keyword data into GA4 automatically. If auto-tagging is on, manual UTMs can actually disrupt that integration. Only tag manually if you've explicitly turned auto-tagging off and you understand the trade-off.
What's the difference between utm_source and utm_medium?
Source is WHERE: the publisher or platform (linkedin, newsletter, google). Medium is HOW: the channel type (paid-social, email, cpc). A LinkedIn ad has source=linkedin and medium=paid-social. A LinkedIn organic post has source=linkedin and medium=social-organic. Same source, different medium - because the way the visitor got there is different.
Will UTM parameters affect my SEO?
No, when used correctly. Search engines understand UTM parameters and don't penalize for them. However: never use UTMs on links you want crawled (internal navigation, sitemaps, structured data), and use canonical tags on landing pages so duplicate UTM-tagged URLs aren't indexed as separate pages.
How long can a UTM-tagged URL be?
Browsers handle URLs up to about 2,000 characters reliably (and as much as 8,000 in newer ones), but the practical limit is shorter: very long URLs get truncated in chat apps, embedded emails, and some redirect services. Aim to keep tagged URLs under 200 characters by using short, consistent values.
Should I use a URL shortener with UTMs?
Yes, often. UTM-tagged URLs are ugly and easy to break in print/podcast read-outs. A shortener (Bitly, Dub.co, your own redirect service) preserves the UTMs server-side and gives users a clean, memorable link. Make sure the shortener you use is set to 301 redirect - some don't pass query strings by default, which would strip your UTMs.
Does this UTM generator store my data?
No. Everything runs in your browser. URLs are built locally, history is saved to your browser's localStorage (you can clear it any time), nothing is sent to a server. No accounts, no tracking, no signup wall.
What is GA4's utm_id and do I need it?
utm_id is GA4's campaign ID parameter. It maps individual sessions to a specific campaign in GA4's cost-data import. If you don't import ad-spend data into GA4 manually, you don't need it. Most teams using auto-tagged Google Ads or imported Meta cost data use it; everyone else can skip it.
Can I use UTM parameters with hash routes (#) or anchor links?
Yes. Add the query string before the hash: example.com/page?utm_source=newsletter&utm_medium=email#section. The generator preserves your existing hash automatically. GA4 will see the UTMs because they're in the query string, not the fragment.
clean URLs are step one. the rest of the funnel is the work.

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.