Free tools

UTM Builder

Paste a URL, fill in the fields, and get a tagged campaign link you can drop straight into an email, ad, or social post. Tag one link or a whole spreadsheet at once, with no account and no export limit.

Required

Where people land after clicking.

Required

Where the traffic comes from: the specific site, publication, or list.

Required

The type of channel: email, cpc, social, referral.

Required

The initiative this link belongs to.

Optional

Paid search keyword. Leave blank for anything that isn't search advertising.

Optional

Which version or placement. Useful for A/B tests and multiple links in one email.

Optional

Ties this link to a campaign in your ad platform or GA4 imports.

Your tagged link

Add a destination URL above and your tagged link will appear here.

Shorten this link

Sharing the builder copies a link to this page with your fields pre-filled, handy for passing a naming convention around your team.

How UTM parameters work

What a UTM parameter actually is

A UTM parameter is a tag added to the end of a URL that tells your analytics where a visitor came from. It changes nothing about the page. The tag simply travels along with the click, so the arriving traffic can be attributed to the right campaign.

A tagged URL looks like this:

https://yoursite.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=spring-2026

The first parameter is joined with a ?, every one after it with an &. That is the whole mechanism. The complexity isn't technical; it's in staying consistent with your own naming across months and teammates.

The parameters, in plain English

utm_source is the specific origin. Not "email" but which email list; not "social" but which network. Think proper noun: newsletter, linkedin, partner-blog, google.

utm_medium is the type of channel, and the one that matters most, because analytics tools use it to sort traffic into channel groups. Stick to a small controlled vocabulary: email, cpc, organic-social, paid-social, referral, affiliate, qr. Inventing new mediums is how traffic ends up in an "Unassigned" bucket.

utm_campaign is the initiative: spring-2026, webinar-replay, black-friday. Everything belonging to one push shares one campaign name, across every channel.

utm_term is the paid keyword you bid on, and only relevant for search ads. If you're not running search ads, leave it empty rather than repurposing it for something else.

utm_content is the variant or placement, and the underrated one. If your newsletter has three links to the same page, utm_content=header-cta, body-link, and footer-button are the difference between "the newsletter drove 400 clicks" and "the header CTA drove 380 of them, so move everything up".

utm_id is a single campaign identifier some ad platforms and GA4 data imports ask for. Optional unless your reporting pipeline needs it.

Source, medium, and campaign are effectively required. Skip source or medium and most analytics tools will file the visit as direct traffic, the same bucket as someone typing your URL from memory.

The four mistakes that ruin a report

Capitals. utm_source=Facebook and utm_source=facebook are two different sources in most analytics tools, and they will sit in your report as two separate rows you have to merge by hand later. Lowercase everything, always. This builder lowercases by default.

Spaces. A space becomes %20 in the URL and looks broken when someone hovers the link. Use hyphens: spring-sale, not spring sale. Pick hyphens or underscores as a house rule and never mix them.

Confusing source with medium. The most common version is utm_source=email&utm_medium=newsletter, which has the two backwards. Medium is the category, source is the specific thing inside it. Getting this the wrong way round scatters your email traffic across the wrong channel group.

Tagging your own internal links. UTM parameters are for traffic arriving from outside. Tag a link on your own site and you start a fresh session mid-visit, overwriting the original source, so the ad that genuinely won you that visitor gets no credit. Use them on outbound placements only.

A naming convention that survives contact with a team

Write these down somewhere shared before you tag your second campaign, not after your fiftieth:

  1. Lowercase, hyphens, no spaces, no accented characters.
  2. A fixed list of allowed mediums. Anything not on the list needs a decision, not an improvisation.
  3. Campaign names dated at the front: 2026-04-spring-launch sorts chronologically in every report you'll ever open.
  4. One name per concept. newsletter, not newsletter and email-list and mailing.
  5. Never edit a live link's tags. The old data doesn't retroactively change, so you end up with the same campaign split across two names.

Why tagged links belong behind a short link

Tagged URLs get long and ugly fast, and a visible utm_medium=paid-social string in a post tells your audience exactly how much you paid to reach them. Wrapping the tagged URL in a branded short link on your own domain keeps the tracking intact, because the parameters still arrive at your site, while what people see is go.yourbrand.com/spring. It also means you can fix a typo in the destination without reprinting whatever the link was on.

Frequently asked questions

Not if you're only tagging inbound links from other places. Problems start when tagged versions of your own pages get crawled and indexed as duplicates, which is exactly what tagging internal links causes. Keep a canonical tag on your pages and don't tag internal navigation.

Put your tagged links behind a branded domain

GoGoLink wraps campaign URLs in short links on your own domain and measures every click with privacy-friendly analytics. Free to start, no credit card required.