ToollyX
no sign-up · instant · free

UTM Builder

Build clean, consistent campaign URLs for Google Analytics — with automatic lowercase and hyphen cleanup, quick presets for common channels, and a QR code for print or offline campaigns.

Parameters6 Supported
CleanupAutomatic
Sign-upNever
CostFree
728 × 90 — Leaderboard Ad
Build Your Campaign URL
Quick Presets
Optional
Build Settings
Lowercase All Values
Prevents duplicate campaigns in your analytics — 'Facebook' and 'facebook' are counted separately.
Replace Spaces with Hyphens
Keeps the URL clean instead of encoding spaces as %20 or +.
Show QR Code
Generate a scannable QR code for the final URL — handy for print or offline campaigns.
Your Campaign URL
Enter a website URL above to build your campaign link…
728 × 90 — Leaderboard Ad

How to Build a Campaign URL

1Paste in your website URL, then pick a quick preset for common channels like Google Ads, Facebook Ads or Email Newsletter, or fill in Source and Medium yourself.
2Name your campaign, and add Term or Content only if you need to track a specific keyword or tell two versions of the same link apart.
3Watch the URL build live below, with warnings if a required field is missing or values still have mixed case.
4Copy & Save, and optionally turn on Show QR Code for a scannable version ready for print or a business card.

Features

Automatic cleanup
Lowercases values and replaces spaces with hyphens as you type, preventing common analytics data-splitting mistakes.
Smart re-tagging
Pasting in an already-tagged URL replaces its old UTM values instead of duplicating them.
Channel presets
One click fills in Source and Medium for Google Ads, Facebook Ads, Email, LinkedIn and more.
Live validation
Flags missing required fields and mixed-case values before you copy the link, not after it's already live.
QR code generation
Turn any campaign URL into a scannable QR code for print, packaging or in-person events.
Campaign history
Your last five built URLs are saved locally so you can reuse or tweak a past campaign in one click.
Preserves other parameters
Existing non-UTM query parameters on the URL are kept intact, not stripped out.
No signup, no tracking
Nothing about your campaigns or URLs is logged on a ToollyX server.

The Traffic That Looks "Direct" But Isn't

Open any analytics dashboard and there's almost always a suspiciously large "(direct)" traffic bucket — visits with no recorded source at all. Some of that really is someone typing your URL from memory. A lot of it is a newsletter link, a social post, or a partner site that never got tagged in the first place, so the platform had nothing to attribute it to and shrugged. A UTM tag is the one thing that turns a mystery visit into a specific, attributable channel.

Proving a Channel Is Actually Working

Without consistent tagging, "how did the spring email campaign perform" is a question nobody can answer cleanly — the clicks exist in the data somewhere, just scattered under direct or referral traffic instead of grouped under one campaign name.

Comparing the Same Promotion Across Channels

Run one campaign across email, paid social and an influencer post, and giving all three the same utm_campaign value — while letting source and medium differ — is what makes a single filtered report showing all three side by side possible at all, instead of three disconnected numbers in three different places.

Who Actually Reaches for This

  • Marketers — tagging every outbound email, social post and ad consistently before a campaign goes live
  • Agencies — keeping tagging conventions identical across multiple client accounts
  • Solo founders and small teams — finally answering "which channel actually brought in that signup" with real data instead of a guess
  • Event and print teams — turning a campaign URL into a QR code for a flyer, poster or business card
  • Anyone running paid ads — confirming ad platform click data lines up with what actually lands in analytics

What Each Parameter Is Actually For

utm_source names the specific place a click came from — google, newsletter, a partner site's exact domain. utm_medium categorizes that source into a broader channel type — cpc, email, social, referral. utm_campaign is the name of the specific push this link belongs to — a product launch, a seasonal sale, a single email send. utm_term and utm_content exist for finer detail: a paid search keyword, or telling two links in the same email apart. None of the optional fields are required for a campaign to be trackable — source, medium and campaign alone already unlock proper attribution.

728 × 90 — Leaderboard Ad

Why the Last Five Campaigns Are Saved, Not Just the Current One

A single-use tool that forgets everything the moment you leave the page works fine for a one-off link, but campaign tagging is rarely a one-off — the same product launch usually needs five or six differently-tagged URLs across email, paid social, an influencer post and a QR code, all built in the same sitting. Keeping the last five built campaigns saved locally means the second and third link in that batch start from a real, already-typed campaign name and source instead of retyping the same values with a slightly different medium each time — which is exactly the kind of small inconsistency that leads to the fragmented-data problem described above.

Because that history lives only in your own browser's local storage, it's there for picking up a campaign you were building yesterday, but it won't follow you to a teammate's machine or a different browser — a shared tagging convention still needs to be agreed on separately, not assumed from whatever one person's saved history happens to contain.

Keeping Your Data Clean

  • Agree on a naming convention before a team starts tagging links. Whether it's underscores or hyphens, all-lowercase or not, consistency across everyone doing the tagging matters more than which exact convention gets picked.
  • Lower the TTL on this problem by turning cleanup on by default. Leave Lowercase All Values and Replace Spaces with Hyphens switched on unless you have a specific reason not to — they prevent the most common source of fragmented campaign data.
  • Don't tag internal links. Save UTM parameters for links leaving your site toward an external channel, not navigation between your own pages.
  • Reuse the campaign name, vary the source and medium. That's what makes one campaign comparable across every channel it ran on.
  • Check the built URL before sending it anywhere. This tool preserves any existing query parameters on a URL, but it's still worth a glance to confirm nothing important got dropped.
Verified by ToollyX Team · Last updated July 2026

The Mistake That Splits Your Own Data

The most common way UTM tagging goes wrong isn't a missing tag — it's an inconsistent one. Two people on the same marketing team tag the identical newsletter send as "Newsletter" and "newsletter," and instead of one clean row in the report, that campaign now shows up as two separate, smaller-looking ones, neither of which reflects its real total performance. The same thing happens when one person's shorthand for a campaign drifts slightly from another's — "spring-sale" versus "spring_sale" — weeks before anyone notices the numbers don't add up. None of this shows up as an error anywhere; it just quietly fragments a campaign's data until someone goes looking for why the totals feel low.

Agencies running the same tagging convention across several client accounts hit this even harder, since a convention that drifts on one account rarely gets caught until a report is being pulled for a client call. Building every link through the same tool, with the same lowercase-and-hyphen cleanup applied automatically, is a simpler fix than trying to enforce a style guide by memory across a whole team.

Where Tagging Alone Won't Save You

UTM parameters only track clicks that actually carry them — a link shared without the tag, copied and reposted elsewhere, or stripped by an overly aggressive email client's link-cleaning feature will still land as untracked traffic no matter how carefully the original link was built. And while this tool preserves whatever query parameters already exist on a URL, it can't know whether those existing parameters matter to your site's own functionality — always confirm nothing critical was riding on a parameter this tool doesn't recognize as UTM before sending a tagged link out widely. It's also worth running the finished link through our Open Graph Preview Tool before a big send — appending UTM parameters shouldn't change how a link's title, image or description render when shared, but it's a quick check that costs nothing and catches the rare case where it does.

Frequently Asked Questions

728 × 90 — Leaderboard Ad