UTM Builder

Add utm_source, utm_medium, utm_campaign and the optional tags to any web address and copy a correctly encoded campaign link. It is free, updates as you type, and nothing is sent to a server.

UTM BuilderPrivate · runs on your device
Generated campaign URL

How to use the UTM builder

Each field becomes one parameter on the end of your address. The link updates as you type.

  1. Enter the page address in Website URL. If you leave out https:// the tool adds it, and an unusable address shows "Enter a valid website URL".
  2. Fill in the three starred fields: Campaign source (utm_source), such as newsletter; Campaign medium (utm_medium), such as email; and Campaign name (utm_campaign), such as spring_sale.
  3. Add the optional Campaign ID (utm_id), Campaign term (utm_term) for paid keywords and Campaign content (utm_content) to tell two links apart.
  4. Take the link from Generated campaign URL with Copy, or use Download .txt.

The note under the result says "All required parameters set" or lists which of source, medium and campaign are missing. It is a reminder only, and the link is still built.

What the tool does to your address

For the page https://www.example.com/sale with source newsletter, medium email, campaign spring_sale and content header_button, the output is:

https://www.example.com/sale?utm_source=newsletter&utm_medium=email&utm_campaign=spring_sale&utm_content=header_button

The parameters always appear in the order source, medium, campaign, term, content, id. Values are trimmed and percent-encoded, so a space becomes a plus sign and an ampersand becomes %26. The tool does not change case, so write values in lowercase yourself. Any query string already on the address is kept, but it is re-encoded in the process. If the address already holds a utm parameter that you fill in, the new value replaces it, and if you leave a field blank the matching parameter is removed. A bare domain gains a trailing slash, and a # fragment stays at the very end.

As a second example, the address https://example.com/shop?id=5#top with the source typed as news letter, medium email and campaign Spring&Sale becomes https://example.com/shop?id=5&utm_source=news+letter&utm_medium=email&utm_campaign=Spring%26Sale#top. That output is correct, but it also shows why spaces and capitals are worth avoiding: your report would list the source as news letter and keep the capital S.

Naming rules that keep reports clean

Analytics tools read the tags when the page loads. In Google Analytics 4 they feed the session source, medium and campaign dimensions, with term and content appearing as manual term and manual ad content. Values are case sensitive, so Email and email show as two entries. GA4 uses source and medium to sort sessions into default channels, so common values such as email, cpc and social are usually safer than invented ones; check Google's channel definitions for the exact rules.

  • Use lowercase everywhere and one separator, such as an underscore, with no spaces.
  • Keep a short fixed list of sources and mediums and reuse them exactly.
  • Put the year or version in the campaign name, such as black_friday_2026.
  • Use utm_content for variants inside one campaign, such as two buttons in the same email.
  • Never tag links between pages of your own site, since the tag replaces the visitor's original source.
  • If Google Ads auto-tagging is on, check how it interacts with manual tags before adding them to ads.

To print a tagged link as a code, use the QR code generator. For readable page addresses, try the URL slug generator, for page titles and descriptions the meta tag generator, and for encoding stray characters the URL encoder. Nothing you type is uploaded.

Finally, keep a record. A shared sheet with the final link, the campaign name, the channel and the launch date means that next quarter nobody has to guess what promo2 meant. The builder does not store anything, so copy each link into that sheet as you make it.

Quick answers

Frequently asked questions

The questions people ask most, answered in plain words.

What are UTM parameters?

UTM parameters are tags added to the end of a link, such as utm_source, utm_medium, utm_campaign, utm_term and utm_content. Analytics tools read them when the page loads and report where each visit came from, so you can compare newsletters, social posts and ads. This tool also supports utm_id.

Which UTM fields are required?

The tool marks source, medium and campaign with an asterisk, and those three are the usual minimum for useful reports. It still builds the link if they are blank, and just notes what is missing. Term, content and ID are optional extras for keywords, link variants and campaign imports.

Will it keep the query string already on my link?

Yes. Existing parameters stay on the address and the UTM tags are added after them, although the whole query is re-encoded, so spaces may appear as plus signs. If the address already has a utm tag that you fill in, the new value replaces it.

Does the tool lowercase my values?

No. It trims spaces and percent-encodes special characters but keeps your capitals. Because analytics reports treat Email and email as different values, type everything in lowercase yourself and agree a naming list with your team before you tag many links.

Do UTM tags affect SEO?

Not directly, but tagged addresses can create extra versions of a page if they are crawled or shared. Use tags on links you place in emails, ads and posts rather than in your own navigation, and keep a canonical tag on the page pointing to the clean address.