UTM builder and link checker
Build a correctly tagged campaign URL, or paste an existing one and see what it is really tagged with. Free, no account, and nothing you type leaves your browser.
- Free, no account
- Runs in your browser
- Nothing is sent to us
Your link
The page people should land on.
Where the traffic comes from: newsletter, google, reddit.
The channel type: email, cpc, social, referral.
The specific campaign this link belongs to.
Optional. The paid keyword, for search ads.
Optional. Distinguishes two links in the same campaign.
Optional. Your own identifier for the campaign.
Enter a website URL to build a tagged link. Nothing you type leaves your browser.
What this does
Two jobs in one page. Build assembles a campaign URL from your destination and your campaign names, validating as you type. Check takes a link you already have, shows exactly what it is tagged with, and offers a corrected version if the values are inconsistent.
Everything runs in your browser. The URL you paste is never sent to sonex or anyone else, which is the only honest way for a privacy-first company to ship a link tool.
The five parameters, and which ones matter
| Parameter | Required | What it answers | Example |
|---|---|---|---|
utm_source | Yes | Where specifically did this come from | newsletter |
utm_medium | Yes | What kind of channel is it | email |
utm_campaign | Yes | Which campaign does it belong to | spring-launch |
utm_term | No | Which paid keyword | privacy analytics |
utm_content | No | Which of two links in the same campaign | hero-button |
Most tools only treat a visit as campaign traffic when source, medium and campaign are all present. Tag a link with just utm_campaign and the visit usually lands in “direct” anyway, which is worse than not tagging it at all, because now you think you measured something.
The four mistakes that actually cost you data
Inconsistent casing. Email and email become separate rows in almost every analytics tool. One person capitalising a source in one campaign is enough to split a channel in half for a quarter. Lowercase everything, always.
Spaces. They encode to %20 and survive, but they are fragile through link shorteners and easy to mistype. Hyphens or underscores, chosen once and kept.
Medium used as source. utm_source=email and utm_medium=newsletter is backwards, and it is the single most common tagging error. Source is the specific origin, medium is the category. Newsletter is a source; email is a medium.
Personal data in a parameter. Emails, names and customer IDs put into utm_content for “personalisation” end up in your analytics, in the visitor’s browser history, in referrer headers sent to third parties, and in whatever link they paste into a group chat. Never do it.
A naming convention that survives contact with a team
Write it down once and put it where people tag links:
- Lowercase, hyphens for spaces, no exceptions.
utm_sourceis the specific property:newsletter,reddit,producthunt.utm_mediumis the category, from a short fixed list:email,social,cpc,referral,affiliate.utm_campaignstarts with a date so it sorts:2026-08-launch.utm_contentdistinguishes placements within one campaign:hero-button,footer-link.
The convention matters more than which convention. Two people improvising is how you end up with eleven spellings of “twitter”.
Where the tags go in the URL
Campaign parameters belong in the query string, before any #fragment. A URL that already has parameters gets & rather than ?. The builder above handles both, including reordering the fragment correctly, which is the part people get wrong by hand.
Then actually read the results
Tagging is only half of it. The tags have to land somewhere you can read them, grouped the way you named them. In sonex, tagged visits show up under campaigns with source, medium and campaign as filterable dimensions, and you can follow a campaign through to a funnel or to revenue without cookies and without a consent banner.
Frequently asked.
- What are UTM parameters?
- UTM parameters are five optional query-string tags you add to a link so your analytics tool can say where a visit came from. The three that matter are utm_source (where), utm_medium (what kind of channel) and utm_campaign (which campaign). They are plain query parameters, not a Google technology, so any analytics tool can read them.
- Do UTM parameters work without Google Analytics?
- Yes. They are just query-string values on the URL, so any analytics tool that reads the landing URL can attribute the visit, including cookieless ones. Nothing about UTM tagging requires cookies or Google.
- Are UTM parameters case-sensitive?
- In practice yes. Most analytics tools treat utm_source=Newsletter and utm_source=newsletter as two different sources, which quietly splits one campaign across two rows. Pick lowercase and never deviate. This tool flags capitals and can normalise them for you.
- Do UTM parameters hurt SEO?
- They can create duplicate URLs for the same page, which is why tagged links should point at pages that already declare a canonical URL. Use UTM tags on inbound links you control, such as ads, emails and social posts, not on internal links between your own pages.
- Can I put a customer email or name in a UTM parameter?
- No. Campaign parameters end up in analytics reports, browser history, referrer headers and any link the visitor shares. Putting personal data there leaks it in several directions at once and breaches most analytics providers' terms. Use an opaque identifier instead.