UTM Builder
Build UTM-tagged campaign URLs for Google Analytics, GA4 and any analytics platform. Live preview, presets for Google Ads, Facebook, LinkedIn, Newsletter, Twitter/X. Free.
UTM Builder Tool
How to Use the UTM Builder
Paste your destination URL
The page you want visitors to land on after clicking your campaign link.
Pick a preset or fill in fields
Click a channel preset to prefill source and medium, then add the campaign name.
Copy and use the tagged URL
The generated URL updates live. Click Copy to grab it, then use it anywhere — emails, ads, social posts.
Track in your analytics
Visitors arriving via this link will be attributed to the source and campaign you specified.
About UTM Parameters
UTM parameters are query-string tags that analytics platforms read to attribute a visit to a campaign. The abbreviation stands for Urchin Tracking Module: Urchin Software was the San Diego web-analytics company Google agreed to acquire on 28 March 2005, and its product became Google Analytics. The tags outlived the product. Google Analytics 4, Adobe Analytics, Matomo and Plausible all read the same parameter names, so a link tagged once is attributed everywhere.
Google's GA4 documentation lists nine parameters. Five are the classic set: utm_source (the referrer — google, newsletter, partner-name), utm_medium (the marketing medium — cpc, email, social), utm_campaign (the campaign, promotion or slogan), utm_term (the paid keyword) and utm_content (which creative or call-to-action was clicked). GA4 added utm_id (a campaign ID for linking to cost data), utm_source_platform (the buying platform, e.g. Google Ads or DV360) and two more, utm_creative_format and utm_marketing_tactic, that GA4 accepts but does not yet report. Google's guidance is that every tagged URL should carry utm_source, utm_medium and utm_campaign, and that utm_id and utm_source_platform are strongly recommended for paid media. This builder exposes the six that report in GA4 today.
How the builder encodes your values
The generated URL is assembled with the browser's own URL parser, so it follows the WHATWG URL Standard rather than hand-rolled string concatenation. Existing query parameters on your destination URL are preserved, and a UTM key that already exists is overwritten rather than duplicated. Values are serialised in the application/x-www-form-urlencoded form: a space becomes +, and characters outside letters, digits and * - . _ are percent-encoded as RFC 3986 §2.1 describes — so a literal plus sign you type becomes %2B, and an ampersand becomes %26 instead of splitting your parameter in two. The value that reaches your analytics platform is the value you typed.
Naming conventions that survive contact with reality
GA4 states that parameter values are case-sensitive: utm_source=Google and utm_source=google are two different sources in every report. The single most common UTM defect is therefore inconsistency — Facebook, facebook and FB split one channel into three rows. Pick all-lowercase, hyphen-separated values and write them down where the whole team can see them. For utm_medium, choose values GA4's default channel grouping already recognises: a medium of email lands in Email; social, social-network, social-media or sm land in Organic Social; cpc, ppc, retargeting or anything beginning paid land in the Paid channels; display, banner, interstitial and cpm land in Display; affiliate in Affiliates; referral, app or link in Referral. A medium outside those rules is still recorded, but it falls into Unassigned. For utm_campaign, a fixed shape such as region-product-quarter-year (sg-pro-q1-2026) keeps reports sortable a year later.
UTMs in the ASEAN context
Singapore and Malaysian campaigns tend to run across more surfaces than a single-market Western campaign — Meta, TikTok, Lazada and Shopee in-app placements, Carousell promoted listings, LINE for Thailand, plus local affiliate networks — and without consistent tagging there is no way to tell which of them converted. The presets above set utm_source and utm_medium for the five most common channels; the Facebook, LinkedIn and X presets use social, which GA4 classifies as Organic Social — change the medium to paid-social when the post is a paid placement. Everything is built in your browser: no campaign name, destination or keyword is sent anywhere, which matters for an unannounced launch.
A note on privacy. A UTM value describes a campaign, not a person, so tagging alone does not create personal data under the EU GDPR or Singapore's Personal Data Protection Act. The moment a URL carries an identifier for an individual — a user ID, an email address, a session token — it does, and the whole link is then subject to those laws. Keep campaign data at the campaign level and never put a person in a query string.
Urchin, and why capitalisation splits your traffic in two
UTM stands for Urchin Tracking Module. Google announced its agreement to acquire Urchin Software Corporation of San Diego on 28 March 2005; the product became Google Analytics and the parameter names stayed.
Capitalisation matters. "Facebook" and "facebook" become two separate sources in GA4. Single most common UTM bug. Pick lowercase and document the convention.
Three you should always set. GA4's documentation says every tagged URL should carry utm_source, utm_medium and utm_campaign; the builder will not produce a URL without them. Term, content and ID are optional.
Google Ads tags itself. Auto-tagging appends a gclid, which Analytics uses to derive source, medium and campaign. Google recommends auto-tagging over manual UTMs; if you add both, the UTM values win only when the manual-tagging override is switched on in Analytics.
GA4 documents nine parameters, not five. Besides the classic set it accepts utm_id, utm_source_platform, utm_creative_format and utm_marketing_tactic — the last two are collected but not yet reported.
A space becomes + here, not %20. The builder uses the browser's URL parser, which serialises the query in form-encoded style (WHATWG URL Standard): space → +, a typed plus → %2B, an ampersand → %26. Both forms decode to the same value in analytics.
Test the link where it will be clicked. Corporate mail gateways and link-safety proxies rewrite URLs before delivery and can alter the query string. Send a test to the client your audience actually uses and check the landing URL, not just the redirect.
Attribution is a lookback window, not a six-month cookie. GA4 credits key events to touchpoints within 90 days by default (30 or 60 selectable), and acquisition events first_open/first_visit within 30 days (or 7). That is why a campaign can keep converting weeks after it ends.
The medium taxonomy is GA4's, not a standards body's. GA4's default channel group matches utm_medium against fixed rules — email; social/sm; cpc/ppc/paid*; display/banner/cpm; affiliate; referral. Anything else is Unassigned.
Privacy boundary: campaign data only. Under GDPR + Singapore's PDPA, UTM data is generally not personal because it describes campaigns. Append a user ID to the URL and it becomes personal data — never do that.
Frequently Asked Questions
-
UTM parameters are query-string tags appended to a URL — for example
?utm_source=newsletter&utm_medium=email&utm_campaign=q1-launch— that pass campaign attribution data to analytics platforms like Google Analytics 4, Adobe Analytics, Matomo, and Plausible. They tell your analytics where a click came from, what channel category it belongs to, and which campaign it was part of. -
GA4's documentation says to always use
utm_source,utm_mediumandutm_campaign, and this builder will not generate a URL until all three are filled.utm_term(paid keyword),utm_content(creative variant) andutm_id(campaign ID) are optional. GA4 also acceptsutm_source_platform,utm_creative_formatandutm_marketing_tactic, which this builder does not expose; append them by hand if your reporting uses them. -
Yes — "Facebook" and "facebook" register as two separate sources, fragmenting your data and making channel comparisons impossible. This is the most common UTM bug in practice. Standardise on all-lowercase across your team and document the convention in a shared spreadsheet so everyone uses the same values.
-
No. Everything runs locally in your browser. We don't log inputs, store them, or send analytics on what you build. Verifiable in DevTools — only the static asset bundle loads, nothing else. Safe for confidential internal campaigns and competitive launches you don't want exposed.
-
Short enough to read in a report column, and always in the same shape. A common convention is
region-product-quarter-year(e.g.sg-pro-q1-2026) — sortable, parseable, and instantly meaningful six months later. Avoid spaces (they are encoded as+) and avoid capitals, because GA4 treatsQ1-Launchandq1-launchas two campaigns. -
Use
paid-socialorcpc: GA4's default channel group sends a social-site source with a medium matchingcpc,ppc,retargetingorpaid*to Paid Social. Reservesocial,social-mediaorsmfor unpaid posts, which GA4 files under Organic Social. Note the Facebook preset on this page setssocial— change it for paid placements. -
They shouldn't, but they can if mishandled. Google treats UTM-tagged URLs as parameter variants of the same canonical URL. As long as you have a proper
<link rel="canonical">tag on the page (pointing to the URL without UTM parameters), search engines will consolidate them. Without canonical tags, you can fragment your SEO equity across hundreds of UTM-tagged duplicates. -
It depends on the lookback window in your property's attribution settings, not on a cookie lifetime. GA4's default is 90 days for key events (30 or 60 days can be chosen) and 30 days for the acquisition events
first_openandfirst_visit(7 days optional). A tagged click inside that window can receive credit for a later conversion, which is why a campaign that ended weeks ago still appears in conversion reports. -
Usually not. Google recommends auto-tagging, which appends a
gclidthat Analytics resolves to source, medium, campaign and the Google Ads cost data. If you also add UTMs, Analytics ignores them unless the manual-tagging override setting is enabled — and when it is, clicks, impressions and cost are reported against the auto-tagged values, not your UTM values. Reserve manual UTMs for platforms that have no auto-tagging. -
UTM parameters themselves are generally not personal data — they describe campaigns, not people, and don't identify individual users. But the moment you append a personal identifier (user ID, email address, session token) to a URL, that URL becomes personal data and falls under the GDPR (EU), Singapore's Personal Data Protection Act 2012 or Malaysia's separate Personal Data Protection Act 2010, depending on where you and your users are. Best practice: keep UTM data at the campaign level only.
Method & sources
How it computes
Appends the six UTM parameters GA4 reports (utm_source, utm_medium, utm_campaign, utm_term, utm_content, utm_id) to a destination URL using the browser's URL/URLSearchParams API: existing query parameters are preserved, existing UTM keys overwritten, and values serialised in application/x-www-form-urlencoded form (space → +, other reserved characters percent-encoded per RFC 3986 §2.1).
What this tool implements
- Parameter names and the always-set trio (source, medium, campaign) per Google Analytics Help, 'URL builders: Collect campaign data with custom URLs' — which also documents utm_id, utm_source_platform, utm_creative_format and utm_marketing_tactic; the builder exposes the six that report in GA4 today.
- Query encoding per RFC 3986 §2.1 (percent-encoding) and §3.4 (query component); serialisation per the WHATWG URL Standard application/x-www-form-urlencoded serializer (space → U+002B; unreserved set = ASCII alphanumerics * - . _), which is what URLSearchParams implements.
- Medium recommendations follow GA4's default channel group rules (email; social/sm → Organic Social; cpc/ppc/retargeting/paid* → Paid; display/banner/interstitial/cpm → Display; affiliate; referral/app/link) — not an IAB taxonomy, which the page previously claimed.
- Attribution duration stated as GA4 lookback windows (90-day default for key events, 30/60 optional; 30-day default for first_open/first_visit, 7 optional), not as a cookie lifetime.
- A URL is produced only when utm_source, utm_medium and utm_campaign are all present, as Google's GA4 documentation requires.
Sources
- Google Analytics Help. [GA4] URL builders: Collect campaign data with custom URLs. https://support.google.com/analytics/answer/10917952
- Google Analytics Help. [GA4] Default channel group. https://support.google.com/analytics/answer/9756891
- Google Analytics Help. [GA4] Select attribution settings (lookback window). https://support.google.com/analytics/answer/10597962
- Berners-Lee T, Fielding R, Masinter L. RFC 3986: Uniform Resource Identifier (URI): Generic Syntax. IETF; January 2005. https://www.rfc-editor.org/rfc/rfc3986
What can make this go out of date
- GA4 documentation — the parameter list (nine as of September 2026, two 'not currently reported') and the default channel-group rules are Google-maintained and can change without notice; nothing is fetched at runtime
Pick up where you left off
Stored only in this browser — never sent to our servers.