Home » Dev Tools » UTM Builder

Free tool

UTM Builder icon

UTM Builder

Tag your campaign links so analytics can tell where the traffic came from. Build a whole campaign at once and take the set out as a CSV.

Use this free utm builder to tag your campaign links, so your analytics can tell you which channel actually sent the visitor. Fill in where the link goes and the three parameters every analytics tool groups by, and the tagged URL appears as you type. Start from a channel if you would rather not remember whether LinkedIn is social or referral.

One campaign usually runs in five or six places at once, so this builds a whole set rather than one link at a time: add each channel to the list, then copy them all or take the lot as a CSV. Nothing is uploaded, and your destination URLs and campaign names never leave the tab. Putting a link on something printed? Feed the result into the QR code generator.

1. Where the link should go
The page the visitor lands on. Paste it exactly as it is, including any parameters it already carries.
2. Start from a channel

A preset only fills source and medium. Everything else is yours, and you can edit either afterwards.

3. The campaign parameters
Where the traffic comes from: a site, a platform, a newsletter name.
How they arrived: cpc, email, social, referral, qr, print.
The name you will look for in the report. Keep it identical across every channel.
A campaign ID. GA4 uses this to join paid ad cost data to the campaign.
The paid keyword. Mostly for manual search campaigns.
Which link it was, when one page has several. This is how you A/B two buttons.
Tidying
Your tagged URL

Put in a destination URL and the three required parameters.

4. Your campaign list

One campaign usually runs across several channels. Add each tagged link here, then take the whole set out at once.

How to build a UTM link

Five steps, no account and nothing to install.

  1. Paste the destination URL. Exactly as it is, including any parameters or any #section it already carries. Those are kept, and the campaign parameters are placed where analytics can actually read them.
  2. Start from a channel. Twelve of them, from Facebook and LinkedIn to QR code and print. A preset only fills source and medium, and you can edit either afterwards.
  3. Name the campaign. Use the same name everywhere, because that is the row you will be looking for in the report. Source, medium and campaign are the three every analytics tool groups by, so all three are required here.
  4. Add the optional ones if you need them. utm_content is how you tell two links on the same page apart, which is what makes an A/B test readable. utm_id ties the campaign to imported ad cost. utm_term carries a paid keyword.
  5. Add each channel to the list, then take the set out. Copy one link, copy them all, or download a CSV with every parameter in its own column to drop into a campaign sheet.

More free tools

Built for our own work, free for yours. No sign-up on any of them.

Font Clamp
Fluid clamp() for font size and its matching line height, across a whole type scale.
Email Signature Generator icon
Email Signature Generator
Make a professional email signature that holds its shape in Gmail, Outlook and Apple Mail. Fill in your details, pick a layout, copy it and paste it in.
QR Code Generator
Generate styled QR codes with custom colors, dot styles, and logos.
Schema Markup Generator
Build valid JSON-LD for a local business, service, FAQ, article or breadcrumb trail, with every property Google treats as required checked before you paste it.
Meta Tag Preview
See how your page will look as a Google result and as a Facebook, X or LinkedIn card, then copy the tags. Measured by pixel width, which is what actually gets cut.
Color Contrast Checker
Check any two colors against the WCAG contrast rules, get the nearest shade that passes, and convert between HEX, RGB and HSL.
Case Converter
Switch text between sentence case, title case, camelCase, snake_case, and more.
Image Resizer
Resize images to any width, height or preset size, crop to fit, and convert the format. Batch, and nothing is uploaded.
PDF Compressor
Shrink PDF file sizes right in your browser. Batch upload and ZIP download supported.
Merge PDF
Join several PDFs into one file, in the order you choose. Nothing is uploaded and no quality is lost.
Split PDF
Split a PDF into separate files, or pull out only the pages you need. Pick them from thumbnails or type ranges.
Favicon Generator
Generate a complete favicon package, download as ZIP with HTML snippet.
Image Converter
Convert images to WebP, PNG, or JPG. Batch upload and download as a ZIP.

What people tag campaign links for

Almost always the same question: which of the things we did actually brought anyone in.

Launching one campaign across six channels

The same offer goes out on email, three social accounts, a paid ad and an affiliate. Tag each one here, add it to the list, and you get a set that all reports under a single campaign name.

Finding out which post actually worked

Two links to the same landing page tell you nothing apart. Give each one a different utm_content and the report separates them, which is the whole mechanism behind any readable A/B test.

Putting a link on something printed

A poster, a business card or a van has no referrer at all, so without tagging that traffic lands in direct and is invisible. A tagged link behind a QR code is the only way print gets credit.

Proving the newsletter is worth writing

Email clicks often arrive as direct traffic because the referrer is stripped. Tagging turns “we think the newsletter works” into a number somebody can act on.

Handing links to an influencer or affiliate

Give each partner their own utm_source and the reporting settles the question of who sent what before anyone has to argue about it.

Keeping a campaign sheet that matches reality

Download the CSV and every link sits beside the parameters it was built from. Six months later that file is the only record of what a campaign name actually meant.

Frequently asked questions

What the three required parameters mean, why case matters, and the one place you should not use them.

What do source, medium and campaign actually mean?

Source is WHERE the click came from, as a name: google, facebook, newsletter, a partner site. Medium is HOW it arrived, as a category: cpc, email, social, referral, affiliate, offline. Campaign is WHICH effort it belongs to, and it is the name you will scan the report for. The useful test is that two different sources should often share a medium. Twitter and LinkedIn are both social. If you find yourself putting the same word in both boxes, one of them is wrong.

Because these values are case sensitive in every analytics tool, and almost nobody expects that. Facebook and facebook are two separate rows, so one campaign tagged by two people on two days reports as two campaigns, each with half the numbers. It is the single most common way a set of tags quietly ruins its own report. Lowercasing everything makes that impossible, which is why the switch is on. You can turn it off, and if you do you are warned when capitals are present.

Yes, and this is the case worth knowing about. The parameters have to go BEFORE the #, because everything after it is a fragment that the browser never sends to the server and analytics therefore never sees. Adding them on the end by hand produces a link that works perfectly for the visitor and records absolutely nothing, so the problem is invisible until the campaign is over and the report is empty. This builder places them correctly and tells you it has.

You can, but it is almost always a mistake. In GA4 a tagged link starts a NEW session and overwrites the original traffic source, so a visitor who arrived from a paid ad and then clicked your tagged internal banner gets recorded as having come from the banner. The ad loses the credit for everything that follows. Use utm parameters on links pointing INTO your site from somewhere else. For tracking what people click once they are already on the site, use events instead.

Both, and everything else. These parameters are not a Google format: they are a plain convention that GA4, Matomo, Plausible, Fathom, Adobe, HubSpot and essentially every analytics product reads. Nothing here is specific to one tool. GA4 does add one of its own, utm_id, which lets it join imported advertising cost to the campaign, so that field is here too.

Usually not. If auto-tagging is switched on, Google Ads appends its own gclid parameter and the campaign data flows across without you doing anything, so hand-tagging is unnecessary and can complicate the reporting. Tag the places nothing tags for you: email, organic social, partners, print and QR codes. The Google Ads preset is here for the cases where auto-tagging is off or unavailable.

No. The link is assembled in your own tab and nothing is uploaded, which matters more here than on most tools: an unannounced campaign name and a landing page that is not public yet are both things you would rather not hand to a third party. The page does send three counters, which are how many links were built, how many were copied or downloaded, and one per visit. Those are numbers only and carry nothing about your URLs.

They are kept. An existing query string is joined with an ampersand rather than a second question mark, and any utm parameter the URL already carried is REPLACED rather than added a second time, so you cannot end up with two values for the same key and an analytics tool picking whichever it likes. Values are percent-encoded too, so an ampersand or a space inside a campaign name does not truncate it.

Want something like this on your own site?

Free tools are a small part of what we do. The rest is websites and digital products for businesses serious about growth, whether you are launching, scaling or transforming.