Skip to content
helpyself

UTM Builder

Runs entirely in your browser. Nothing is sent to a server.

Save this tool

Keep UTM Builder handy

Bookmark it

A UTM builder for campaign URLs, with the tagging mistakes caught as you type.

  1. Paste the page you are linking to
  2. Fill in source, medium and campaign — the three that make a link attributable
  3. Copy the tagged URL, and read any warnings underneath
The page you are linking to. A bare address like example.com/pricing works.
Where it came from: newsletter, google
The channel: email, cpc, social
This specific push: spring-sale
Optional parameters
Paid keyword, for search ads
Tells two versions apart: header-link
GA4's utm_id, if you use one

About this tool

A UTM builder adds campaign parameters to a link so analytics can tell you where your traffic came from. Joining them with an ampersand is the easy part, and it is not what goes wrong. What goes wrong is that analytics treats these values as case-sensitive, opaque strings. Tag a link Newsletter in January, newsletter in March and news letter in June, and you have three sources rather than one — every total is understated, and nothing warns you, because the report renders perfectly. It is simply describing something that did not happen. So this lowercases values and turns spaces into hyphens by default, which is the convention every analytics vendor's own documentation uses. It also flags the mistakes normalising cannot fix: a full web address pasted into the source field, a trailing full stop copied along with the text, or a link missing one of the three parameters that make it attributable at all. The URL is parsed rather than glued together, which matters for two shapes that are easy to get wrong by hand. A destination that already has a query string needs an ampersand, not a second question mark. And a destination with a fragment needs the parameters placed before the hash — put them after it and the browser never sends them, so the campaign records nothing and nothing tells you.

Frequently asked questions

What are utm_source, utm_medium and utm_campaign?

Source is where the visit came from as a short name, like newsletter or google. Medium is the kind of channel, like email, cpc or social. Campaign is the specific push, like spring-sale. Those three are what analytics needs to attribute a visit; anything missing shows up in reports as (not set).

Should UTM parameters be lowercase?

Yes, and it matters more than it sounds. Analytics tools compare these values exactly, so Newsletter and newsletter are two different sources and split your numbers between them. This tool lowercases by default, and you can turn that off if your team already has a scheme it applies consistently.

How do I write a campaign name with spaces?

Use hyphens. A space becomes %20 or a plus sign in the URL, which is legal and works, but it is unreadable in a report and invites the next person to write it differently. This tool converts spaces to hyphens for you.

What if my link already has a question mark in it?

It is handled. The URL is parsed rather than concatenated, so an existing query string gains an ampersand rather than a second question mark, and existing parameters that are not UTM ones are left alone.

What happens to a link that already has UTM parameters?

They are replaced, and you get told. A URL carrying two utm_source values is read as one or the other depending on the tool, which is worse than either — so the old ones are removed rather than added to.

Why is my full website address rejected as a source?

It is not rejected, but it is flagged. Source should be a short name for where the visit came from — google, not https://www.google.com/. Pasting the referring address is the most common mistake here, and it produces reports full of near-duplicate sources that are hard to tidy up later.

Help improve this tool

Found a bug, want a change, or need a tool we don't have?

/utm-builder

↑↓ to move · Enter to open · Esc to close