UtilityToolsLab

© 2026 UtilityToolsLab. Built and maintained by the UtilityToolsLab Team.

Free eBooks·About·Changelog·Privacy Policy·Terms of Service·Report a bug
HomeMarketing & Ad CalculatorsUTM Builder

Related Tools

CLV CalculatorA/B SignificanceCTR CalculatorCPM Calculator

UTM Parameter Builder

Tag any link with utm_source, utm_medium and campaign parameters, or paste a finished link and read its fields back out. Existing query strings survive.

You Might Also Like

All Marketing & Ad Calculators

CLV Calculator

Work out customer lifetime value three ways, with the LTV to CAC ratio and payback month, and see why zero churn breaks the usual formula.

A/B Significance

Run a two-proportion z-test on your A/B test results and get a real p-value, not just a percentage. Fully client-side, no data ever leaves your device.

CTR Calculator

Calculate click-through rate from clicks and impressions, set a target CTR to see the click gap, and compare against common channel benchmarks. Offline.

CPM Calculator

Solve for CPM, impressions or ad spend from the other two, with a target-CPM gap, cost per impression and common channel benchmarks. No ad-platform login.

Analytics counts Newsletter and newsletter as two separate sources. Nothing warns you. The traffic simply arrives as two rows in a report that should have held one, and by the time anyone notices, the campaign is over. UTM Parameter Builder settles casing and whitespace before the link is assembled, then writes the parameters on in a fixed order so two people tagging the same campaign produce the same URL.

Tagging here is a merge, not an append. A destination already carrying ?variant=20l keeps it. A #pricing-table fragment is re-attached after the query string rather than before it, which matters because a browser discards every parameter written after the #. Any utm_ pair already sitting on the link is replaced by whatever the form holds.

The trip runs in both directions. Paste a finished campaign link, press Parse URL, and it comes apart: parameters drop into their fields, the clean address stays behind, and nothing about an unpublished campaign is sent anywhere, because the assembly happens in the page you are reading.

Walkthrough: Tagging a Newsletter Link

Press Load Sample and the form fills with the lead entry from the pool: https://acmeanalytics.example.com/pricing, tagged newsletter over email for the spring-launch-2026 campaign, with hero-cta in the content slot. What the copy button hands back is:

https://acmeanalytics.example.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=spring-launch-2026&utm_content=hero-cta

Press Load Sample again for a different campaign. The pool cycles through four, and the second one carries a paid-search keyword with spaces inside it, which is the case the Spaces control exists for.

What Each utm_ Parameter Controls

  • utm_source and utm_medium together decide which channel a click is filed under. Leave source blank and the tool answers “utm_source is empty. Google Analytics needs it to attribute the click, so the session lands in Direct traffic instead of your campaign.” Medium offers 11 conventional values as you type — cpc, paid_social, affiliate and the rest — without stopping you typing your own.
  • utm_campaign names the effort; utm_id is its numeric twin, matched against the campaign ID you set in the ad platform rather than read as a label.
  • utm_term belongs to keyword auctions and stays empty everywhere else. utm_content is what separates two links on the same page pointing at the same destination, so a hero button and a footer link report separately.
  • Force lowercase is on by default and folds every value before encoding. Switch it off and any remaining capitals are named back to you in a warning rather than shipped quietly.

What Happens When the Link Already Has a Query String

Non-campaign parameters survive untouched and are listed as kept rows in the table under the output, so you can see exactly what rode along. Spaces inside a value become %20 rather than the + that URLSearchParams would emit; both decode to a space, but %20 is the form that survives being pasted through an email client. Every value is measured as it goes in, and anything longer than 100 characters is flagged red in that same table, because Google Analytics truncates each campaign parameter at 100 rather than rejecting the hit. An empty field is dropped instead of emitted blank, so a link tagged with only source and medium is a two-parameter URL, not one padded with utm_term=.

Destination

Query strings and #fragments already on the link are kept.

Campaign parameters

Spaces

Add a base URL to start tagging, or press Load Sample for a fully filled campaign.

Parse URL runs the whole thing backwards: paste a link someone already tagged into the base URL field, press it, and the utm_ pairs move into the form while the clean address stays behind. Useful when a campaign name has a typo in it and you would rather fix one field than retype the link. Everything is assembled in this page, so an unpublished campaign never reaches a server.