UTM Builder
Build a UTM-tagged campaign URL - free, instant.
What this tool does
Enter your URL and campaign source, medium and name, and get back a correctly formatted UTM-tagged link ready to paste anywhere - updated live as you type, with a warning if any parameter contains a space.
Builds a URL with the five standard UTM parameters: source, medium, campaign, term and content.
Correctly appends the parameters whether or not the base URL already has a query string.
Flags a space in any parameter value - it gets silently percent-encoded rather than rejected, which is valid but usually reads worse in an analytics report than an underscore or hyphen.
Detects whether the destination URL already has a query string and appends the UTM parameters with '&' instead of '?' when it does, so the result is never a broken URL with two question marks.
Encodes every parameter value with encodeURIComponent, so characters like '&', '#' or '+' inside a campaign name can't accidentally break the resulting query string.
How to use it
- Enter your destination URL.
- Fill in source, medium and campaign name (term and content are optional).
- Copy the generated URL.
Why use this builder
Untagged links make campaign results hard to separate in analytics, and typed parameters drift in spelling. A builder produces consistent, correctly joined URLs.
Why we built it
We built the UTM builder to flag spaces in any parameter before you ship the link, since they get silently percent-encoded. Break links apart with the URL parser and encode values with the URL encoder and decoder.
Handy alongside this: the SEO Slug Generator.
Who this tool is for
- Marketers tracking campaigns
- Social media managers
- Agencies tagging links
When to use it
- Tagging email, ad and social links.
- Keeping campaign names consistent.
- Adding parameters to URLs with queries.
- Sharing tagged links.
Why the space warning matters
A URL with a raw space in it isn't rejected - it's just quietly encoded.
Typing 'spring sale' into a campaign name field doesn't cause an error - the space is percent-encoded to %20 automatically, and the link still works. But it shows up as 'spring%20sale' in some analytics dashboards and reports, which reads worse and can make campaigns harder to scan at a glance. Catching this before the link goes out, rather than after it's already been shared in a newsletter or an ad, is the point of the warning.
What each UTM parameter is actually for
Five parameters, each answering a different question about where traffic came from.
| Parameter | What it identifies |
|---|---|
| utm_source | Where the traffic comes from, e.g. 'newsletter' or 'facebook' |
| utm_medium | The marketing channel type, e.g. 'email' or 'cpc' |
| utm_campaign | The specific campaign name, e.g. 'spring_sale' |
| utm_term | Paid search keyword, when relevant |
| utm_content | Distinguishes between multiple links in the same campaign, e.g. two different buttons |
What you give it, and what you get back
| Item | Details |
|---|---|
| Input | A URL and source, medium, campaign, term and content. |
| Output | A tagged URL. |
| Notes | Handles existing queries. |
Issues you may run into
| What you see | Why it happens | What to do |
|---|---|---|
| Campaigns split in reports | Names differ in case or spelling. | Use consistent lowercase names. |
| Link breaks | A symbol was not encoded. | The builder encodes values. |
| No data appears | Analytics is not set to read UTM. | Check your analytics setup. |
Assumptions and limitations
- This builds the URL - it doesn't validate that your analytics platform is actually configured to read utm_ parameters, though every major platform (Google Analytics, most others) does by default.
- There's no built-in naming convention enforcement beyond the space warning - consistent naming across a team is still something you have to agree on separately.
Frequently asked questions
How do I create a UTM tracking link for free?
Enter your URL and campaign details, and the tagged link is built instantly - no signup needed.
What's the difference between utm_source and utm_medium?
utm_source identifies where the traffic comes from (like 'newsletter' or 'facebook'), while utm_medium identifies the marketing channel type (like 'email' or 'cpc') - both are typically used together.
Are utm_term and utm_content required?
No - they're optional, typically used for paid search keywords (term) or distinguishing between multiple links in the same campaign (content).
Why does it warn me about spaces?
A space gets silently percent-encoded rather than rejected, which works but often reads worse in analytics reports than an underscore or hyphen.
Is my data sent anywhere?
No. The URL is built entirely in your browser.
What happens if my destination URL already has a query string?
The tool detects the existing '?' and appends the UTM parameters with '&' instead, so you get one valid query string rather than a broken URL with two question marks.
Are special characters in a campaign name handled safely?
Yes - every parameter value is percent-encoded with encodeURIComponent, so characters like '&', '#' or '+' inside a value can't accidentally break the URL's query string or get misread as a separate parameter.