Skip to content
CornerTools

UTM Builder

Tag links with UTM parameters for Google Analytics — checked, encoded and ready to share, or read back from a tagged link.

Your link appears here once it has an address and a UTM value.

Your QR code appears here as you type.

Adds UTM parameters to a link so Google Analytics can tell which campaign, source and medium brought each visitor. The tool encodes every value, keeps the link's own query string and fragment intact, and says which GA4 default channel the link will be reported under, before any traffic arrives.

Paste a link that is already tagged and its values fill the fields, so an old campaign link can be checked or changed. Each link also gets a QR code for print. Everything is worked out in your browser.

The parameters

  • Source (utm_source) — where the visitor comes from: google, newsletter, facebook.
  • Medium (utm_medium) — the kind of traffic: cpc, email, social, referral.
  • Campaign name (utm_campaign) — the campaign or promotion: spring_sale.
  • Campaign ID (utm_id) — the campaign’s ID, matching any campaign data you upload.
  • Term (utm_term) — the paid keyword.
  • Content (utm_content) — which link or creative was clicked, when one campaign has several.
  • Source platform (utm_source_platform) — the platform that directed the traffic, such as Search Ads 360.
  • Creative format (utm_creative_format) — the type of creative: display, native, video. Google says it isn’t reported in Google Analytics yet.
  • Marketing tactic (utm_marketing_tactic) — the targeting: remarketing, prospecting. Google says it isn’t reported in Google Analytics yet.

Google says to always set source, medium and campaign; the tool warns while one is empty. Empty fields add nothing to the link. Source and medium suggest common values as you type, and any other text is accepted. The extra three fields sit under More fields.

An address without https:// gets it. Values are trimmed and percent-encoded, a space as %20, so &, =, # and ? inside a value cannot break the link. UTM parameters the address already carries are replaced by the fields, with a warning; other parameters stay in place, and the new ones go before any #fragment. Spaces, quotes and non-Latin letters in the address's own parameters and fragment are percent-encoded as a browser sends them. A domain with non-Latin letters is written in Punycode in the link.

Lowercase values, off by default, lowercases every value in the link. GA4 reports values as typed, so Email and email are two sources; while the option is off, the tool warns of capitals instead. It also warns of spaces, of a link no channel rule matches, and of a link over 2,000 characters.

Examples

A newsletter link

Website URL
example.com/blog/autumn-guide
Source (utm_source)
newsletter
Medium (utm_medium)
email
Campaign name (utm_campaign)
autumn_2026
Content (utm_content)
header_button
Campaign URL
https://example.com/blog/autumn-guide?utm_source=newsletter&utm_medium=email&utm_campaign=autumn_2026&utm_content=header_button

The address had no scheme, so https:// is added. The medium email puts the visit in the Email channel.

Paid social on a page with a query and a fragment

Website URL
https://shop.example/boots?size=42&colour=black#reviews
Source (utm_source)
instagram
Medium (utm_medium)
paid_social
Campaign name (utm_campaign)
Winter Boots
Campaign URL
https://shop.example/boots?size=42&colour=black&utm_source=instagram&utm_medium=paid_social&utm_campaign=Winter%20Boots#reviews
GA4 default channel
Paid Social

The page's own parameters stay first and the fragment stays last. The space in the campaign name is sent as %20, and the capitals draw a warning: GA4 would report Winter Boots and winter boots apart. Instagram is on Google's list of social sites, and the medium matches the paid pattern.

Reading back a tagged link

Pasted into Website URL
https://shop.example/sale?utm_source=Facebook&utm_medium=paid_social&utm_campaign=autumn+sale
Website URL
https://shop.example/sale
Source
Facebook
Medium
paid_social
Campaign name
autumn sale

The + in the pasted link is read as a space, as web forms write one.

GA4 default channels for tagged links

Google’s rules in the order GA4 applies them; the first that matches names the channel
ChannelWhen
DirectSource is “(direct)” and medium is “(not set)” or “(none)”
Cross-networkCampaign name contains “cross-network”
Paid ShoppingSource is a shopping site, or campaign name matches ^(.*(([^a-df-z]|^)shop|shopping).*)$; and medium matches ^(.*cp.*|ppc|retargeting|paid.*)$
Paid SearchSource is a search site and medium matches the paid pattern
Paid SocialSource is a social site and medium matches the paid pattern
Paid VideoSource is a video site and medium matches the paid pattern
DisplayMedium is display, banner, expandable, interstitial or cpm
Paid OtherMedium matches the paid pattern
Organic ShoppingSource is a shopping site, or campaign name matches the shopping pattern
Organic SocialSource is a social site, or medium is social, social-network, social-media, sm, social network or social media
Organic VideoSource is a video site, or medium matches ^(.*video.*)$
Organic SearchSource is a search site, or medium is organic
AI AssistantMedium is ai-assistant
ReferralMedium is referral, app or link
EmailSource or medium is email, e-mail, e_mail or e mail
AffiliatesMedium is affiliate
AudioMedium is audio
SMSSource or medium is sms
Mobile Push NotificationsMedium ends with push, or contains mobile or notification, or source is firebase
UnassignedNo rule matches

Google’s rules

The parameters and their meanings are Google's, from its help page on custom campaign URLs. The channel rules are Google's default channel group definitions for traffic it cannot read from an ad platform, matched without case as Google states. The paid pattern is ^(.*cp.*|ppc|retargeting|paid.*)$.

Whether a source is a search, social, shopping or video site comes from the list of 819 sources Google publishes with these rules, last changed on 9 February 2023, matched as the whole source without case: facebook and fb are on it, facebook.com/ads is not. Google adds sites to its own copy over time, so a source added since then reads differently in GA4. Traffic tagged through Google Ads, Display & Video 360 or Search Ads 360 is classified from those platforms' own data instead.

Sources

Reviewed

Frequently asked questions

In reports, yes: GA4 keeps values as typed, so Facebook and facebook are two rows. For channels, no: the channel rules ignore case, so both reach the same channel. Google recommends lowercase throughout, which the Lowercase values option applies.
A redirect that drops the query string strips the UTM parameters before the page loads, as Google notes. Open the campaign URL and check that the parameters are still in the address bar when the page arrives.

See also