# UTM Link Builder

> Add utm_source, utm_medium, utm_campaign and other UTM parameters to a URL. The tool keeps existing parameters and #fragments and encodes values.

- URL: https://generate.now/utm-builder
- Category: Web
- Price: free, no account required
- AI-powered: no (runs in the browser)
- Last updated: 2026-11-11

## What is a UTM builder?

A UTM builder adds campaign parameters such as utm_source, utm_medium and utm_campaign to a link, so that analytics tools can report which email, ad or post a visit came from. The parameters are ordinary query-string values: they do not change the page that opens, only how the visit is labelled in reports.

## How the UTM Link Builder works

The tool builds a campaign URL from a page address and up to six UTM parameters: utm_source, utm_medium, utm_campaign, utm_term, utm_content and utm_id. The address is parsed with the browser's URL API, so parameters that are already there are kept, a UTM parameter that is already there is replaced rather than duplicated, and everything goes before the #fragment. Values are percent-encoded, lower-cased by default, and spaces become underscores, hyphens or %20. Medium presets fill in common values, bulk mode tags up to 200 URLs at once, and links you copy are listed for the rest of the session. The link is built in your browser and is not sent to our server.

## UTM parameters explained

The descriptions are Google's, from the Analytics help page on URL builders, as are the examples where Google gives one. Google says to always use utm_source, utm_medium and utm_campaign when you add parameters. None is technically required, and they can be in any order.

Google lists three more parameters that this tool has no fields for: utm_source_platform, utm_creative_format and utm_marketing_tactic. Google notes that the last two are not currently reported in Analytics. If you type them into the page URL, they are kept.

| Parameter | Google's description | Example |
| --- | --- | --- |
| utm_source | Referrer | google, newsletter4, billboard |
| utm_medium | Marketing medium | cpc, banner, email |
| utm_campaign | Product, slogan, promo code | spring_sale |
| utm_term | Paid keyword | None given |
| utm_content | Use to differentiate creatives | toplink |
| utm_id | Campaign ID, to identify a specific campaign or promotion | None given |

*The six UTM parameters this tool sets*

## utm_medium values and Google Analytics 4 channels

Google Analytics 4 sorts traffic into default channel groups with fixed rules, and most of those rules read utm_medium. A value the rules do not know is reported as Unassigned. The presets in this tool use values the rules recognise, except qr, which has no rule: it is a common convention for printed codes and needs a custom channel group to show up as its own channel.

| utm_medium | Default channel | Rule |
| --- | --- | --- |
| email | Email | Medium is email, e-mail, e_mail or e mail |
| cpc | Paid Search, Paid Social or Paid Other | Medium contains cp, is ppc or retargeting, or starts with paid; the source decides which |
| social | Organic Social | Medium is social, social-network, social-media, sm, or the source is a known social site |
| referral | Referral | Medium is referral, app or link |
| display | Display | Medium is display, banner, expandable, interstitial or cpm |
| affiliate | Affiliates | Medium is affiliate |
| sms | SMS | Medium or source is sms |
| qr | Unassigned | No default rule |

*How GA4's default channel group reads the medium presets*

## When to use the UTM Link Builder

- Tag the links in a newsletter so its visits show up under Email
- Give each ad or social post its own utm_content to compare them
- Tag a URL before turning it into a QR code for print
- Tag a list of landing pages for one campaign in bulk

## UTM Link Builder examples

### https://example.com/pricing + source newsletter, medium email, campaign spring_sale

```
https://example.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=spring_sale
```

The three parameters Google says to always use.

### https://example.com/pricing?plan=pro#faq with the same values

```
https://example.com/pricing?plan=pro&utm_source=newsletter&utm_medium=email&utm_campaign=spring_sale#faq
```

plan=pro is kept, and the UTM parameters go before #faq so the page still scrolls to that section.

### Campaign “50% off + more”, spaces as underscores

```
utm_campaign=50%25_off_%2B_more
```

Characters with a meaning in URLs are percent-encoded, so the value reads back exactly as typed.

### https://example.com/?utm_source=old&x=1 + source new

```
https://example.com/?x=1&utm_source=new
```

A UTM parameter that was already in the URL is replaced, not added a second time. The tool says which one it replaced.

## Frequently asked questions

### Which UTM parameters are required?

None is enforced, but Google's guidance is that "you should always use utm_source, utm_medium, and utm_campaign". The tool builds a link with whatever you fill in and shows a warning while any of those three is empty. utm_term, utm_content and utm_id are optional.

### Are UTM values case-sensitive?

Yes. Google's help page says parameter values are case sensitive, so utm_source=google and utm_source=Google are reported as two sources. That is why this tool lower-cases values by default. Turn the option off to keep capitals; the tool then warns about any value that has them.

### What happens to parameters and fragments already in my URL?

They are kept. Existing query parameters stay first, exactly as written, and the UTM parameters are appended after them with &. A #fragment stays at the very end, because a URL's query string ends at the #. If the URL already has a UTM parameter that you are setting, the old value is replaced.

### How are spaces and special characters handled?

Spaces become underscores by default; you can choose hyphens or keep them, in which case they are written as %20. Everything else goes through encodeURIComponent, which leaves letters, digits and - _ . ! ~ * ' ( ) as they are and percent-encodes the rest, so & becomes %26 and + becomes %2B.

### Does the order of UTM parameters matter?

No. Google says parameters can be added to a URL in any order. This tool writes them as source, medium, campaign, term, content, id.

### Which utm_medium should I use?

Use one that your analytics tool recognises. In Google Analytics 4's default channel group, email maps to Email, cpc to Paid Search, Paid Social or Paid Other depending on the source, social to Organic Social, referral to Referral, display to Display, affiliate to Affiliates and sms to SMS. A medium with no rule, such as qr, is reported as Unassigned.

### Is my link history saved?

No. The list of links from this session is held in the page's memory only. It is not written to storage or sent anywhere, and it is gone when you reload or close the page. Copy what you need before leaving.

### Are my URLs sent to your server?

No. Links are built in the page. The page loads standard page analytics, which record the visit and that Copy or Download was used, not the URL or the values.

## References

- [URL builders: Collect campaign data with custom URLs](https://support.google.com/analytics/answer/10917952): Google Analytics Help. Defines each UTM parameter, says which three to always use, and states that values are case sensitive.
- [Default channel group](https://support.google.com/analytics/answer/9756891): Google Analytics Help. The rules that map utm_medium and utm_source values to GA4 channels.
- [RFC 3986: Uniform Resource Identifier (URI): Generic Syntax](https://www.rfc-editor.org/rfc/rfc3986.html): IETF. Defines the query as running from the first ? to the #, which is why parameters go before the fragment.
- [encodeURIComponent()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent): MDN Web Docs. The function used to encode each value, and the characters it leaves unescaped.

## Related tools

- [QR Code Generator](https://generate.now/qr-code): Make a QR code for a URL, text, a WiFi network or a vCard contact. Download as SVG or PNG up to 2,048 px. Codes are static, with no redirect or expiry.
- [Slug Generator](https://generate.now/slug): Convert a title into a URL slug as you type. Choose hyphen or underscore, case and a maximum length; accents become ASCII. One title per line for bulk.
- [Meta Tags Generator](https://generate.now/meta-tags): Generate the SEO, Open Graph and Twitter Card meta tags for a page, with a link preview. An AI model can suggest the title and description from a brief.
- [Robots.txt Generator](https://generate.now/robots-txt): Build a robots.txt file with Allow and Disallow rules per crawler, sitemap lines and presets for blocking AI training bots. Copy or download it.

[All 39 tools](https://generate.now/tools)
