Campaign setup
UTM builder
Add or replace campaign tags on a destination URL without changing the rest of the link. Source identifies where traffic came from, medium describes the channel, campaign names the effort, and term and content add optional detail.
No account required. Entered data is not sent or saved. This tool accepts HTTP/S URLs only and never requests, crawls, resolves, or preloads the destination.
UTM URL builder
Browser-local tool
Build a tagged campaign link
Runs in your browser. Entered data is not sent or saved.
Transformation rules
What changes and what stays the same
Canonical UTM fields are replaced
Every existing lower-case utm_source,utm_medium,utm_campaign,utm_term, andutm_content is removed, including duplicates. Non-empty form values are appended once in that order.
Unrelated query data is preserved
Other keys, duplicate values, paths, origins, ports, and fragments stay in place semantically. URL query serialization can normalize an encoding such as %20 to+; it is not byte-identical preservation.
Blank optional values clear old tags
Leaving utm_term orutm_content blank removes its existing lower-case value. An upper-case custom key is not treated as the same key.
The URL is never visited
Parsing is local URL processing. There is no link checker, preview request, resolver, shortening service, analytics payload, or account connection.
Worked example
Keep the useful context.
A link with an existing referral parameter and a pricing fragment keeps both while its canonical campaign values are refreshed.
Input
https://example.com/landing?ref=abc&utm_source=old&utm_source=duplicate#pricing
Generated with google / cpc / spring
https://example.com/landing?ref=abc&utm_source=google&utm_medium=cpc&utm_campaign=spring#pricing
The duplicate old source values are replaced, ref=abc remains, and #pricing stays a fragment rather than becoming a query value.
Encoding and privacy
One local transformation, no URL request.
UTM fields are treated as decoded text, trimmed at the edges, and encoded once by the standard URL query encoder. Spaces in new values therefore use the URLSearchParams representation. Existing query values retain their meaning even when their serialized spelling is normalized.
The generated file contains exactly one URL followed by a newline. Copy and download happen in the browser. Refreshing or leaving the page clears this in-memory work; no input is written to a URL, cookie, browser storage, analytics event, or server.
Upper-case custom names such as UTM_SOURCE are deliberately untouched. Signed URLs may stop verifying after any query edit or reserialization, so check signatures separately.
Need a second set of eyes?
Measure the campaign after the link is ready.
We can help connect campaign tagging to the ad account and the business result it is meant to measure.