Tools · free, no signup wall
UTM link builder — one spelling per source, forever.
GA4 does not fold case, so Facebook, facebook and FaceBook arrive as three separate sources and one campaign becomes three rows nobody trusts. This builder lowercases and de-spaces every value on the way in, but leaves dynamic tokens like {keyword} and {{ad.name}} untouched so the ad platform can still substitute them. Presets for Google Ads, Meta, TikTok and email. Nothing leaves your browser.
Required parameters
Optional parameters
Links you build appear here.
What is a UTM link?
A URL with campaign parameters bolted onto the query string. The name is a fossil — Urchin Tracking Module, after the analytics company Google bought in 2005 — and the mechanism has not changed since: the browser carries the parameters to your site, the analytics script reads them, and the visit gets filed under a source, a channel and a campaign instead of under “direct”.
That last word is the whole reason to bother. “Direct” is not a channel, it is the bucket analytics uses when it has nothing to go on, and untagged campaign traffic lands there together with people who typed your domain. Once spend and result sit in different buckets, no report puts them back together.
The six parameters
| Parameter | What it means | Examples | |
|---|---|---|---|
utm_source | required | The referrer — the platform or publication the traffic comes from. | google, facebook, newsletter |
utm_medium | required | The marketing channel type. | cpc, paid_social, email, banner, affiliate |
utm_campaign | required | The specific promotion or initiative. | spring_sale, launch_2026, black_friday |
utm_id | optional | Optional campaign ID — GA4 ties clicks to a campaign object. | gm_1183, q3_brand |
utm_term | optional | The paid keyword, or a dynamic token on ad platforms. | buy_shoes, {keyword} |
utm_content | optional | Distinguishes creatives or links that share the other parameters. | cta_top, banner_a, {{ad.name}} |
Five rules, and what breaks when you skip them
- One case, everywhere. GA4 does not fold case, so
Facebookandfacebookarrive as two sources and your channel report shows the campaign twice at half the size. There is no merge tool afterwards. The lowercase toggle above is on by default for this reason. - No spaces. A space becomes
%20in the URL and a different value in the report, soblack fridayandblack_fridaynever add up. Underscores survive every platform that touches the link. - A fixed vocabulary for medium. Pick your set —
cpc,paid_social,email— write it down, and reuse it. GA4 maps medium to its default channel grouping, so an invented value does not get a new row, it falls into “unassigned”, which is where campaigns go to be forgotten. - Never tag internal links. A UTM on a link between two of your own pages starts a new session and re-attributes the visitor to that campaign, so a banner on your homepage will happily steal credit from the ad that brought the person in.
- Let the ad platform tag where it can. Google Ads has an account-level final URL suffix and auto-tagging with gclid; both survive URL edits that hand-built links do not. Use manual UTMs for the channels that have no equivalent — email, partners, offline QR codes.
UTM builder — FAQ
What is a UTM link?
A UTM link is a normal URL with extra query parameters — utm_source, utm_medium, utm_campaign and optionally utm_id, utm_term, utm_content — appended after a “?”. Analytics tools such as GA4 read those parameters to attribute the visit to a specific source, channel and campaign, so you can see which marketing effort drove the click.
What is the difference between utm_source, utm_medium and utm_campaign?
utm_source names where the traffic came from (google, facebook, newsletter). utm_medium names the channel type (cpc, paid_social, email). utm_campaign names the specific promotion (spring_sale). Source answers “which site”, medium answers “which kind of link”, campaign answers “which effort”. These three are the required trio; term and content are optional detail.
Should UTM values be lowercase?
Yes. GA4 and most analytics tools are case-sensitive on UTM values, so Facebook and facebook become two separate rows that split your reporting. Pick one convention — lowercase, words joined by underscores — and apply it everywhere. This builder can force lowercase automatically so a stray capital never fragments a campaign.
Can I use spaces in UTM parameters?
Avoid them. A raw space breaks or gets encoded to %20, which is ugly and error-prone across tools. Replace spaces with an underscore or hyphen and stay consistent. This builder replaces spaces with underscores by default, so “spring sale” becomes spring_sale.
Do UTM parameters affect SEO?
Not directly, but be careful. UTM links create query-string variants of a URL that search engines may crawl as duplicates. Use UTMs only on outbound campaign links you control — ads, emails, social posts — never on internal links between your own pages, and make sure the canonical tag points at the clean URL. On paid channels, prefer platform-native tagging (Google’s final URL suffix) so the destination stays clean.
How do dynamic tokens like {keyword} or {{ad.name}} work?
Ad platforms substitute tokens at click time. Google Ads ValueTrack uses {keyword}, {campaignid}, {creative}; Meta uses {{campaign.name}}, {{adset.name}}, {{ad.name}}; TikTok uses __CAMPAIGN_NAME__ and similar. This builder’s Google, Meta and TikTok presets pre-fill the right tokens and never lowercases or mangles them, so the platform fills in real values automatically.
What is utm_id for?
utm_id is an optional campaign identifier that GA4 uses to join click-time UTM data with imported cost data, so paid campaigns reconcile against spend. If you are not importing cost data you can leave it blank; the three required parameters are enough for basic attribution.
Where should I put UTMs on Google Ads?
Prefer the account-level final URL suffix over hand-built UTM links. Setting utm_source=google&utm_medium=cpc&utm_campaign={campaignid} (or the ValueTrack tokens you need) at the account level tags every ad automatically and keeps your final URLs clean. Use this builder to compose and validate that suffix, then paste it into Google Ads settings.
Are the links I build saved or sent anywhere?
No. The whole builder runs in your browser — nothing is sent to a server. The recent-links list is stored only in this browser’s local storage and you can clear it any time. Copy or export whatever you need; close the tab and nothing leaves your machine.