Skip to main content

UTM builder: tag a link, then take one apart

Paste the page address, pick a platform or fill the utm fields by hand, and the link assembles itself. Macros such as {keyword} stay untouched, non-Latin values are transliterated, and the last ten links sit in your own browser.

runs in your browser · the link history never leaves your device

Platform presets
Open

How to use it

  1. Paste the address of the landing page. The scheme is optional — https:// is added for you, and parameters already in the link are kept.
  2. Press a platform preset (Google Ads, Facebook / Meta, TikTok, Telegram, Email, Push) or fill utm_source, utm_medium and utm_campaign yourself. Extra parameters such as sub1 or clickid go one per line.
  3. Set the options: transliteration, lower case, what replaces a space. Macros like {keyword}, {{ad.name}} and __CID_NAME__ are left unencoded unless you ask for the opposite.
  4. Copy the link or open it in a new tab. Every link you build joins the history — the last ten, held in this browser and nowhere else.
  5. To check a link someone sent you, paste it into Take a link apart at the bottom: you get every parameter and a list of the usual mistakes.

What UTM tags are and why a link needs them

UTM tags are five standard parameters in a page address that tell Google Analytics 4 and any tracker where a visitor came from. The link site.com/?utm_source=google&utm_medium=cpc&utm_campaign=nutra_de shows up in a report as source google, medium cpc and campaign nutra_de. Untagged traffic from messengers and in-app browsers collapses into a faceless direct, and the campaign can no longer be costed.

For a media buyer, UTM tags are what matches ad account spend to affiliate network revenue campaign by campaign and ad by ad. For a marketer, they separate a newsletter from a seeding run from paid search. This builder assembles the link the way each platform expects and refuses to let through the mistakes that spoil reports for months.

What goes in each parameter

ParameterWhat goes in itExample
utm_sourceThe platform the traffic came from — requiredgoogle, facebook, telegram
utm_mediumThe type of traffic: paid click, seeding, newsletter — requiredcpc, social, email, push
utm_campaignThe campaign, the offer or the geonutra_de_march, {campaign_id}
utm_termThe keyword or the targeting{keyword}, women_25_34
utm_contentWhat exactly was clicked: creative, button, ad{creative}, banner_300x250

Mistakes that quietly ruin the numbers

  • Mixed case. utm_source=Google and utm_source=google are two separate sources in a report. The lower case option is on by default.
  • Spaces and non-Latin characters. A value like spring sale arrives as spring%20sale, and anything outside Latin turns into %D0%B2%D0%B5… that nobody can read. Transliteration and the space replacement deal with both.
  • Source and medium swapped. The platform belongs in source (facebook), the traffic type in medium (cpc) — not the other way round, and not fb_ads in both.
  • Duplicated tags. If the original link already carried utm parameters, the builder overwrites them and says which ones, because an analytics system handed two values for one key will pick whichever it likes.
  • Encoded macros. A platform substitutes nothing for %7Bkeyword%7D; it needs the braces as they are. Curly braces and __MACROS__ are left alone until you tick the encoding option.

The presets

A preset fills in source and medium and adds the dynamic macros in that platform syntax, which the platform expands at click time. Telegram, email and push have no macros: the preset only sets source and medium, and the campaign is yours to write.

Presetutm_source / utm_mediumDynamic macros
Google Adsgoogle / cpcutm_term={keyword}, utm_content={creative}
Facebook / Metafacebook / cpc{{campaign.name}}, {{adset.name}}, {{ad.name}}
TikToktiktok / cpc__CAMPAIGN_NAME__, __CID_NAME__
Telegramtelegram / social—
Emailemail / newsletter—
Pushpush / cpc—

Questions

Which UTM tags are mandatory?

Google Analytics 4 wants utm_source, and without utm_medium the visit lands in the (not set) channel. In practice three are always filled in — source, medium and campaign — with term and content added when there is something to put in them.

What is the difference between utm_source and utm_medium?

Source is the specific platform (google, facebook, telegram); medium is the type of traffic (cpc, social, email, push). Analytics groups channels by medium and breaks them down by source.

Can a value contain letters outside Latin?

Technically yes — the browser will percent-encode them. Those values are unreadable in a report and break some trackers, so the builder transliterates them to Latin by default. Untick the option if you need the raw value.

What happens if the link already has UTM parameters?

Everything else is kept — a ref or an id stays where it was — while the existing utm tags are replaced with the new ones, and the status line lists the keys it overwrote.

Why are macros like {keyword} not encoded?

An ad platform only substitutes a value when it sees the braces literally. An encoded %7Bkeyword%7D arrives in the report as that exact string. Encoding is a separate checkbox, for trackers that insist on it.

Where is the link history stored?

In your browser local storage only. Nothing is sent to a server, and Clear the history removes the list for good.

Project sponsors

Companies that keep this analytics open