UTM Link Builder

Build a UTM-tagged campaign URL. Paste a base URL into the URL field (or the input panel), fill utm_source, utm_medium, and utm_campaign, and the output panel shows the tagged link. Existing query parameters on the base URL are preserved; only blank UTM fields are skipped. Need a slug? See the slug generator.

Input
Line 1:1 LF cloud_done Saved locally
Result UTM Link Builder
0 lines 0 chars

Campaign-tracked URLs without the spreadsheet

UTM parameters are the standard way to tell your analytics tool where a click came from. Three are usually enough: utm_source (the place the link was published, like newsletter or twitter), utm_medium (the channel type, like email or social), and utm_campaign (the named push, like spring-launch). Google Analytics, Plausible, Fathom, and most other tools all read these.

The builder accepts the base URL either in the URL option or in the input panel. The option wins if both are filled. The output is the same URL with the UTM parameters appended; existing query string parameters are preserved through the URL constructor. Empty UTM fields are skipped, so you only get the parameters you actually filled in.

If the base URL fails to parse (missing scheme, malformed), the output is [invalid URL]. Add https:// in front and try again. For SEO-friendly slugs to put inside the URL itself, use the slug generator.

How to use utm link builder

  1. 1Paste the base URL into the input panel or the URL option.
  2. 2Fill utm_source with the publisher (e.g. newsletter).
  3. 3Fill utm_medium with the channel (e.g. email).
  4. 4Fill utm_campaign with the campaign name (e.g. spring-launch).
  5. 5The output panel shows the tagged URL. Click Copy to grab it.

Keyboard shortcuts

Drive TextResult without touching the mouse.

Shortcut Action
Ctrl FOpen the find & replace panel inside the input Plus
Ctrl ZUndo the last input change
Ctrl Shift ZRedo
Ctrl Shift EnterToggle fullscreen focus on the editor Plus
EscClose find & replace, or exit fullscreen
Ctrl KOpen the command palette to jump to any tool Plus
Ctrl SSave current workflow draft Plus
Ctrl PRun a saved workflow Plus

What this tool actually does

Three standard UTM parameters

Appends utm_source, utm_medium, and utm_campaign to the base URL. The two other Google-defined UTM parameters (utm_term, utm_content) are not part of this builder; add them by hand if you need them.

Existing query parameters survive

The builder uses the browser URL constructor and URLSearchParams.set(). So example.com/page?id=42 with utm_source=email becomes example.com/page?id=42&utm_source=email. Existing UTM parameters with the same key are overwritten.

Empty UTM fields are skipped

If utm_medium is blank, no utm_medium parameter is added. Only the fields you fill end up in the output URL.

Two ways to supply the base URL

Type it into the URL option or paste it into the input panel on the left. The option wins if both are filled. If both are empty, the builder uses https://example.com as a placeholder so you can see how the result will look.

Invalid URLs return a clear error

If the base URL cannot be parsed (missing scheme, malformed), the output is the literal string [invalid URL]. Add https:// in front of the URL and re-run.

Worked example

Base URL https://example.com/launch, utm_source newsletter, utm_medium email, utm_campaign spring-launch. Existing query parameters would be preserved before the UTM block.

Input
https://example.com/launch
Output
https://example.com/launch?utm_source=newsletter&utm_medium=email&utm_campaign=spring-launch

Settings reference

Option Effect on output
URL Base URL to tag. Wins over the input panel. Falls back to https://example.com if both are empty.
utm_source Adds utm_source=.... Skipped if blank.
utm_medium Adds utm_medium=.... Skipped if blank.
utm_campaign Adds utm_campaign=.... Skipped if blank.
Existing query string Preserved. Existing UTM keys are overwritten if you re-tag.
Invalid base URL Output is the literal string [invalid URL]. Add a scheme like https:// and re-run.

FAQ

What about utm_term and utm_content?
Not in this builder. The three core fields (source, medium, campaign) cover most use cases. For utm_term or utm_content, append them manually after copying the result, or use the slug generator to format the value first.
Will it preserve a query string that's already on my URL?
Yes. The builder uses the browser URL object, which keeps existing parameters and appends the UTM ones. If your URL already has a utm_source, it is overwritten by your new value.
What happens with a malformed URL?
The output is the literal string [invalid URL]. Add a protocol prefix like https:// in front of the URL and try again.
Should I lowercase the UTM values?
It is a strong convention. email and Email show up as different sources in most analytics tools, so pick one case (lowercase, no spaces) and stick to it across campaigns.
Is the output sent anywhere?
No. The URL is built in your browser. Nothing is uploaded, nothing is logged.