UTM Builder

Assemble a tagged campaign URL and get warned about the things that quietly corrupt reporting later: capital letters, spaces, and UTM parameters that were already on the URL. Everything happens in your browser.

Tagged URL

Runs in your browser · nothing sent, stored, or logged

Formula

?utm_source=…&utm_medium=…&utm_campaign=…[&utm_term=…][&utm_content=…][&utm_id=…]

Parameters are appended to the existing query string and placed before any fragment. Values are percent-encoded, so the output is safe to paste directly into a trafficking sheet or a click tracker.

The taxonomy matters more than the tool

Building one URL is trivial. Keeping six months of them consistent is the actual job, and it is where most teams fail. Agree in advance what goes in medium — a small closed set such as cpc, display, email, social — and treat source as the specific platform or partner. The moment two people disagree about whether a programmatic display buy is display or programmatic, the reports stop being comparable and no amount of tooling fixes it retroactively. Write the convention down somewhere a new starter will find it.

UTMs and ad server click trackers are different layers

In programmatic the landing page URL usually travels inside a click tracker, so your tagged URL becomes a parameter value in someone else's URL. That means it needs to be percent-encoded when it is nested, and encoded exactly once — a second pass turns the ampersands into %2526 and the destination arrives with its parameters mangled or missing. If a tagged link works when pasted directly but loses its parameters when trafficked, the encoding depth is the first thing to check.

Frequently asked questions

Does capitalisation in UTM values matter?
Yes, and it is the most common way campaign reports get quietly wrong. Analytics platforms treat utm_source=Facebook and utm_source=facebook as two distinct sources, so a channel total splits across rows that nobody notices until someone tries to reconcile it. Lowercase everything as a rule.
Which parameters are actually required?
Source, medium and campaign. Term and content are optional and mostly used for paid search keywords and creative-level splits. utm_id is used to join sessions to a campaign record in some setups; leave it empty unless you know your platform reads it.
What happens if the URL already has parameters?
They are preserved and the UTM parameters are appended correctly. If the URL already carried UTM parameters, those get replaced rather than duplicated — two utm_source values on one URL is undefined behaviour, and different platforms pick different ones.
Should I use spaces or hyphens in campaign names?
Hyphens or underscores. Spaces encode as %20 and technically work, but they break when someone pastes the link into a chat client or a spreadsheet that stops the link at the first space. The reporting value is identical and the operational risk is not.

Related