UTM builder
Build clean, consistent campaign URLs that GA4 will actually group properly — with a bulk mode that generates a link for every network at once.
Campaign details
Your tracking URL
Why links get double-counted
GA4 treats Instagram and instagram as two different sources, and spring launch becomes spring%20launch. Keeping everything lowercase with underscores is the whole fix — that is what the checkbox does.
What are UTM parameters and which do I need?
UTM parameters are tags on the end of a URL that tell analytics where a visitor came from. Three are required: utm_source, utm_medium and utm_campaign.
The two optional ones — utm_content and utm_term — are for distinguishing creatives and paid keywords. Use them only when you will actually read them.
A tagged campaign URL
https://example.com/page ?utm_source=instagram &utm_medium=social &utm_campaign=spring_launch
Why your channel report has the same source three times
GA4 compares UTM values as raw strings. Instagram, instagram and IG are three different sources as far as it is concerned, and it will happily report them as three separate rows for months.
The damage is not cosmetic. Each row carries a fraction of the real numbers, so every channel looks weaker than it is, and any comparison between channels is wrong. Spaces do the same thing in a different way — spring launch becomes spring%20launch and sits next to the clean version in your reports.
Both problems have the same one-line fix: force lowercase, replace spaces with underscores, and never deviate. The checkbox in the builder above does exactly that.
Agree the medium list once, then never argue about it
Source can be as granular as you like — it is a label. Medium is different: it is the axis your reports aggregate on, so it needs to be a short, fixed list everyone uses.
A workable set for most teams is social for organic, paid_social for anything boosted, cpc for search ads, email, referral and affiliate. Six values, written down, applied by everyone.
Campaign is where discipline pays off most, because it is the field people improvise. Pick a pattern — 2026_q3_launch — and use it identically across every network in the campaign. The bulk mode above exists to make that automatic rather than a matter of everyone remembering.
Never tag your own internal links
Adding UTM parameters to a link between two pages of your own site starts a new session and overwrites the original attribution. The visitor who arrived from Instagram becomes a visitor from whatever you tagged the internal link with, and the campaign that actually earned the traffic gets no credit.
UTM parameters belong on links pointing into your site from somewhere else — a social post, an email, an ad, a partner page. For tracking behaviour inside your site, use events instead.
One more: make sure your pages carry a self-referencing canonical tag. It stops tagged URLs being indexed as separate pages, which is the only way UTM parameters can genuinely cause an SEO problem. Once tagging is clean, the ROI calculator finally has trustworthy revenue attribution to work from.
Common questions
What are UTM parameters?
UTM parameters are tags added to the end of a URL that tell your analytics where a visitor came from. There are five: utm_source (the platform), utm_medium (the channel type), utm_campaign (the campaign name), and the optional utm_content and utm_term. Google Analytics reads them automatically — no setup required beyond using them consistently.
Which UTM parameters are required?
Source, medium and campaign. Without all three, GA4 cannot group the traffic properly and it usually ends up lumped in with direct or referral traffic. Content and term are optional and only worth using when you genuinely need to tell two creatives or placements apart.
Are UTM parameters case sensitive?
Yes, and this is the single most common way UTM tracking breaks. GA4 treats Instagram, instagram and INSTAGRAM as three separate sources, splitting one channel across three rows in every report. Forcing everything to lowercase — which this builder does by default — eliminates the problem entirely.
What is the difference between source and medium?
Source is where the traffic came from — instagram, facebook, newsletter. Medium is the type of channel — social, paid_social, email, cpc. Keep medium to a short fixed list your whole team uses; that is what makes reports aggregate cleanly. Source can be as granular as you like.
Do UTM parameters hurt SEO?
Not when used properly on links pointing to your site from elsewhere. They can cause duplicate-content confusion if tagged URLs get indexed, which is why every page should have a self-referencing canonical tag. Never put UTM parameters on internal links between pages of your own site — that resets the original attribution and destroys the data you were trying to collect.
Should I shorten UTM links?
For visible links yes, since the tagged URL is long and ugly. Use a shortener that passes the parameters through rather than stripping them, and check one before running a campaign on it. For anything hidden behind a button or a link-in-bio page, the length does not matter.
More free tools
Every one of them is free, works without an account and runs in your browser.
Character Counter
Count against every network’s real limit as you type — Instagram, X, TikTok, LinkedIn and more.
Open toolHashtag Generator
Build a balanced hashtag set — broad, niche and long-tail — sized to each platform’s limits.
Open toolEngagement Rate Calculator
Calculate engagement rate for any network with the denominator that platform actually uses — plus how you compare.
Open tool