AnyTool
Your files never leave your device. All processing happens locally in your browser.

How do I build a UTM tracking link for a campaign?

Enter your landing-page URL, then set utm_source (where the traffic comes from, e.g. newsletter), utm_medium (the channel, e.g. email) and utm_campaign (the promotion name) — utm_term, utm_content and GA4’s utm_id are optional. The UTM Link Builder assembles a properly URL-encoded tracking link you can copy, save to a local library and export as CSV — 100% in your browser, nothing uploaded.

  • Required: utm_source, utm_medium, utm_campaign · optional: utm_term, utm_content, utm_id (GA4)
  • Use lowercase and hyphens — UTM values are case-sensitive, so “Email” ≠ “email” and splits your reports
  • Only tag external / campaign links — never internal links between your own pages (it resets GA sessions)
  • Values are URL-encoded and appended correctly, preserving any existing query string and #fragment
  • 100% client-side — links and the saved library live only in your browser’s localStorage; nothing uploaded

What is

UTM Parameters

UTM (Urchin Tracking Module) parameters are tags added to a URL’s query string — utm_source, utm_medium, utm_campaign, utm_term and utm_content — that let analytics tools like Google Analytics 4 attribute a click to a specific marketing campaign, source and channel.

Marketing Analytics

Related terms

utm_sourceutm_mediumutm_campaignGoogle Analytics 4Campaign TrackingURL Encoding

Frequently Asked Questions

utm_source, utm_medium and utm_campaign are required; utm_term and utm_content are optional. GA4 also supports utm_id.

The five classic UTM parameters are utm_source (where the traffic comes from — google, newsletter, facebook), utm_medium (the channel type — cpc, email, social), utm_campaign (the promotion name — spring-sale-2026), utm_term (the paid-search keyword) and utm_content (differentiates A/B variants or two links in the same message). The first three are required; utm_term and utm_content are optional. Google Analytics 4 additionally supports utm_id (a campaign ID to tie manual tags to imported data), plus utm_source_platform, utm_creative_format and utm_marketing_tactic.

Yes. UTM values are case-sensitive, so “Facebook” and “facebook” become two different rows in your reports — always use lowercase.

UTM values are case-sensitive, which means “Email” and “email”, or “Facebook” and “facebook”, are recorded as separate sources in Google Analytics and fragment your campaign reports. The fix is to pick one convention — lowercase everywhere, with hyphens instead of spaces (spaces encode to %20 and look broken) — and use it every single time. This tool has a lowercase-normalize toggle on by default and warns you when a value contains uppercase letters or spaces.

No — never tag links between pages of your own site. A tagged internal click starts a new GA session and overwrites the visitor’s real source.

You should never add UTM parameters to internal links (links between pages of your own website). When a visitor clicks a UTM-tagged internal link, Google Analytics treats it as a brand-new session from that source/medium, wiping out where the visitor actually came from and corrupting your attribution. Only tag external / campaign links — ads, email links, social posts, QR codes and anything that brings people to your site from elsewhere.

No. It only builds and validates the URL. Your own analytics (GA4 etc.) reads the utm_* tags; the tool tracks nothing and uploads nothing.

This UTM Link Builder simply assembles and URL-encodes the tracking link and validates it against best practices — it does not collect, store or track any traffic itself. The utm_* parameters are read later by your own analytics platform (Google Analytics 4, for example) to attribute the click. Everything runs in your browser: the URL is built with plain JavaScript, and the saved link library is kept only in your browser’s localStorage — nothing is uploaded and we don’t track your links or campaigns.

Detailed Explanation

How It Works

UTM Parameters and How the Builder Assembles Them

A UTM (Urchin Tracking Module) link is a landing-page URL with campaign-tracking tags appended to its query string. AnyTool’s UTM Link Builder takes a base URL plus utm_source, utm_medium and utm_campaign (required) and utm_term, utm_content and GA4’s utm_id (optional), URL-encodes every value, and appends the parameters correctly — using “?” when the base URL has no query string and “&” when it already does, while preserving any existing parameters and #fragment. The five classic parameters describe where the traffic came from (source), the channel type (medium), the promotion (campaign), the paid keyword (term) and the creative variant (content).

  • Required: utm_source, utm_medium, utm_campaign; optional: utm_term, utm_content
  • GA4 also supports utm_id, plus utm_source_platform, utm_creative_format and utm_marketing_tactic
  • Values are percent-encoded with encodeURIComponent; existing query string and #fragment are preserved
  • A lowercase-normalize toggle and datalists of common medium/source values reduce typos
Methodology

Best-Practice Validation Built In

UTM values are case-sensitive, so “Email” and “email” — or “Facebook” and “facebook” — are recorded as separate sources and fragment campaign reports. The builder’s live lint flags a missing or invalid base URL, missing required parameters, uppercase letters and spaces (spaces encode to %20 and look broken), and reminds the user to keep naming consistent. It also warns never to tag internal links, because a UTM-tagged click between pages of your own site starts a new analytics session and overwrites the visitor’s original source, corrupting attribution.

  • Case-sensitivity is the top cause of fragmented UTM reports — lowercase everything
  • Use hyphens, not spaces (spaces encode to %20/+)
  • Never tag internal links — it resets the GA session and attribution
  • Consistent controlled vocabulary for source and medium keeps reports clean
Privacy & Security

Private by Design — and It Does Not Track

The tool builds and validates the URL entirely in the browser with plain JavaScript; nothing is fetched, uploaded or sent to a server. The saved link library is persisted only to the browser’s localStorage, never to the cloud, and can be exported to CSV locally. Honesty matters here: UTM parameters are read by your own analytics platform (Google Analytics 4, for example) to attribute a click — this builder only creates the link, it does not itself collect, store or track any traffic.

  • URL assembly and CSV export run 100% client-side; nothing is uploaded
  • Saved links live only in localStorage — clearing browser data removes them
  • The tool builds the URL; your analytics (GA4 etc.) does the tracking
  • No accounts, no telemetry, works offline once cached
UTM link building: in-browser (AnyTool) vs typical online UTM builders
CapabilityAnyToolTypical online builders
ProcessingRuns entirely in your browser (plain JS)Often server-side or account-gated
Your linksNever uploaded; library in localStorageFrequently stored in a cloud account
Parameterssource/medium/campaign/term/content + GA4 utm_idUsually the classic five
EncodingencodeURIComponent; preserves existing query + #fragmentVaries; some drop existing params
ValidationMissing/invalid base, required params, uppercase, spaces, internal-link warningOften none
Case handlingLowercase-normalize toggle + case-sensitivity warningRarely flagged
Saved library + exportLocal library with copy/delete + CSV exportOften gated behind signup
Tracking honestyStates the tool builds the URL and tracks nothingSometimes implies it tracks
Cost / signupFree, no signupOften freemium / account required

AnyTool builds and validates UTM tracking links locally and uploads nothing, keeping the saved library in your browser’s localStorage. It supports the classic five UTM parameters plus GA4’s utm_id, URL-encodes values, and warns about the two most common mistakes — case-sensitivity (which fragments reports) and tagging internal links (which resets sessions). The tool builds the URL; your own analytics does the attribution. Comparison as of July 2026.