UTM Builder
Build campaign URLs locally, preserve ordinary parameters and review UTM replacements before export.
This tool runs entirely in your browser. Your data is never uploaded, never stored, and never leaves your device.
Creates one or many campaign URLs locally, with preserved ordinary query data and an explicit preview of changed tracking fields.
How to use it
- 1Enter HTTP(S) destinations, one per line.
- 2Set source, medium and campaign, then choose how existing fields are handled.
- 3Review previous/new parameters and download a URL list or campaign CSV.
Example
- Input
- https://example.com/?ref=partner source=newsletter, medium=email, campaign=autumn
- Output
- https://example.com/?ref=partner&utm_source=newsletter&utm_medium=email&utm_campaign=autumn
What happens to your data
URLs are built locally and never visited. Downloads contain destination/campaign values; review for private query data before sharing.
Last updated October 2026
Build a campaign URL for a newsletter, partner referral, social post or advertisement, then review what changed before publishing it. Enter a destination or up to 200 destinations sharing the same campaign fields. The UTM builder adds source, medium and campaign, with optional campaign ID, term, content and source platform. Everything is assembled locally; destination pages are not opened or checked.
A useful campaign link should preserve the destination's ordinary query data and fragment, avoid duplicate tracking fields and make existing tags visible. This tool therefore shows previous and new values for changed UTM parameters, rather than silently appending another utm_source. Copy the URL list or download a CSV campaign register after reviewing it. It does not create an Analytics property, install measurement code or demonstrate that attribution works.
How it works
Source, medium and campaign are required. Google recommends these fields for consistent campaign reporting, and also documents campaign ID and source platform. Values are case-sensitive: newsletter and Newsletter can become different reporting values. This tool preserves capitalization and punctuation as entered; it never silently lowercases or hyphenates a campaign name. Leading or trailing whitespace is rejected so you can correct it deliberately. Values are URL-encoded once when written.
In replace mode, every supplied field replaces all existing occurrences of that exact lowercase parameter name. The change list displays the previous values, including duplicates, and the resulting value. Blank optional fields normally preserve their existing tags. An explicit checkbox can instead remove existing optional fields left blank. Keep mode retains a single existing value and fills missing fields; repeated existing campaign keys are rejected in that mode because retaining ambiguity would produce an unreliable register.
Ordinary query segments are retained byte-for-byte, including repeated keys, the order of unrelated fields, plus signs and %20 spellings. The URL parser can still normalize the hostname, default port and path. A fragment such as #pricing remains after the query. Parameter names with nonstandard uppercase UTM spelling are preserved as ordinary parameters and flagged for review, rather than being silently treated as equivalent. The tool accepts HTTP and HTTPS destinations only and rejects embedded usernames or passwords.
Signed links can depend on the entire original query string. Common signature-related fields, including X-Amz and X-Goog signing parameters, sig, signature and policy, are rejected with a request to use an unsigned landing-page URL. That detection is deliberately conservative and cannot identify every proprietary signing scheme. Do not edit a password-reset, private-download or authentication link just because a particular signature name was not recognized.
Paste one destination per line; empty lines are ignored. A batch shares the seven visible field values. Invalid destinations stop the batch without offering partial output, so a broken campaign register cannot look complete. Inputs are bounded to 1 MiB, 200 destinations, 512 characters per field and 8,192 characters per resulting URL. No live requests are made to validate availability, redirects, consent settings, tracking configuration or campaign permissions.
The CSV contains original and generated destinations, parameter changes and review warnings. Formula-like CSV fields receive an apostrophe prefix; this is disclosed because it changes such exported field text. Downloaded links can contain private destination query values. Review them before sharing and do not put personal information, passwords or secret tokens in UTM fields. Nothing is intentionally stored in localStorage or sessionStorage, and changing an input clears the previous generated download.
Worked example: Replace an old source while keeping a partner reference
- Input
- Destination: https://example.com/offer?ref=partner&utm_source=old#details Source: newsletter; medium: email; campaign: autumn
- Result
- https://example.com/offer?ref=partner&utm_source=newsletter&utm_medium=email&utm_campaign=autumn#details
The result keeps ref=partner and the details fragment. The change preview records old → newsletter for utm_source.
Common use cases
- Create consistent newsletter links for several landing pages
- Replace outdated UTM tags without losing partner query parameters
- Review repeated tracking keys before publishing campaign material
- Keep a local CSV record of destinations and intended campaign changes
Frequently asked questions
Which UTM parameters are required?+
This builder requires source, medium and campaign. Campaign ID, term, content and source platform are optional. Google documents additional fields, but not every field is available in every Analytics report.
Will it lowercase my campaign name?+
No. Values are case-sensitive and remain as entered. Use your team's chosen naming convention consistently; capitalization variants can split reporting.
What happens to UTM values already in the URL?+
Choose replace or keep. Replace removes duplicate occurrences of supplied fields and shows previous values. Keep retains an existing single value, but rejects duplicate campaign keys. Blank optional fields are preserved unless you explicitly choose removal.
Does a generated URL prove tracking works?+
No. Measurement code, consent, redirects, attribution settings and the receiving system all affect reporting. This tool only assembles and explains a URL.
Can I add UTMs to signed or private links?+
Use an unsigned public landing-page URL. Common signature fields are rejected because query changes can invalidate signatures, and no detector can identify every proprietary scheme.
Are my destination URLs uploaded?+
No. The links are assembled locally and never visited by the tool. Downloads contain the full query values, so review them for private information before sharing.
Related tools
URL Parser
Break a URL into protocol, host, path, and query parameters.
Query String ⇄ JSON
Convert URL query strings to JSON and back.
URL Encode/Decode
Encode or decode URL components, full URLs and form values with correct %20, + and %2B handling.
URL Extractor
Extract HTTP(S) links from text or saved HTML locally, count repeated URLs and export source locations.