Free tool · No signup required

UTM Builder with live preview

Build GA4-compliant UTM links instantly. Live URL preview, per-field validation, and one-click copy — no spreadsheet required.

The page you're sending traffic to — include https://
e.g. google, newsletter, twitter
e.g. cpc, email, social, organic
e.g. spring-launch, brand-q2
Paid keyword — e.g. running+shoes
Differentiate ads — e.g. banner-v1
Live URL Preview
Fill in Website URL, Source, Medium and Campaign to generate your UTM link.
Copied!

GA4 Compliance Note

Recent URLs

Want campaign and channel signals pulled together automatically?

That's Duct — a weekly intelligence brief across your stack, no spreadsheet required.

Get your free weekly brief →
What each UTM parameter means in GA4
utm_source identifies where your traffic comes from — the platform or publisher. Use lowercase, no spaces. Good values: google, newsletter, linkedin, twitter. In GA4, this appears as the "Session source" dimension and is used in all attribution models.
utm_medium describes the marketing channel type. GA4 uses this to assign sessions to default channel groups. Standard values: cpc (Paid Search), email (Email), social (Organic Social), paid-social (Paid Social), display (Display). Non-standard values land sessions in "Unassigned."
utm_campaign identifies the specific campaign. Use lowercase with hyphens — not spaces or underscores. A consistent naming convention matters more than the exact format. Example: saas-pm-trial-q2-2026. Spaces become %20 in the URL, which is harder to read in GA4 reports.
utm_term is for paid keywords — primarily Google Ads. Omit it for non-search campaigns. utm_content differentiates between multiple links in the same ad or email, for example hero-cta vs footer-cta, or banner-v1 vs banner-v2. Useful for A/B testing creative or tracking click position in long emails.
Yes — GA4 treats UTM values as case-sensitive. Google and google appear as two separate sources in your reports. Always use lowercase. This is the most common UTM mistake and the hardest to fix retroactively. This tool warns you when uppercase is detected.
"(not set)" means the parameter wasn't present when the event fired. Common causes: (1) a redirect stripped the parameters before GA4 loaded, (2) the user navigated to a second page before the tracking fired, (3) the link was accessed via a QR code that dropped the parameters. Verify GA4 is firing on the exact landing page and that no redirect removes query strings.

About this tool

This builder constructs standard UTM query parameters and shows a live URL preview so you can catch formatting issues before you paste links into ads, email, or social. Validation nudges you toward GA4-friendly values—lowercase sources and mediums, avoiding reserved tokens, and watching for spaces or mixed case that split your reports.

How UTMs show up in GA4

GA4 reads utm_source, utm_medium, utm_campaign, and optional utm_term / utm_content from the landing-page URL when the session starts. Those values flow into session and traffic-acquisition dimensions. If a redirect strips the query string before the GA tag loads, or if users land on a page where tags fire late, you may see (not set)—the link builder can't fix tracking installation, only the link itself.

Campaign reports are only as clean as your naming convention. This tool encourages consistency (for example lowercase and hyphens) so you don't accidentally create duplicate rows for Google vs google.

Limitations