UTM Builder: Campaign URL Generator
Enter utm_source, utm_medium, utm_campaign and the rest to tag links for ads, newsletters and social posts. Paste one URL per line to tag many at once; existing query parameters and the hash are left intact. To inspect or edit a URL further, try the URL Parser & Query Editor.
🔒 Runs in your browser · Your data is never sent to a server
One URL per line if you have several. http and https URLs are supported.
Source / medium presets
Campaign name presets
History
No history yet. Copied URLs are saved here.
How to use
- Enter your links in "Destination URLs", one per line.
- Pick a preset or fill in utm_source, utm_medium, utm_campaign and the rest.
- Check the "Tagged URLs" and press "Copy". Copied URLs are kept in history.
Notes
- History is stored only in this browser (localStorage) and never sent to a server. Clear it on a shared computer.
- GA4 and similar tools treat parameter values as case-sensitive: Google and google are reported separately, so keep your naming consistent.
- An existing utm_* parameter with the same name is replaced by the new value. A field you leave empty keeps whatever the original URL had.
- Do not put UTM parameters on internal links. Clicking them can start a new session and overwrite the real traffic source. Use them for inbound links only.
Glossary
UTM parameters
Query parameters added to a link to tell analytics which ad or email a visit came from. There are five: utm_source, utm_medium, utm_campaign, utm_term and utm_content.
Source and medium
Source is where traffic comes from (google, newsletter). Medium is the kind of channel (cpc, email, social). Together they decide how a visit is grouped into a channel.
Fragment (hash)
The part of a URL after "#". UTM parameters must go in the query, before the hash.
FAQ
Which UTM parameters are required?
For campaign reports in GA4 you normally set utm_source, utm_medium and utm_campaign together. utm_term (search keyword) and utm_content (ad or link variant) are optional. The tool warns about empty fields, but it will generate a URL as long as at least one value is filled in.
What happens if the URL already has a query or a hash?
The existing query keeps its order and encoding, and the UTM parameters are appended at the end. The hash stays last, so "?a=1#top" becomes "?a=1&utm_source=...#top". Only an existing utm_* parameter with the same name is replaced.
Can I use spaces or non-English text in the values?
Values are percent-encoded, and a space becomes "%20". Still, non-English values are hard to read in reports and easy to misspell, so lowercase letters and underscores are safer. Use "Lowercase all values" to avoid mixed-case duplicates.
Where is the history stored?
Copied URLs are kept in this browser's localStorage, up to 20 entries, and are never sent to a server. If the browser blocks storage, the tool still works without history.
Share this page
