OmniTools
webDifficulty: 2/5

UTM Builder

Build tagged campaign URLs with correct encoding, existing query parameters preserved, and the common UTM mistakes flagged.

Existing query parameters are preserved; only an existing utm_ value is replaced.

Campaign parameters

Required by analytics tools.

Required by analytics tools.

Required by analytics tools.

Optional.

Optional.

Conventions that matter: UTM values are case-sensitive to most analytics platforms, so “Facebook” and “facebook” become two different sources and split your reporting. Use lowercase everywhere and avoid spaces — separate words with hyphens or underscores (for example summer-sale). Values are percent-encoded automatically by the URL builder, so you do not need to encode them yourself; just type them normally.

How it works

  1. Paste the URL you want to tag, then fill in the campaign parameters.
  2. Source, medium and campaign are the three analytics tools require; term and content are optional.
  3. The finished link and every parameter it carries update as you type, in your browser.
Privacy & Processing: Everything runs in your browser. Your URL and campaign names are never uploaded, stored, or sent to analytics.

Frequently Asked Questions

Does it keep the parameters already on my URL?

Yes. A campaign link is often built on a URL that already carries product IDs or variant parameters, and dropping them breaks the landing page. Existing parameters are preserved and listed; only an existing utm_ value is replaced, and the replacement is reported.

Are values encoded correctly?

Yes, using the browser’s own URL machinery. Spaces, ampersands and non-ASCII characters are all encoded properly, so a campaign name like "summer sale & more" produces a working link rather than one that truncates at the ampersand.

Why does it warn about capital letters?

Because UTM values are case-sensitive in most analytics platforms, so "Facebook" and "facebook" become two separate sources and split your reporting. Lowercase is the usual convention.

What about the fragment?

Parameters are placed before any #fragment, which is correct. The tool also notes that fragments are never sent to the server, so analytics cannot see them.

Related Tools