Free UTM Builder

Free UTM builder
build campaign URLs your analytics can actually read

Channel presets, bulk mode and automatic normalization - so one campaign never shows up as three. Free, no sign-up, nothing leaves your browser.

Start from a channel

Where the traffic comes from

Channel type - analytics groups by this

Which campaign this link belongs to

Paid keyword, usually filled in by the ad platform

Which creative or placement was clicked

Non-standard, supported for teams already using it

Your tagged URL

Enter a destination URL to see the result

QR code for this link

Generated in your browser - the URL is never uploaded.

Build a link above and its QR code appears here.

Logo in the centre

Putting your logo inside the code is a paid Revolink feature.

See plans

Your presets

No presets yet. Fill in the fields above and save the combination you keep retyping.

These presets live in this browser only

They survive a refresh, but they do not follow you to another device and your teammates cannot see them. A free Revolink account stores three UTM templates on the server - unlimited on paid plans.

Save presets to an account

This URL is long, and it only tells you where clicks came from

Shorten it with Revolink and you also get click counts, geography, device breakdown - and the UTMs survive the redirect.

Shorten and track

What a UTM-tagged link is made of

UTM parameters are ordinary query parameters bolted onto the end of a URL. They change nothing about the page a visitor lands on - the browser sends them along, and your analytics platform reads them to work out where the visit came from. Everything after the question mark is metadata for you, not instructions for the page.

https://yoursite.com/pricing?utm_source=instagram&utm_medium=social&utm_campaign=spring-sale
ParameterWhat it answers
utm_sourceWhere the traffic comes from - the specific site, app or list.
instagram, newsletter, partner-blog
utm_mediumThe type of channel. This is what analytics groups your traffic by.
cpc, email, social, qr
utm_campaignThe campaign the link belongs to. Without it, every link blurs into one bucket.
spring-sale-2026, product-launch
utm_termPaid keyword. Mostly filled in automatically by ad platforms.
running-shoes
utm_contentWhich creative or placement was clicked. The parameter that makes A/B results readable.
hero-button, footer-link, variant-b
utm_referralNot part of the original Urchin spec, but supported in Revolink for teams that already use it.
yoursite.com

Values that analytics recognizes

utm_source is yours to choose - it is just a name. utm_medium is not: GA4 matches it against a known list to decide which channel group a session belongs to. Invent a medium and the traffic lands in Unassigned, no matter how carefully you tagged everything else.

Channelutm_sourceutm_medium
Google Adsgooglecpc
Facebook / Instagram Adsfacebook / instagrampaid-social
Organic social postinstagram, linkedin, tiktoksocial
Email newsletternewsletteremail
YouTube descriptionyoutubevideo
Printed QR codeprintqr
Partner / affiliatepartner nameaffiliate

Per-channel guides with the quirks that only matter there: Instagram, Facebook Ads, email, YouTube, TikTok, LinkedIn.

Five mistakes that quietly break campaign data

None of these throw an error. The link works, the page loads, the visitor converts - and the number lands in the wrong row of your report. You find out a month later, when the totals stop matching.

Capital letters

GA4 treats utm_source=Facebook and utm_source=facebook as two separate sources. Your campaign quietly reports half its numbers twice. This is the single most common cause of campaign data that does not add up.

Spaces in values

A space becomes %20 or +, and the same campaign shows up under two names depending on which tool encoded it. Use hyphens instead - spring-sale, not spring sale.

utm_medium without utm_source

Analytics needs both to attribute a session. A medium on its own usually lands in Unassigned, which is where campaign data goes to disappear.

Inventing your own medium

GA4 only recognizes a known set of mediums for its default channel grouping. Writing facebook-post instead of social means the traffic never joins the Social channel in reports.

Tagging internal links

Putting UTMs on links between pages of your own site starts a brand new session and overwrites the original source. The visitor who came from your ad suddenly looks like they came from your own footer.

Already have links in the wild?

Paste one into the UTM checker - it flags every one of the problems above, plus double encoding and leftover ad click IDs.

Check a link

A convention beats a good memory

One person tagging links is a habit. Three people tagging links is a data problem. The moment a second marketer joins, spring_sale, spring-sale and SpringSale all start appearing in the same report as separate campaigns.

The fix is a written pattern everyone fills in rather than invents - something like {channel}-{region}-{quarter}. Decide the separator once (hyphens travel better than underscores), keep everything lowercase, and never put a date format in that sorts badly.

Longer read: UTM parameters - best practices for campaign tracking. If your parameters keep vanishing between the click and the landing page, that is a different problem: UTMs and redirects.

Common questions

UTM building, answered

What is a UTM builder and why not just type parameters by hand?

A UTM builder assembles the tracking parameters onto your URL and encodes them correctly. Typing them by hand is where capitalization drift, stray spaces and forgotten parameters come from - and those errors are invisible until the data is already wrong in your reports weeks later.

Is this UTM builder free? Do I need an account?

It is free and there is no account, no sign-up and no email required. Everything runs in your browser - the URLs you build are never sent to us. You only need a Revolink account if you want to shorten the links, track clicks, or sync your presets across devices.

Where are my saved presets stored?

In this browser only, in localStorage. They survive a refresh, but they do not sync to your phone, they are not shared with teammates, and clearing your browser data deletes them. Revolink accounts store UTM templates on the server instead - three of them on the free plan, unlimited on paid plans.

Should utm_source and utm_medium always be lowercase?

Yes, in almost every case. Analytics platforms are case-sensitive, so mixing Facebook and facebook splits one source into two. The builder lowercases values and converts spaces to hyphens by default, and shows you exactly what it changed. You can switch normalization off when a value genuinely needs its case - for example a Facebook Ads dynamic macro like {{campaign.name}}.

What happens to UTM parameters when a link redirects?

It depends on the redirect. A well-behaved 301 or 302 carries the query string through, but many shorteners and redirect scripts drop it, which is how attribution silently breaks between the click and the landing page. Revolink preserves UTM parameters through its redirects.

Can I add custom parameters that are not utm_*?

You can add custom UTM parameters - the builder prefixes them with utm_ automatically. Parameters outside the utm_ namespace are not part of the UTM convention and most analytics tools will ignore them for attribution.

Route Smarter. Convert More.

Stop sending everyone to the same page. Route by location, device, and time - start free, no credit card required.

Start for Free - No Card Required

Free forever Β· No credit card Β· Cancel anytime

Already have links? Import them