Analytics
Free UTM builder and campaign tagger
By Charles Summers · Updated · Free, no signup
Short answer
This builds a correctly tagged campaign URL and enforces the naming conventions that keep attribution reporting readable. It lowercases everything, replaces spaces with hyphens, strips existing query strings that would collide, and warns you about the specific mistakes (inconsistent casing, medium and source swapped, spaces in campaign names) that silently fragment your reports months later. It runs in your browser and nothing is logged.
Use the utm campaign tagger
What does this tool actually do?
This builds a correctly tagged campaign URL and enforces the naming conventions that keep attribution reporting readable. It lowercases everything, replaces spaces with hyphens, strips existing query strings that would collide, and warns you about the specific mistakes (inconsistent casing, medium and source swapped, spaces in campaign names) that silently fragment your reports months later.
It runs entirely in your browser. Nothing you type is sent to a server, no account is required, and there is no usage limit, because there is no cost per run to control.
What a UTM actually is, and what it is not
A UTM parameter is nothing more than a label you staple onto the end of a URL. When someone clicks the link, the label rides along into your analytics tool, which reads it and files the visit under whatever you wrote. That is the entire mechanism. There is no registry, no validation, and no central authority checking your work.
That last point is the one that costs people money. Because nothing validates your labels, your analytics tool will faithfully record every typo as a brand new source. Tag one campaign LinkedIn and the next linkedin and you now have two rows that will never add up, in a report you will not read carefully until the quarter you need it most.
The five parameters do different jobs and are constantly confused. utm_source is where: a specific named platform. utm_medium is how: the category of traffic. utm_campaign is why: the initiative you are running. utm_content distinguishes two versions of the same thing, which is what makes A/B tests readable. utm_term is a holdover from paid search keywords and is safe to ignore unless you are running search ads.
The naming convention that survives contact with a real team
Conventions fail for a boring reason: they live in a document nobody opens. The fix is not a stricter document, it is a shorter one. A convention that fits in a single line is followed; one that requires a lookup table is not.
The rules below are deliberately minimal. Every one of them exists because breaking it produces a specific, recognisable mess in reporting.
- Everything lowercase, always. Analytics platforms treat
Emailandemailas different values. This single rule prevents more split reporting than the other four combined. - Hyphens, never spaces or underscores. A space becomes
%20in the URL and shows up as literal%20in some reports. Underscores are legal but mix badly with hyphens once two people are tagging. - Source is a platform, medium is a category.
source=linkedin,medium=paid-social. Notsource=paid-social. Getting this backwards is the most common error and the hardest to unpick later, because the values look plausible in isolation. - Keep a fixed, short list of mediums. Something like email, paid-social, organic-social, paid-search, referral, display, affiliate. Mediums are the axis you group by; the moment there are forty of them, grouping stops meaning anything.
- Put the date in the campaign name, not the medium.
q3-demand-hacksor2026-08-webinar. You will want to compare the same campaign across periods, and you cannot do that if the period is hidden in another field.
Where UTMs silently stop working
Tagging correctly is necessary but not sufficient. There are four situations where a perfectly formed UTM produces nothing, and knowing them saves you from debugging analytics when the problem is elsewhere.
Internal links. Never tag a link from your own site to another page on your own site. Doing so restarts the session attribution and overwrites the original source, so a visitor who arrived from a paid ad gets recorded as coming from your own homepage. This is the single most destructive UTM mistake because it actively deletes true data rather than merely adding noise.
Redirects that drop query strings. Plenty of link shorteners, and some CMS redirect rules, strip everything after the question mark. The click happens, the visit lands, and the tags are gone. Test the actual final URL, not the one you pasted in.
Apps that strip parameters. Some mobile apps and email clients rewrite links on the way out. If a channel shows suspiciously high direct traffic, this is a likely culprit.
Hash fragments. Parameters must come before any # in the URL. ?utm_source=x#section works; #section?utm_source=x does not, because everything after the hash never reaches the server.
How to fix tagging that is already a mess
If you have inherited months of inconsistent tags, resist the urge to start over with a new convention. That gives you two conventions and twice the mess. Do this instead.
First, export a list of every distinct source and medium value from the last ninety days. This is usually a five-minute report and it is almost always worse than anyone expected. Second, group the duplicates by hand: the casing variants, the singular and plural pairs, the abbreviations. Third, pick the winner for each group, based on which is most used rather than which is most correct. Fourth, apply consolidation rules in your analytics tool so historic data reads cleanly. Only then publish the convention, and publish it as the one line it should be.
The reason to do it in that order is that the export tells you what your team actually does, and a convention that matches existing behaviour needs far less enforcement than one that fights it.
Numbers worth knowing
| Metric | Typical | What it means |
|---|---|---|
| Distinct source values, healthy | 10 to 30 | One row per real platform you use. More than this usually means casing or typo duplicates rather than genuinely more channels. |
| Distinct medium values, healthy | 5 to 10 | Medium is the grouping axis. If it has grown past ten, grouping has stopped being useful and you are effectively reading source twice. |
| Direct traffic share | under 20% | Direct is where untagged and stripped traffic goes to hide. A sudden rise usually means a channel lost its tags, not that brand awareness improved. |
| Time to first broken report | 3 to 6 months | Inconsistent tagging is invisible until someone runs a quarterly comparison. This is why conventions have to be set before the campaigns, not after. |
Mistakes that quietly cost you results
- Tagging internal links between your own pages
- This overwrites the original acquisition source and turns paid visitors into self-referrals. Use event tracking for internal clicks. This one destroys real data, so fix it first.
- Swapping source and medium
- Source is the named platform (
linkedin), medium is the category (paid-social). Reversed, your channel grouping report becomes unreadable and no rule can reliably repair it afterwards. - Mixed casing across a team
- Lowercase everything, mechanically, at the point the URL is built rather than by asking people to remember.
Emailandemailwill never sum together. - Putting personally identifiable data in a tag
- Email addresses and names in
utm_contentend up in analytics tools and server logs you do not control, which is a real privacy exposure. Use an opaque identifier instead. - Inventing a new medium for every campaign
- Medium is the axis you group by and should change roughly never. Put the specifics in the campaign name, where they belong.
What does the output look like?
This is the exact output the tool produces from the example inputs. It is generated by the same code that runs when you click the button, so what you see here is what you get.
Frequently asked questions
What is the difference between utm_source and utm_medium?
Source is where the click came from (linkedin, newsletter, partner-site). Medium is the type of channel (paid-social, email, referral). The most common reporting failure is swapping them, which scatters one campaign across a dozen rows. This tool flags likely swaps before you publish the link.
Should UTM parameters be lowercase?
Always. Analytics platforms treat LinkedIn and linkedin as two separate sources, so mixed casing quietly splits your data. This tool forces lowercase on every parameter, which is why the output may not match exactly what you typed.
Do UTM parameters hurt SEO?
They can, if tagged URLs get indexed as duplicates of the clean URL. Tag links you place on other sites, not internal links, and make sure the page has a self-referencing canonical tag. Internal UTM tagging is the more common and more damaging mistake.
Why did the tool remove part of my URL?
If your destination already contained a query string with UTM keys, they are stripped so the new ones do not collide. Two utm_source values on one URL is undefined behaviour and different platforms resolve it differently.
Related free tools
- Net Revenue Retention Calculator Analytics
- Pipeline Coverage Calculator Analytics
- Marketing Budget Allocator Analytics
- SEO Meta Tag Generator for ecommerce product pages SEO
- SEO Meta Tag Generator for local business SEO
Some links on this site are affiliate links, which means Hacking Demand may earn a commission if you buy through them at no extra cost to you. This does not influence which tools are listed. The tools on this page are free and have no affiliate relationship of any kind.