Building Campaign URLs with UTM Parameters
Enter your destination URL and campaign details and this tool assembles a properly encoded tracking URL. Empty optional fields are omitted rather than left as empty parameters, existing query strings are preserved, and UTM tags already on the URL are replaced rather than duplicated. There is a bulk mode for generating many campaign URLs at once, and your recent campaigns are saved in your browser so you can reuse them.
UTM parameters are tags appended to a URL that tell your analytics platform where a visitor came from. Without them, a click from your newsletter and a click from a forum post can both land in analytics as the same undifferentiated referral — or as direct traffic with no source at all.
At a glance
- Three parameters do the real work: source, medium and campaign.
- Values are case-sensitive — Facebook and facebook become two separate rows in your reports.
- Existing query strings are preserved, and UTM tags already on the URL are replaced rather than duplicated.
- Bulk mode generates many campaign URLs at once and exports them as CSV.
How to use this tool
Paste your destination URL
The page you want people to land on. If you type a bare domain, https:// is added for you; anything that is not a web address is rejected rather than silently mangled.
Fill in source, medium and campaign
These three are what Google Analytics groups traffic by. Leaving one out leaves a gap in your reports that cannot be filled in afterwards.
Set your formatting rules once
Lowercase everything and pick one separator. Consistency matters more than which convention you choose, because analytics treats every variation as a different channel.
Use bulk mode for a campaign
When you are tagging the same link for ten placements, the bulk tab generates them together and exports a CSV, which is far less error-prone than editing URLs by hand.
Copy the URL, or reuse one from history
Your recent campaigns are saved in your browser. Reuse loads one back into the builder so you can change a single field rather than starting again.
The five parameters
Three are effectively required for a campaign to report properly, and two are optional refinements. Google Analytics groups traffic using the first three, so omitting one leaves a gap in your reports.
- utm_source — where the traffic came from: newsletter, facebook, partner-site. The specific origin.
- utm_medium — the channel type: email, cpc, social, referral. The category the source belongs to.
- utm_campaign — which campaign this is part of: spring_sale, product_launch_2026.
- utm_term — optional, traditionally the paid keyword being bid on.
- utm_content — optional, used to differentiate two links in the same email or two ad variants.
Why consistency matters more than the values
UTM values are case-sensitive and treated as literal strings. Facebook, facebook and FaceBook produce three separate rows in your reports, splitting one channel's data across three lines that you then have to mentally recombine every time you look at a report.
The same applies to synonyms. If half your team tags email campaigns as medium=email and the other half uses medium=newsletter, your email channel is permanently split in two. Neither value is wrong; the inconsistency is.
Pick conventions before you start and write them down. Lowercase everything, use hyphens or underscores consistently, and agree a fixed vocabulary for medium in particular — email, cpc, social, referral, affiliate covers most cases.
Where to use UTMs and where not to
UTMs belong on links you control that point at your site from outside it: email campaigns, paid ads, social posts, QR codes, partner placements, and offline campaigns using a short redirect URL.
They do not belong on internal links between your own pages. Tagging an internal link restarts the visitor's session attribution, so a user who arrived from organic search and then clicks an internally tagged banner is re-attributed to that banner — destroying the record of where they actually came from.
If you need to measure internal link performance, use event tracking rather than UTMs. It measures the click without overwriting the acquisition source.
The SEO side effect people forget
Every distinct UTM combination creates a distinct URL. If those URLs get crawled and indexed, search engines can end up with many copies of the same page differing only by tracking parameters, splitting ranking signals across them.
The standard protection is a self-referencing canonical tag on every page pointing at the clean URL. The Canonical Tag Generator produces the tag; with it in place, a tagged URL explicitly declares the clean version as the one to index.
The related problem is UTM-tagged URLs leaking into places they should never be — sitemaps, internal links, or backlinks you requested. Before publishing a URL anywhere permanent, strip the tracking with the URL Cleaner.
A workable tagging convention
- Lowercase everything, always. It removes an entire class of duplicate-row problems.
- Use hyphens rather than spaces; a space becomes %20 and makes URLs harder to read and share.
- Keep medium to a short fixed list agreed across the team.
- Make campaign names descriptive and dated where relevant: spring-sale-2026 rather than sale.
- Use utm_content to distinguish placements within one campaign — header-link versus footer-link.
- Keep a shared spreadsheet of tagged URLs so nobody invents a new variant for an existing campaign.
Building many campaign URLs at once
The Bulk Builder tab handles a whole campaign set in one table — one row per destination, with add, duplicate and remove controls. Duplicating a row is the fastest way to build variants, since most rows in a real campaign differ only in utm_content or the landing page.
Because every row shares the same formatting settings, the whole set comes out consistent, which is the thing most likely to go wrong when several people tag URLs by hand. Copy all the generated URLs at once, or export the table as CSV to hand to whoever is scheduling the campaign.
Your recent campaigns are saved in your browser's local storage — up to 50 of them — so you can reuse a previous configuration rather than retyping it. Nothing is sent to a server and there is no account, which also means the history is per-browser rather than shared across devices.
Checking a URL you were given
If you inherit a tagged link and want to see what is on it, the URL Parameter Extractor breaks any URL's query string into a readable table — useful for auditing what a partner or agency has been sending.
For a whole list of campaign URLs, the Bulk URL Formatter normalises them and the URL Deduplicator removes entries that only differ trivially, which is how you spot the same campaign tagged three slightly different ways.
Frequently asked questions
Do UTM parameters hurt SEO?
Not if handled properly. The risk is tagged URLs being indexed as duplicates of the clean page. A self-referencing canonical tag on every page solves it, and you should avoid putting tagged URLs in sitemaps or internal links.
Are UTM parameters case-sensitive?
Yes. Facebook and facebook are recorded as different sources and appear as separate rows in your reports. Lowercase everything as a rule to avoid splitting one channel's data.
Which UTM parameters are required?
Source, medium and campaign are the three that matter for reporting; omitting any of them leaves a gap. Term and content are optional refinements for paid keywords and for distinguishing placements within a campaign.
Should I use UTMs on internal links?
No. Tagging an internal link restarts session attribution, so a visitor who came from organic search gets re-attributed to the internal banner they clicked. Use event tracking for internal link measurement instead.
Can I add UTMs to a URL that already has parameters?
Yes. This tool preserves existing query parameters and appends the UTM values correctly, so a URL like /page?id=42 keeps its id parameter.