Utilia

UTM Link Builder

Build campaign URLs with UTM parameters for Google Analytics, one link or hundreds at once, keeping existing query strings, with CSV export.

Mode

Checks

How to use the UTM link builder

  1. Choose a Mode: Single URL to tag one page, or Bulk (many URLs) to paste a list of pages, one per line.
  2. Enter the Page URL (or the Page URLs). If you leave out https://, this tool adds it and tells you.
  3. Fill in Campaign source (utm_source), Campaign medium (utm_medium) and Campaign name (utm_campaign). The suggestions list common values such as google, newsletter, email or cpc.
  4. Optionally add Campaign ID (utm_id), Campaign term (utm_term) and Campaign content (utm_content).
  5. Tick Force lowercase values if you want every value converted to lowercase automatically.
  6. Copy the Tagged URLs with Copy, save them as a text file with Download, or, in bulk mode, get a spreadsheet with Download CSV (original and tagged URL on each row). In single mode, Test the link opens the result in a new tab.

Everything runs in your browser: the URLs you paste are never sent anywhere.

What each UTM parameter means

UTM parameters are ordinary query-string parameters that analytics tools such as Google Analytics 4, Matomo or Plausible read when a visitor lands on your site. They tell you which campaign brought the visit, even when the referrer is missing (email apps, PDFs, QR codes, messaging apps).

  • utm_source: who sends the traffic, for example google, newsletter or linkedin.
  • utm_medium: the type of channel, for example email, cpc, social or display. GA4 uses source and medium to sort visits into default channel groups, so consistent mediums matter.
  • utm_campaign: the name of the promotion, such as spring_sale_2026.
  • utm_id: an identifier used to join campaign cost data imported into GA4.
  • utm_term: the paid search keyword.
  • utm_content: distinguishes two links in the same message, for example header_button and footer_link.

Source, medium and campaign are the three you should always fill in; this tool warns when one of them is empty.

How the URLs are built

This tool parses each address with the browser’s URL API, then rebuilds it carefully:

  • Existing query parameters are kept exactly as they were written, in the same order. The UTM parameters are added after them.
  • If the URL already contains a UTM parameter that you are setting, the old value is replaced (never duplicated) and a warning names it.
  • The #fragment stays at the very end, after the query string, where browsers expect it. Putting UTM parameters after a # is a common mistake: the browser never sends the fragment to the server, and many analytics setups ignore it.
  • Values are percent-encoded. Spaces become %20 rather than +, so the link means the same thing in every context; accented letters and characters such as & or = are encoded too.

Naming conventions that keep reports clean

UTM values are case-sensitive: Email, email and EMAIL show up as three different mediums. This tool warns about capital letters and about spaces, which are valid but awkward to read in reports. Pick a short list of mediums, write it down, and reuse it for every campaign. Underscores or hyphens (spring_sale) read better than %20.

Never tag internal links between pages of your own site: a click on a tagged internal link starts a new session attributed to that campaign and overwrites the real source.

Frequently asked questions

Which UTM parameters are required?

Technically none, but Google Analytics needs utm_source, utm_medium and utm_campaign to attribute a visit properly. Without a medium, the visit often lands in the “Unassigned” channel.

Can I tag hundreds of links at once?

Yes. Switch to Bulk (many URLs), paste one URL per line and download the result with Download CSV. Invalid lines are listed in the checks with their line number and left out of the text output.

Does adding UTM parameters hurt SEO?

Not when they are used for external campaigns. Search engines generally treat them as duplicates of the clean page, especially if the page has a canonical tag. Avoid using tagged URLs in your own navigation or sitemap.

Why %20 instead of + for spaces?

Both decode to a space in query strings, but + means a literal plus sign in other parts of a URL. %20 is unambiguous everywhere, which is why this tool uses it.

Why did my old utm_source disappear?

When you fill in a field, the matching parameter already in the URL is replaced so the link carries only one value. Parameters you leave empty, such as an existing utm_content, are kept.