Skip to content
100% in your browser. Nothing you paste is uploaded — all processing runs locally. Read more →

UTM Builder

Tag a campaign URL with UTM parameters for any analytics tool that reads the standard 5 fields (Google Analytics, Mixpanel, Amplitude, PostHog). The URL hash holds your template — bookmark or share it.

What UTM tags actually do

UTM tags are query parameters appended to a URL — typically the five fields above. When someone clicks a tagged URL, the analytics JS on your destination page reads those parameters and attributes the visit to the campaign you specified.

Without UTM tags, your analytics tool falls back to referrer- based attribution: it reads the Referer HTTP header to figure out where the visitor came from. Referrer is unreliable — privacy modes strip it, mobile apps don't always send it, and HTTPS-to-HTTP transitions discard it.

UTM tags are durable: they're in the URL itself, so they survive redirects, app-to-web transitions, and most privacy modes (which don't typically strip query params). That's why every campaign handed off between teams should use them.

The naming-convention trap

The five UTM values are case-sensitive in every analytics tool. email, Email, and EMAIL count as three different sources in your reports. The most common cause of "my UTM data is a mess" is a team adopting different conventions over time — spring-launch in one campaign, spring_launch in the next, SpringLaunch after that.

Pick a convention up front and document it. Common one: lowercase + hyphens, no acronyms (twitter not tw). Future you will thank past you for the consistency when you're trying to filter campaign reports six months later.

Common workflows

Related

FAQ

Is anything I enter sent to a server?

No. The form is pure-frontend; the URL it builds is constructed in your browser. The form values are also stored in this page's URL hash so you can bookmark/share a UTM template — but the hash is client-side state, never uploaded.

What are the five standard UTM fields?

utm_source (where the traffic originates — newsletter, twitter, google), utm_medium (channel type — email, social, cpc), utm_campaign (specific campaign name), utm_term (paid-search keyword, optional), utm_content (A/B test variant, optional). Source, medium, and campaign are typically required by your analytics tool to count the visit; term and content are optional.

Should I use spaces, hyphens, or underscores?

Hyphens or underscores. Spaces work but get URL-encoded to %20 in the actual link, which is ugly and harder to debug. The widely-followed convention is lowercase + hyphens for source/medium/campaign (e.g., spring-launch-2026). Some teams prefer underscores. Pick one and stick with it across all your campaigns — analytics tools are case-sensitive, so Email and email count as different sources.

Do these work with Google Analytics 4?

Yes. GA4 reads the same five UTM parameters. If you're using GA4's source/medium/campaign reports, the parameters map directly. GA4 also accepts utm_id for tying a campaign back to a Google Ads campaign ID — that's an extra parameter we don't include here, since most non-Google-Ads users don't need it.

What happens to my UTM template if I close the tab?

The form values live in the URL hash, so closing the tab loses them. To preserve a template, copy the share URL from the 'Share this UTM template' section — it includes all the form values. Bookmark it or paste it into your team docs.

Why does the URL output sometimes look different from what I typed?

The tool uses the browser's URL API to construct the output, which may rewrite the URL into a canonical form (sort parameters, encode special characters, etc.). The result is functionally identical to what you typed.