UTM Builder & Campaign URL Generator

UTM Builder & Campaign URL Generator

Build, validate, and batch generate Google Analytics GA4 campaign tracking links with our free UTM builder. Clean URLs, parse existing tags, and export QR codes.

Lbl presets
Title input card
Lbl bi directional
Lbl taxonomy regime
Badge rfc spec

Hint website url

Lbl quick chips
Lbl quick chips

Hint campaign

Hint term

Hint content

Hint campaign id

Lbl advanced options
Lbl space delimiter
Tab generated url
https://toolsaa.com/pricing?utm_campaign=brand_search_2026&utm_content=headline_slogan_v1&utm_id=gad_893412&utm_medium=cpc&utm_source=google&utm_term=toolsaa_enterprise
Lbl linter statusA+

Lint valid

Lbl pipeline visualizer168 Unit chars
Lbl target url node27 Unit bytesLbl sanitizer node5 Lbl rules: low sortLbl utm serial node6 Unit tags Lbl activeLbl final url node168 Unit chars
Stat url length168 Unit chars
Stat param count6 Unit tags
Stat linter gradeA+
Stat encoding complianceVal rfc valid
Technical Reference & Architecture Guide

UTM Builder & Campaign URL Generator Guide

Build, validate, and batch generate Google Analytics GA4 campaign tracking links with our free UTM builder. Clean URLs, parse existing tags, and export QR codes.

UTM Builder & Campaign URL Generator Guide — Client-Side In-Memory Architecture & Data Flow
UTM Builder & Campaign URL Generator Guide — Client-Side In-Memory Architecture & Data Flow

Key Parameters & Controls

utm_sourceRFC 3986 String (Required)

Identifies the traffic origin, referring domain, or publisher platform (e.g., google, newsletter, linkedin). Evaluated by GA4 attribution engines to resolve the First User Source and Session Source dimensions, matching against GA4 Default Channel Grouping regex rules.

Default: google
utm_mediumRFC 3986 String (Required)

Identifies the high-level advertising medium or delivery channel (e.g., cpc, email, paid-social, referral, affiliate). Directly determines the GA4 Default Channel Group allocation via strict regex criteria (e.g., ^(cpc|ppc|paidsearch)$ for Paid Search).

Default: cpc
utm_campaignRFC 3986 String (Required)

Identifies the commercial campaign, seasonal promotion, product launch, or sprint identifier (e.g., spring_sale_2026). Stored in the GA4 Campaign and Manual Campaign dimensions with case-sensitive token indexing.

Default: spring_sale
utm_termRFC 3986 String (Optional)

Captures paid search bidding keywords, query targeting tokens, or audience segments. Values must be percent-encoded per RFC 3986 § 2.1 (spaces encoded as '+' or '%20') to avoid malforming destination URI query components.

Default: developer+tools
utm_contentRFC 3986 String (Optional)

Provides granular differentiation between multiple links or creative variants targeting the identical destination within the same ad or email (e.g., header_cta_blue vs footer_text_link). Crucial for multi-variant A/B attribution.

Default: header_cta_blue
utm_idAlphanumeric Key (Optional / GA4)

External campaign identification key utilized by GA4 to join and attribute offline cost, click, and impression datasets uploaded via the Google Analytics Data Import API across non-Google advertising networks.

Default: cmp_90412
utm_source_platformRFC 3986 String (Optional / GA4)

Extended GA4 parameter specifying the media-buying platform or programmatic DSP responsible for budgeting or ad delivery (e.g., Search Ads 360, Display & Video 360, Google Ads).

Default: search_ads_360
utm_creative_formatRFC 3986 String (Optional / GA4)

Extended GA4 parameter specifying the physical creative asset format or display layout (e.g., carousel, responsive_display, interstitial_video, story) for creative performance reporting.

Default: carousel

Pro Tips & Best Practices

Strict Lowercase Discipline Prevents GA4 Session Fragmentation

Google Analytics 4 processes query parameters with strict binary byte-level case sensitivity (ASCII matching). Tagging identical campaigns as 'Email', 'email', and 'EMAIL' creates three disjoint acquisition channels in reporting tables, shattering multi-touch attribution chains and fragmenting session metrics. Enforce an automated toLowerCase() pipeline across all campaign generation endpoints.

Standardize RFC 3986 Query Delimiters: snake_case vs. kebab-case

Unencoded whitespace characters force browsers to inject messy percent-encoded '%20' or '+' symbols, polluting analytics reporting. Establish an organizational standard using solely snake_case (e.g., q4_developer_summit) or kebab-case (e.g., q4-developer-summit), avoiding mixed casing and punctuation characters that trigger browser encoding mismatches.

Strict RFC 3986 Ordering: Query Strings Must Precede URI Fragment Anchors (#)

Under RFC 3986 Section 3, standard URI syntax strictly dictates that the query string (?) must precede the fragment identifier (#): scheme://host/path?query#fragment. Placing UTM tags after a hash (e.g., example.com/#section?utm_source=...) prevents standard HTTP servers and analytics tracking beacons from extracting the parameters, unless custom single-page application (SPA) client routers are explicitly configured.

Enforce RFC 6596 Rel-Canonical Tags to Prevent Search Index Pollution

Parameterized campaign URLs can trigger critical SEO duplicate content penalties and crawl budget dilution if discovered by web crawlers. Ensure all target landing pages declare a self-referential <link rel="canonical" href="https://example.com/canonical-path" /> without tracking parameters, instructing Googlebot to attribute ranking signals exclusively to the pristine base URI.

Common Gotchas & Troubleshooting

⚠️301 and 302 HTTP Server Redirects Stripping Tracking Query Parameters

Configure reverse proxy servers (Nginx/Apache) to pass query parameters during rewriting using $is_args$args (Nginx) or the [QSA] (Query String Append) flag in Apache .htaccess. Alternatively, always construct UTM tracking URLs directly against the final canonical URL destination to eliminate intermediate redirects entirely.

⚠️GA4 Grouping Inbound Traffic Under '(not set)' or Erroneous Direct/Referral

GA4 assigns traffic to '(not set)' when utm_source is supplied without a corresponding utm_medium, or when custom medium values fail to satisfy GA4's strict regex-based Default Channel Grouping criteria. Verify that both parameters are present, ensure values match standard channel groups (e.g., cpc for paid search, email for newsletters), and audit cross-domain linker setups to prevent payment gateway cookie resetting.

⚠️Double Question Marks (??) Corrupting Landing Page Query Parameter Strings

RFC 3986 permits exactly one query delimiter (?). If the target URI already contains a query component, chain subsequent parameters using an ampersand (&). Automated URL builders must inspect url.indexOf('?') or leverage the native WHATWG URL and URLSearchParams APIs to append parameters with guaranteed O(n) algorithmic safety.

⚠️Cross-Origin Link Decoration and Referral Stripping in Modern Browsers

Referrer Policy headers (such as Referrer-Policy: strict-origin-when-cross-origin or no-referrer) and browser privacy features (like Apple WebKit ITP or Brave Shields) strip HTTP Referer headers, causing paid traffic to collapse into Direct traffic. Explicit UTM query parameters persist directly within the request URI string and survive browser referrer stripping, guaranteeing deterministic attribution across cross-origin transitions.

Frequently Asked Questions

What is the difference between utm_source and utm_medium in Google Analytics?▼

utm_source identifies the specific entity or platform sending the visitor (e.g., 'google', 'newsletter', 'linkedin'), answering 'where did the click originate?', whereas utm_medium defines the overarching marketing or transmission channel mechanism (e.g., 'cpc', 'email', 'social', 'referral'), answering 'how was the link delivered?'. In Google Analytics 4, utm_medium is the primary driver for categorizing sessions into Default Channel Groups, such as 'Paid Search' (cpc) or 'Email' (email).

Do UTM campaign parameters hurt website SEO or cause duplicate content penalties?▼

UTM parameters do not directly damage website SEO or organic rankings when landing pages implement a self-referential <link rel="canonical" href="https://example.com/target-path"> tag conforming to RFC 6596. Search engine crawlers (including Googlebot) recognize standard UTM query tokens as tracking parameters and consolidate PageRank and indexing signals to the designated canonical URL, preventing duplicate content indexation.

Why must UTM parameter values always be strictly lowercase in GA4?▼

Google Analytics 4 evaluates incoming query parameter values using strict case-sensitive binary string matching. Consequently, 'cpc', 'CPC', and 'Cpc' are indexed as three distinct medium strings, fragmenting attribution metrics across multiple disjoint rows and potentially causing paid search sessions to fall out of the standard Default Channel Group into 'Unassigned'.

How do UTM parameters work with Single Page Applications using hash routing?▼

In Single Page Applications (SPAs) employing hash-based client routing (e.g., React HashRouter), the query string must be positioned immediately after the hash route (e.g., example.com/#/products?utm_source=...) rather than before the hash. RFC 3986 dictates that web servers do not transmit fragment content to the server, and placing the query before the hash can cause client-side routers to strip query parameters during initial DOM mounting unless handled by an explicit query parser.

What are the new Google Analytics 4 extended parameters like utm_id and utm_source_platform?▼

Google Analytics 4 introduced extended campaign parameters beyond the original Urchin Traffic Monitor standard: utm_id supplies an external campaign identifier to join offline cost and click data via the GA4 Data Import API; utm_source_platform records the programmatic media buying platform (e.g., 'Search Ads 360', 'Display & Video 360'); utm_creative_format specifies asset layouts (e.g., 'carousel', 'video'); and utm_marketing_tactic denotes targeting intent (e.g., 'remarketing', 'prospecting').

Related Tools & Utilities

All Tools →