Skip to content
Kodinav

Free UTM Builder

Free UTM code generator for Google Analytics.

Build campaign URLs for Google Ads, Facebook and Instagram ads, email and QR codes — one at a time or for several channels at once — and see which GA4 channel each link will land in before you share it. Free, no signup, nothing leaves your browser.

Built and maintained by Abhinav Saxena at Kodinav · Last checked

Quick presets — fills source and medium

Your campaign link

to see how it works.

Fill the URL, source, medium and campaign, and the tagged link appears here. Lower-case with underscores is applied automatically — analytics treats “Facebook” and “facebook” as different sources, which splits reports. Everything happens in your browser; nothing you type is sent anywhere.

Check a link you already use

Paste a tagged link from an ad, a bio or a printed QR code to see its tags, the GA4 channel its visits land in, and anything that will split your reports.

UTM builder template for Excel and Google Sheets

Tagging many links at once? Download the free template: paste each landing page and its source, medium and campaign, and the tagged link builds itself, lowercased with spaces replaced so your GA4 reports don't split. It handles URLs that already have a "?", includes a medium dropdown with GA4-friendly values, and works in Excel (Windows and Mac) and Google Sheets (File → Import the CSV).

The formula, if you'd rather build your own sheet (landing page in A, source B, medium C, campaign D):

=A2&IF(ISNUMBER(FIND("?",A2)),"&","?")&"utm_source="&SUBSTITUTE(LOWER(TRIM(B2))," ","_")&"&utm_medium="&SUBSTITUTE(LOWER(TRIM(C2))," ","_")&"&utm_campaign="&SUBSTITUTE(LOWER(TRIM(D2))," ","_")

Which GA4 channel will my link land in?

GA4 files each visit under a default channel from its source and medium, using the first rule that matches. A paid-looking medium (anything containing "cp", ppc, retargeting, or starting with "paid") on a social source is Paid Social; the same source with medium social is Organic Social; a medium GA4 doesn't recognize lands in Unassigned. Common tags and their channel:

utm_sourceutm_mediumGA4 channel
googlecpcPaid Search
facebookpaid_socialPaid Social
facebooksocialOrganic Social
instagrampaidPaid Social
youtubecpvPaid Video
newsletteremailEmail
partner_sitereferralReferral
ad_networkdisplayDisplay
influenceraffiliateAffiliates
smstextSMS
qr-codeqrUnassigned
flyerprintUnassigned
whatsappchatOrganic Social

Based on Google's published default channel group rules. Search, social, video and shopping sources are matched against lists Google maintains; the builder knows the common ones.

UTM values for every platform

The source and medium that Google Analytics 4 sorts into the right default channel. Use the same values every time, or one channel ends up split across several rows.

Platformutm_sourceutm_mediumNote
Google AdsgooglecpcKeep auto-tagging on as well; GA4 credits Google Ads clicks through the gclid.
Facebook / Meta Adsfacebookpaid_socialUse the dynamic values below so every ad tags itself.
Instagram Adsinstagrampaid_socialMeta ads that run only on Instagram.
Instagram bio or postinstagramsocialOrganic posts, stories and the link in bio.
LinkedIn postlinkedinsocialUse paid_social for LinkedIn Ads.
TikTok Adstiktokpaid_socialUse social for organic TikTok links.
Email newsletternewsletteremailPut the issue or date in utm_campaign.
QR code (print)qr-codeqrGA4 files this as Unassigned unless you add a custom channel group.

Facebook and Instagram ads: one string for every ad

In Meta Ads Manager, open the ad, go to Tracking → URL parameters and paste this. Meta replaces the values in double braces with each campaign, ad set and ad's real name when someone clicks.

utm_source=facebook&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_content={{ad.name}}&utm_term={{adset.name}}

Where tagged visits show up in GA4

  1. Reports → Acquisition → Traffic acquisition shows sessions by source and medium.
  2. Change the table's first column to Session campaign to compare campaigns.
  3. Data appears within a few hours; the Realtime report shows a test click within a minute.

Want it done for you?

This tool is free forever. When you want the underlying work done properly, that's the studio's landing page development service.

See the service →

FAQ

Fair questions.

Yes. Download the free Excel template or the CSV for Google Sheets on this page: paste the landing page, source, medium and campaign, and the tagged URL builds itself with a formula that lowercases values, replaces spaces and handles links that already contain a question mark.

Yes, completely, with no signup and no limit. Links are built in your browser and nothing you type is sent to us; your recent links are saved only on your own device, with a CSV export.

Small labels appended to a link — utm_source, utm_medium, utm_campaign — that tell your analytics where a visit came from. Without them, a click from your Instagram bio and a click from a paid ad can look identical in reports; with them, you know which effort actually produced the inquiry.

Source is where the click happened: google, facebook, newsletter. Medium is what kind of channel it was: cpc for paid clicks, social for organic social, email for mailers. Campaign is which specific push: black_friday, spring_sale. Together they answer where, how and why.

Because analytics tools treat "Facebook", "facebook" and "FaceBook" as three different sources, silently splitting one channel into three rows. The builder normalizes for you so reports stay in one piece.

No — internal UTMs overwrite the visitor's original source, destroying the very attribution you built. Use them only on links that live outside your site: ads, social posts, emails, QR codes, directories.

In Ads Manager, open the ad, scroll to Tracking and paste the parameters into the URL parameters field rather than into the website URL. Meta's dynamic values, such as {{campaign.name}} and {{ad.name}}, fill in each ad's real names automatically, so one string tags every ad correctly.

Not for Google Analytics. With auto-tagging switched on, Google Ads adds a gclid to every click and GA4 uses it to report the campaign, keyword and cost. Manual UTMs on Google Ads are useful when another analytics tool or CRM needs to read the campaign.

No. Search engines ignore them for ranking, and a canonical tag on your page tells Google which URL to index. The only rule is not to put UTMs on links between your own pages, which breaks attribution rather than rankings.

GA4 sorts every visit into a default channel using its source and medium. When the pair matches none of Google's rules (for example utm_medium=qr, print or chat), the visit is filed as Unassigned and is easy to overlook. Use a standard medium such as social, email, cpc, display, referral or affiliate, or create a custom channel group in GA4 for QR and print. The builder above shows the channel before you share a link.

Paste it into the link checker on this page. It lists the tags, shows which GA4 channel the visits land in, and flags what splits or loses data: capitals, spaces, missing source, medium or campaign, and repeated tags.

Yes. Switch the builder to "Several channels", enter the landing page and campaign, and tick the channels: Facebook and Instagram ads, posts, LinkedIn, TikTok, YouTube, email, partner sites, QR codes. You get one correctly tagged link per channel, each with the GA4 channel it will land in, to copy one by one, copy all into a spreadsheet, or download as a CSV.

Fill in the builder, then use "Share this setup with your team". It copies a link that opens the builder already filled in with your landing page, campaign and tags, so colleagues and clients only change what they need. Nothing is stored on our side: the setup lives in the link itself.

The campaign ID parameter. GA4 uses utm_id to match visits with cost data you import from ad platforms that Google doesn't connect automatically. It's optional: open "Keyword and campaign ID" in the builder to add it. Unlike the other tags it is kept exactly as typed, because IDs are case-sensitive.

In Google Analytics 4: Reports → Acquisition → Traffic acquisition, or filter any report by session source/medium. Visits arrive labeled exactly as you tagged them.

Urchin Tracking Module. Urchin was the analytics company Google bought in 2005 and turned into Google Analytics; the utm_ parameters kept the name. Today they're a standard that GA4, Matomo, HubSpot and most marketing tools read.

Yes. UTM parameters are part of the link, not the website, so they work on any platform. The analytics on the destination site (GA4 or another tool) reads them when the visitor arrives.

Final note

Have a project in mind?

A discovery call costs nothing and commits you to nothing. We talk about your business, and I tell you honestly what's worth building and what isn't.

Projects from $600₹25,000HK$5,000NT$19,000 · Response within one business day · Free website audit