---
title: "UTM Builder: Tag Campaign Links for Analytics"
url: "https://lookvalid.com/tools/utm-builder.md"
canonical_url: "https://lookvalid.com/tools/utm-builder"
last_updated: "2026-10-19"
type: "tool"
summary: "Free UTM builder for web links. Add source, medium, campaign, term, content and ID tags, pick a channel preset and copy the finished link."
related: ["https://lookvalid.com/docs/api/website-scraper.md"]
---

# UTM Builder: Tag Campaign Links for Analytics

Free UTM builder for web links. Add source, medium, campaign, term, content and ID tags, pick a channel preset and copy the finished link.

A UTM tag is a short label added to the end of a link so your analytics can tell which campaign sent each visit. Paste the page address, fill in the tags or pick a channel preset, and copy the finished link.

## Facts

- Free, no account needed. The tagged link is assembled inside your browser. No input leaves it, none is saved, and the page you tag is never opened.
- Related API product: [website-scraper](https://lookvalid.com/docs/api/website-scraper.md), 10 credits through the API.

## How it works

1. Paste the full address of the page you want to send people to, starting with http:// or https://.
2. Pick a channel preset or type your own source, medium and campaign. Leave a field empty to skip it.
3. Copy the finished link. It keeps your path, query and fragment, and puts the new tags before the fragment.

## Example result

Address https://example.com/pricing?utm_source=old&ref=nav#plans, source Newsletter, medium email, campaign Spring Sale, content hero button, lowercase on Captured 2026-10-19.

- Tagged link: https://example.com/pricing?ref=nav&utm_source=newsletter&utm_medium=email&utm_campaign=spring%20sale&utm_content=hero%20button#plans
- Length: 133 characters
- Replaced: utm_source (the old value was removed before the new one was added)
- Notes: utm_campaign and utm_content have spaces, written as %20

## What each tag answers

Source says who sent the visit, medium says what kind of channel it was, and campaign says which promotion it belonged to. Google Analytics asks you to always set those three together, and treats term, content and the campaign ID as optional extras.

Use term to record the paid keyword, content to tell two links in the same message apart, and the campaign ID to line a link up with campaign data you import.

## How the link is written

Your address is kept as you typed it. The tags are added to the end of the query string, joined with an ampersand, and always before a fragment, because anything after the hash sign is never sent to the server.

If the address already has a tag with the same name, the old one is removed and the tool tells you, so the report never sees two values for one tag. Tags with other names are left alone.

Values are percent-encoded, so a space is written as %20 and accented or non-Latin text is turned into its encoded form. Empty fields are skipped, so you never get a tag with nothing after the equals sign.

## Keep your naming consistent

Google Analytics treats tag values as case sensitive, so Meta and meta are counted as two different sources, and SpringSale and Spring-Sale as two campaigns. The lowercase switch is on by default for source, medium and campaign for that reason. Pick one spelling for each campaign and reuse it everywhere.

Do not add tags to links that stay on your own site. A tag on an internal link can replace the original source of the visit in your reports. Very long links are worth shortening too: some ad platforms and email tools cut or refuse links past about 2,000 characters.

## What each UTM tag answers

| Tag | Name in the link | Question it answers | Example value | Set it |
| --- | --- | --- | --- | --- |
| Source | utm_source | Where did the visit come from? | newsletter, google, linkedin | Recommended |
| Medium | utm_medium | What kind of channel was it? | email, cpc, paid-social | Recommended |
| Campaign | utm_campaign | Which campaign or promotion was it part of? | spring-sale | Recommended |
| Term | utm_term | Which paid keyword triggered the ad? | running-shoes | Optional |
| Content | utm_content | Which creative or link was clicked? | header-button | Optional |
| Campaign ID | utm_id | Which imported campaign record does this match? | abc.123 | Optional |

## Sources

- [Google Analytics Help: URL builders and campaign parameters](https://support.google.com/analytics/answer/10917952), read 2026-10-19

## Questions

### Which UTM tags do I need?

Set source, medium and campaign every time. Google Analytics asks for all three together. Term, content and the campaign ID are optional and help only when you run paid keywords, several links in one message, or imported campaign data.

### Does the order of the tags matter?

No. Tags can appear in any order after the question mark. This tool writes them in a fixed order, source, medium, campaign, term, content, ID, so links from one team look alike.

### Why does the tool lowercase my values?

Analytics reports treat Meta and meta as different values. Lowercase source, medium and campaign keep one campaign from splitting into several rows. Turn the switch off if you need capital letters.

### What happens if my link already has a utm tag?

A tag with the same name as one you are setting is removed first, and the tool lists it, so only your new value remains. Tags you are not setting are left in place and flagged so you can check they still agree.

### Why are only http and https links accepted?

Campaign tags belong on web addresses. Addresses such as javascript:, data: or mailto:, and relative paths such as /pricing, are refused with a message rather than turned into a link.

### Where do the tags go when my link has a #section?

Before the hash. The fragment stays at the very end, exactly as you typed it, because browsers never send it to the server and analytics would not see tags placed after it.

## Related

- [Website Scraper reference](https://lookvalid.com/docs/api/website-scraper.md)
