UTM Naming Convention Builder & Free Template

A UTM naming convention keeps your analytics clean by forcing every link to follow the same rules โ€” this builder enforces them for you: it lowercases every value and swaps spaces for the separator you choose, so your source, medium, and campaign taxonomy stays consistent across every campaign and every teammate.

Updated
Loading toolโ€ฆ

Tag campaign links.

How to use the naming convention

  1. Turn on the Clean values toggle and choose your separator โ€” underscore or hyphen โ€” so every value gets lowercased and space-cleaned automatically. This is the rule your whole convention hangs on.
  2. Enter your base URL, then fill in utm_source (the platform, e.g. newsletter), utm_medium (the channel type, e.g. email), and utm_campaign (a lowercase, separator-joined name like spring_sale_2026). Add utm_term or utm_content only if you need them.
  3. Watch the tagged URL update โ€” every value appears lowercased and joined by your separator, so facebook never becomes Facebook and "spring sale" never becomes two campaigns. Copy the finished link.
  4. For a whole campaign, switch to Bulk mode: paste every base URL one per line, apply the same cleaned parameters to all of them, and download the CSV as your team's canonical, convention-compliant link set.
  5. Reuse the same source and medium vocabulary next time โ€” your separator preference is saved on-device, so the convention follows you into the next session and stays consistent across campaigns.
Try next โ†’UTM BuilderThe full builder โ€” platform presets, bulk mode and the naming cleaner.

About the naming convention

The single most expensive UTM mistake has nothing to do with which parameters you use โ€” it is inconsistency. "Facebook" and "facebook" are two different sources to Google Analytics. "email" and "Email" are two different mediums. "spring_sale" and "spring-sale" are two different campaigns. Every time casing or spacing drifts, one real campaign fractures into two or three rows in your reports, and the traffic you actually earned gets split across them so nothing looks as good as it did. A naming convention is the fix, and this page is the enforcer for it. Turn on the Clean values toggle and the builder lowercases every value you type and replaces spaces with your chosen separator before it ever reaches the URL โ€” the rule is applied mechanically, not left to whoever is pasting the link at 5pm on a Friday.

A workable UTM naming convention comes down to a few decisions you make once and never revisit. Pick lowercase for everything, because analytics platforms treat values case-sensitively and humans are wildly inconsistent about capitals. Pick one separator โ€” underscore or hyphen โ€” and use it everywhere; mixing "paid-social" and "paid_social" produces the same split you were trying to avoid. Then fix a small, closed vocabulary for source and medium in particular: source is the platform (facebook, google, newsletter), medium is the channel type (paid_social, cpc, email, organic_social). Campaign, term, and content can be more free-form, but they still benefit from the same lowercase-and-separator hygiene so a filter like "starts with spring" actually catches everything. This builder saves your separator preference on-device, so the convention follows you into the next session without a spreadsheet to consult.

This is one preset of the same in-browser UTM Builder that powers the platform pages โ€” everything runs client-side, nothing is uploaded, and there is no sign-up. Where the sibling pages start you inside a specific channel โ€” the UTM Builder for Facebook loads the facebook / paid_social convention, and the UTM Builder for Email loads newsletter / email โ€” this page is the convention layer that sits under all of them. Draft your taxonomy here with Clean values on, then use Bulk mode to paste a whole batch of base URLs and apply the same tidy parameters to every one at once, copying them all or downloading a CSV to hand to the team as the canonical link set.

Frequently asked questions

What is a UTM naming convention?
A UTM naming convention is a fixed set of rules for how you write utm_source, utm_medium, utm_campaign and the optional utm_term and utm_content values, so every tagged link across your team looks the same. The core rules are: lowercase everything, use one separator (underscore or hyphen) consistently, and keep a small, agreed vocabulary for source and medium. This builder's Clean values toggle enforces the lowercase-and-separator part automatically.
Why do casing and spaces break my analytics?
Google Analytics and most platforms treat UTM values as case-sensitive strings. "Facebook", "facebook", and "FaceBook" become three separate sources, and "spring sale" (with a raw space, which gets encoded as %20) reads differently from "spring_sale". Each variant is its own row in your reports, so one real campaign's traffic gets split across several rows and every version looks smaller than it truly was. Consistent naming keeps a campaign as a single, correctly-sized row.
How does the Clean values toggle enforce the convention?
When Clean values is on, the builder takes each value you type and lowercases it, then replaces spaces with the separator you picked (underscore or hyphen), before appending it to the URL. So typing "Spring Sale" produces spring_sale or spring-sale, and "Facebook" always becomes facebook. It applies the rule mechanically to every value on every link, which is exactly the discipline humans fail at by hand.
Should I use underscores or hyphens in UTM values?
Either works โ€” what matters is that you pick one and never mix them. Underscores are the more common convention for UTM parameters and keep values visually distinct from the hyphens already in your slugs and campaign names. Hyphens are sometimes preferred for readability. The builder lets you choose the separator and then applies it to every value, so the decision only has to be made once.
Is there a UTM naming convention template I can copy?
Yes โ€” the convention itself is the template: source = the platform (facebook, google, newsletter, linkedin); medium = the channel type (paid_social, cpc, email, organic_social); campaign = a lowercase, separator-joined campaign name (spring_sale_2026); term = keyword or audience; content = the specific creative or link position. Set Clean values on, tag one link to establish the pattern, then use Bulk mode to apply it across a whole batch and download the CSV as your shared reference.
How is this different from the platform UTM builder pages?
The platform pages โ€” like the UTM Builder for Facebook and the UTM Builder for Email โ€” preload a channel's source and medium so you can start tagging that channel immediately. This naming-convention page is the layer underneath all of them: it is about the rules every value follows, regardless of channel, and it leans on the Clean values toggle to enforce those rules. Use it to define your taxonomy, then let the platform presets fill in the source and medium.
Can I apply my convention to many links at once?
Yes. Bulk mode lets you paste many base URLs, one per line, apply the same UTM parameters โ€” cleaned to your convention โ€” to all of them, and then copy them all or download a CSV. It is the fastest way to produce a consistent, convention-compliant link set for an entire campaign and share it with a team so nobody hand-types a variant.
Does the tool remember my naming preference?
Your separator preference is saved on-device in your browser, so the convention carries over the next time you open the builder โ€” no account and no spreadsheet needed. Everything runs client-side and nothing you type is uploaded anywhere.