Skip to content
Adrythm

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.

HTTP/S only. This tool parses your URL locally and never requests, resolves, or previews it.

Campaign parameters

Source, medium, and campaign are required. Values are trimmed at the edges and encoded once when the URL is generated.

The platform or publisher, such as google or newsletter.

The channel type, such as cpc, email, or social.

The campaign name used to group this traffic.

Optional keyword or audience detail. Blank clears an existing value.

Optional creative or placement detail. Blank clears an existing value.

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.

Get help measuring campaigns