Skip to content
SourceLoop

Free tool

Free UTM Validator

Paste a tagged URL and see every UTM issue: missing parameters, case mismatches, encoded spaces, non-standard mediums, typos, duplicates. Find broken UTMs before they fragment your attribution reports.

URL

Paste a tagged URL to validate

Paste a URL to begin

How it works

Three steps to catch a broken UTM before it fragments your reports

Paste, scan, fix. Runs entirely in your browser, no data leaves your machine.

  1. example.com/p
    ?utm_source=Google
    &utm_medium=cpc
    &utm_campaign=spring sale
    01

    Paste a URL

    Tagged URL from anywhere: an email, an ad, a redirect chain. Schemes optional, the validator handles partial URLs too.

  2. Mixed case in utm_source
    Space in utm_campaign
    utm_medium is standard
    02

    See every issue

    Errors, warnings, and info-level suggestions, each tied to the specific parameter that triggered them. No guessing.

  3. example.com/p
    ?utm_source=google
    &utm_medium=cpc
    &utm_campaign=spring_sale
    03

    Copy the fixed URL

    Auto-fixable issues (case, spaces, duplicates) get cleaned in a recommended URL ready to copy and ship.

What it checks

Six categories of UTM issue, every one of them silent

These bugs do not throw errors. They silently fragment your reports. The validator surfaces them before they hit production.

Best practices

Five rules for UTMs that survive contact with marketing automation

  1. 01

    Lowercase, always

    Pick lowercase and apply it everywhere. Mixed case is the single most common UTM bug and it silently fragments every report it touches.

  2. 02

    Pick utm_medium from a fixed vocabulary

    cpc, email, social, paid_social, referral, organic, display, affiliate, podcast. Stick to that list so GA4 channel grouping works without custom rules.

  3. 03

    Underscores or hyphens, not spaces

    spring_sale or spring-sale, not "spring sale". URL-encoded spaces become %20 and break naming consistency across reports.

  4. 04

    Validate before you publish, not after

    Run every campaign URL through a validator before it goes out. Catching one typo in a Google Ads template can save you weeks of fragmented reporting.

  5. 05

    Document the convention

    Pin a sheet to your team Slack with the agreed-on naming convention. Audit it monthly. UTMs drift fast without a documented standard.

Built by the team behind SourceLoop

You cleaned the UTMs. SourceLoop tells you which campaigns actually drove revenue.

SourceLoop channel attribution dashboard reading clean UTM-tagged campaigns into source, medium, and revenue rollups

Guide

Why UTM bugs are silent and how to keep them out

UTM errors don't throw errors

A misspelled environment variable crashes your build. A syntactically invalid SQL query throws an error. A misspelled UTM does nothing visible. The URL still works, the page still loads, the analytics tool still records the visit. The damage shows up two weeks later when you're trying to roll up a campaign report and discover that "google" and "Google" are two separate sources, your spring_sale campaign is split across three subtle naming variants, and the Q2 number in your dashboard is wrong by 30 percent. Validating UTMs at publish time prevents this entire class of silent bug.

The six bugs that cause 90 percent of report fragmentation

  • Case mismatches: utm_source=Google vs utm_source=google. Two sources to GA4. Easily 60 percent of all UTM bugs.
  • Encoded spaces: utm_campaign=spring%20sale. Looks ugly, breaks naming consistency.
  • Missing utm_source: required by GA4. Without it, the visit gets bucketed as direct.
  • Non-standard utm_medium: GA4 channel grouping has a fixed vocabulary. Custom values bucket to "unassigned".
  • Duplicate parameters: usually caused by redirect chains or marketing automation re-tagging.
  • Typos in source: googel, fackbook, linkdin. Each typo creates a phantom source.

The validator runs each of these checks against your URL and reports them with severity, so you know which to fix before publishing and which are stylistic preferences.

The fixed URL: what gets auto-cleaned

The validator can auto-fix three categories: case (lowercases all values), spaces (replaces %20 with underscores), and duplicates (keeps the last occurrence per UTM key). It does not auto-fix typos in source names because the right replacement depends on intent (was it meant to be "google" or "google_ads" or "ads.google.com"?). It also does not add missing utm_source because there is no way to guess the right value. Both are flagged for manual review.

Why standard utm_medium values matter for GA4

GA4's default channel grouping uses utm_medium to bucket traffic into channels. The mapping is fixed: cpc / ppc / paid_search go to Paid Search; email goes to Email; paid_social / social go to Social; referral goes to Referral; organic goes to Organic Search; display goes to Display; affiliate goes to Affiliate. Custom values like "newsletter" or "paid" land in "(unassigned)" by default, which makes channel rollups inaccurate. You can override this with custom channel rules in GA4, but most accounts do not, and the validator's nudge toward standard mediums saves you that downstream work.

Validating at publish time vs. at audit time

Most teams audit UTMs reactively: the report looks weird, someone digs in, finds the typo, fixes it going forward but can't recover the bad data. Validating at publish time catches the bug before any traffic flows through it. The ideal workflow: every paid campaign, email send, and partner link runs through the validator before the URL goes live. Five seconds of validation saves weeks of fragmented reporting.

What the validator does not check

It cannot detect whether you are putting UTMs on internal links inside your own site (which destroys multi-touch attribution by resetting the source on every click). That requires knowing your domain. It also cannot detect whether your utm_campaign naming convention matches your team's documented standard, since there is no universal convention. The validator catches the universal bugs. Team-specific conventions still require team-specific tooling.

FAQ

UTM validation, FAQ

What does this UTM validator check for?

Six categories: missing required parameters (utm_source, utm_medium, utm_campaign), case mismatches (Google vs google), encoded spaces (%20 in values), non-standard utm_medium values that GA4 won't auto-classify, duplicate parameters, and common typos in source names. Each issue is flagged with severity (error, warning, or info) and the validator shows a cleaned-up version of the URL with the auto-fixable issues resolved.

Why does case matter for UTMs?

Most analytics tools, including GA4, treat UTM values as case-sensitive. utm_source=Google and utm_source=google are stored as two separate sources. This silently fragments your reports: the same campaign appears as multiple lines, totals look smaller per source, and channel grouping rules can miss the wrong-case ones. The fix is always lowercase, applied consistently. The validator flags any uppercase characters in your values.

Why does utm_medium need to match a standard vocabulary?

GA4's default channel grouping uses utm_medium to bucket traffic into channels (Paid Search, Email, Social, Referral, Organic, Display, Affiliate). It uses a fixed vocabulary: cpc/ppc/paid_search for paid search, email for email, social/paid_social for social, etc. Custom values like 'newsletter' or 'paid' get bucketed into 'unassigned' by default and require custom channel rules to fix. The validator flags non-standard mediums and suggests the closest standard match.

What happens if I have duplicate UTM parameters?

Browsers and analytics tools handle duplicates inconsistently. Most pick the last value, but redirect chains, server-side rewriting, and middleware can produce surprising results. The most common cause is a tagged URL going through a marketing automation platform that re-tags it on the way out. The validator flags duplicates as an error because there is no scenario where they are intentional.

Does the validator run on the URL itself or send it anywhere?

It runs entirely in your browser. The URL is parsed and validated client-side using JavaScript. Nothing is sent to a server, logged, or stored. You can paste internal staging URLs, sensitive tracking links, or anything else without leaving any trace.

Can I use this with non-Google analytics tools?

Yes. UTMs are a Google-originated convention but every major analytics tool (Adobe, Mixpanel, Amplitude, Heap, HubSpot, SourceLoop) supports them. The validation rules in this tool apply universally: missing parameters, case mismatches, and naming inconsistencies cause the same problems across every analytics platform.

Is this validator free?

Yes. No signup, no email gate. We host it because the same teams trying to keep UTMs clean also need real attribution to know whether their tagged URLs actually drive revenue, which is what SourceLoop does.

Track every conversion to its true source

Capture and send full attribution data from every signup, lead, booking, and sale to your CRM and ad platforms, so you know exactly what's driving revenue.

Without SourceLoop

Untagged

Kayden Floyd

kayden@abc.com

  • SourceUnknown
  • MediumUnknown
  • CampaignUnknown
  • Landing pageUnknown
Journey
No touchpoints captured

With SourceLoop

Auto-tagged

Kayden Floyd

kayden@abc.com · Acme Co.

  • Channel Paid Social
  • CampaignFree_demo
  • Landing page/pricing
Journey
Synced to HubSpot Google Ads Meta