Free Tool · Runs in your browser

UTM Builder

Build tracked links for Google Analytics in seconds. Paste your URL, fill in the campaign, copy the result. Nothing leaves your browser.

The page you're sending people to. Must start with https:// or http://

Where the click came from

The broad channel

The campaign name

Advanced — utm_term & utm_content

Paid-search keyword (mostly used for Google Ads)

A/B-test or creative variant (e.g. hero_cta vs footer_link)

What is a UTM, and do you actually need one?

UTM stands for “Urchin Tracking Module” — the original Urchin Analytics company (acquired by Google in 2005, became Google Analytics). The parameters are query-string tags appended to a URL that tell your analytics platform where the click came from. Without them, every visit from social media, email, or paid ads collapses into a generic “direct” or “referral” bucket in your reports.

Real answer: if you only ever post one link from one channel, you don't need UTMs. If you post the same link across Instagram, your newsletter, and a paid ad, you absolutely do — otherwise you can't tell which channel actually drove the conversion you're paying for.

The build is mechanical: five named parameters (utm_source, utm_medium, utm_campaign, utm_term, utm_content) appended as query params. Three are GA4-required, two are optional. The hard part isn't the syntax — it's establishing a naming convention you stick to so the “Facebook” you tagged in March doesn't become “facebook” in May and split your reports.

The 5 UTM parameters, in order of how often you'll use them

Three required, two optional. Memorize the first three — they're 95% of what you'll ever set.

utm_source

RequiredWHERE the click came from

The specific platform or publisher. Use the platform's common-name slug (lowercase, no spaces): "instagram", not "Instagram" or "ig". This is the only required parameter that can't be inferred — without it, GA4 attributes the visit as (direct).

Examples:instagramnewslettergoogletwitterlinkedinbing

utm_medium

RequiredThe broad CHANNEL category

GA4 uses utm_medium to group sources into channel buckets — "social" rolls up Instagram + Facebook + TikTok + LinkedIn into one "Social" channel report. Stick to the GA4-standard mediums: social, email, cpc (paid search), display (banner ads), video, affiliate, referral.

Examples:socialemailcpcvideoaffiliatereferral

utm_campaign

RequiredThe specific campaign NAME

The internal name for what you're running. Snake_case or kebab-case lowercase. Reuse the same campaign name across every channel of the same effort — same "spring_sale_2026" on Instagram + newsletter + Google Ads — so GA4 can roll up the campaign's total impact across channels.

Examples:spring_sale_2026product_launch_aprwebinar_april

utm_term

OptionalThe paid-search KEYWORD

Mostly used for Google Ads paid search — most platforms auto-populate this with the actual search keyword via the {keyword} dynamic value in the ad destination URL. Outside paid search, utm_term is rarely useful.

Examples:social_media_schedulerinstagram_scheduler{keyword}

utm_content

OptionalThe CREATIVE / variant differentiator

A/B testing live within a single campaign. Same source/medium/campaign across two ads, but utm_content="video_a" vs utm_content="video_b" lets you measure which creative drove more clicks. Also useful for differentiating "header link" vs "footer link" in the same newsletter.

Examples:hero_ctafooter_linkvideo_asubject_line_b

UTM templates per platform

Copy the source / medium pair we recommend per channel. The builder above auto-fills these when you pick a template — this table is the reference.

Platformutm_sourceutm_mediumNotes
📸InstagraminstagramsocialStandard preset for Instagram feed, Reels, and Stories link-in-bio.
👍FacebookfacebooksocialUse for Facebook Page posts. For Facebook Ads, use the "Google Ads / paid" preset instead.
🎵TikToktiktoksocialTikTok bio links and Spark Ads. Track per-video by setting different utm_content values.
💼LinkedInlinkedinsocialLinkedIn feed, Company Page posts, and bio links.
𝕏X / TwittertwittersocialTrack links posted to X / Twitter. Use utm_content to separate tweet variants.
▶️YouTubeyoutubevideoVideo descriptions and channel "About" link. utm_medium=video keeps it out of social reports.
🧵ThreadsthreadssocialThreads posts and profile bio link.
🦋BlueskyblueskysocialBluesky posts and bio. Same convention as other organic-social channels.
📌PinterestpinterestsocialPin destinations and Idea Pin links.
🤖RedditredditsocialReddit comment / post links. Be careful — Reddit hides links with obvious UTMs in some subs.
✉️Email NewsletternewsletteremailStandard newsletter / broadcast email. Differentiate variants with utm_content.
🅖Google AdsgooglecpcPaid search. utm_term should auto-populate with the matched keyword via {keyword} in your ad URL.

5 UTM mistakes that quietly break your analytics

All of these still happen in 2026 because nobody catches them until the quarterly report — by then the data is already split.

Mixing uppercase and lowercase values

GA4 treats values as case-sensitive — "Facebook", "FACEBOOK", and "facebook" become three separate rows in your acquisition report. Stick to lowercase everywhere; the builder above warns you on uppercase. If your reports are already polluted, channel grouping rules in GA4 can collapse the duplicates retroactively.

Fix: Lowercase everything, always.

Spaces in parameter values

A value like "summer sale" gets URL-encoded as "summer%20sale" in the link and shows up that way in some analytics dashboards. Use underscores ("summer_sale") or hyphens ("summer-sale") instead. Pick one separator style and stick to it across all campaigns.

Fix: Replace spaces with _ or -

Tagging internal links on your own site

A UTM-tagged link inside your own site (e.g., a sidebar promo on your blog linking to your pricing page) overrides the original referrer, making it look like the visitor came from "internal navigation" when they actually came from Google. Never put UTMs on internal links — only on links from external sources you control (your social posts, emails, ads).

Fix: Use UTMs only on EXTERNAL links pointing TO your site.

Inconsistent campaign naming across channels

If your spring sale uses utm_campaign=spring_sale_2026 on Instagram but utm_campaign=spring-launch on the newsletter, GA4 can't roll them up into one campaign report. Pick the campaign name first, then use it everywhere for that effort. Document the conventions in a shared doc so the team uses the same names.

Fix: Pick one campaign name and use it across every channel for that effort.

Forgetting that URL shorteners can strip UTM params

Some link shorteners (especially older ones) drop query parameters during the redirect — your tracked URL becomes untracked the moment it goes through the shortener. Always test the final shortened URL: paste it into a browser, hit enter, then check the URL bar after the redirect to confirm the utm_* params survived.

Fix: Always test a shortened tracked URL end-to-end.

UTM builder vs. URL shortener — which do you need?

Different jobs. Most marketers use both.

UTM Builder

Adds tracking parameters TO a URL. The link gets longer; the destination is visible; analytics platforms read the params.

  • Use when you need to know which channel drove the visit.
  • Use when you run the same offer across multiple channels and want to compare them.
  • Output: long, transparent URL with the destination visible.

URL Shortener (Bitly, TinyURL)

Replaces a URL with a short redirect. The link gets shorter; the destination is hidden; analytics has to read the original URL after the redirect.

  • Use when the link is going somewhere with a character limit (Twitter, SMS).
  • Use when the long UTM URL would look spammy in a Slack / Discord preview.
  • Output: short, opaque URL.
If you do both: build the UTM-tagged URL first using this tool, then drop it into Bitly or your preferred shortener. Important: some shorteners strip query parameters during the redirect — always test the final shortened link end-to-end (paste it, follow it, check the destination URL bar shows the utm_* params).

Building UTMs for 10 channels by hand?

SocialCal auto-tags every cross-posted link with platform-specific UTMs so you can stop copy-pasting the same destination through this builder ten times per campaign.

Try SocialCal Free
Frequently asked

UTM builder — FAQ

A UTM builder is a tool that appends Google Analytics tracking parameters (utm_source, utm_medium, utm_campaign, utm_term, utm_content) to a URL. The parameters tell Google Analytics 4 — or whatever analytics platform you use — where the traffic came from, so you can see which Instagram post, newsletter, or paid ad actually drove the visit. This builder runs entirely in your browser; nothing is sent to a server.

GA4 needs three parameters to attribute a visit correctly: utm_source (where the click came from — "instagram", "newsletter"), utm_medium (the broad channel — "social", "email", "cpc"), and utm_campaign (the specific campaign name). utm_term and utm_content are optional. utm_term is mostly used for paid-search keywords; utm_content separates A/B-tested creative variants of the same campaign.

GA4 treats UTM values as case-sensitive. "Facebook", "FACEBOOK", and "facebook" become three rows in your acquisition report. Stick to lowercase everywhere — our builder warns you when you accidentally capitalize a value. If you already have a mess in GA4, you can clean it up with channel grouping rules.

No. Use underscores or hyphens instead — "summer_sale" or "summer-sale", not "summer sale". Spaces get URL-encoded as %20 which is ugly in reports and easy to typo. Lowercase letters, numbers, underscores, and hyphens are the safest character set across every analytics platform.

A UTM builder appends tracking parameters to an existing URL — the link gets longer and clearly shows the parameters. A URL shortener (Bitly, TinyURL, t.co) replaces the URL with a short redirect — cleaner-looking but you lose visibility into the destination. Many marketers use both: build the UTM-tagged URL first, then shorten it with Bitly. Just be careful — some shorteners strip UTM parameters in the redirect, so test your final link before posting.

Yes — UTM parameters are a standard, not a Google-specific format. HubSpot, Mixpanel, Plausible, PostHog, Fathom, and every other analytics tool reads the same utm_source / utm_medium / utm_campaign convention. You don't need a separate builder per platform.

Yes — use utm_content. Keep utm_source / utm_medium / utm_campaign the same across a campaign, then vary utm_content per asset. For example: utm_content=hero_button vs utm_content=footer_link on the same newsletter, or utm_content=video1 vs utm_content=video2 on TikTok. GA4 will show the rollup by campaign AND the per-variant breakdown.

The 5 most recent URLs you built are saved to your browser's local storage so you can re-load them with one click. Nothing is sent to our servers, nothing is shared, and clearing your browser data wipes the history. Open the page in an incognito window and the history starts fresh.

Most browsers and platforms handle URLs up to ~2,000 characters without issue, but in practice keep your tagged URL under 500 characters. Long UTM values are harder to debug, get truncated in analytics dashboards, and look spammy in Slack / Discord previews. If you need long campaign names, build the URL and then run it through a shortener.

Yes — when you schedule a post in SocialCal, you can attach a base destination URL and we'll generate platform-specific UTM-tagged variants per channel (instagram/social, tiktok/social, linkedin/social, newsletter/email, etc.) automatically. Saves the copy-paste loop of running the same link through this builder once per platform.

More Free Tools

Explore our full suite of free social media tools — no signup required.

Fake Tweet Generator

Create realistic X/Twitter post mockups for presentations

Free Tool

LinkedIn Carousel Maker

Design scroll-stopping LinkedIn carousel posts

Free Tool

Post Previewer

Preview your posts across multiple platforms before publishing

Free Tool

Instagram Downloader

Download Instagram photos, videos, Reels & Stories

Free Tool

X/Twitter Downloader

Download videos and media from X/Twitter posts

Free Tool

Instagram Grid Splitter

Split images into perfect Instagram grid tiles

Free Tool

Grid Planner

Plan and preview your Instagram profile grid layout

Free Tool

Social Video Resizer

Crop & resize videos for TikTok, Reels & Shorts

Free Tool

ROI Report Generator

Generate monthly social media ROI impact reports

Free Tool

Viral Hook Tester

A/B test social media hooks with engagement scoring

Free Tool

Link Previewer

Debug Open Graph and Twitter Card link previews

Free Tool

Snapchat Downloader

Download Snapchat Stories & Spotlight videos

Free Tool

YouTube Thumbnail Downloader

Download public YouTube thumbnails in HD, SD, HQ, or MQ sizes.

Free Tool

Image Converter

Resize, compress & convert images to WebP, AVIF, JPG or PNG

Free Tool

Image Size Checker

Check image dimensions, file size & aspect ratio — and which platforms it fits.

Free Tool

Video Compressor

Shrink MP4 files for TikTok, Instagram & WhatsApp. No upload.

Free Tool

Video to GIF

Convert MP4, MOV & WebM into sharp, lightweight GIFs. Browser-based, no watermark.

Free Tool

Video Transcriber

Transcribe video & audio to text with AI. Export as SRT, VTT, or TXT.

Free Tool

Instagram Caption Spacer

Add invisible line breaks to Instagram captions

Free Tool

Background Remover

Remove image backgrounds in your browser — no upload, no signup, no watermark

Free Tool

Twitch Emote Resizer

Resize any image to Twitch's 28×28, 56×56, 112×112 sizes — PNG & animated GIF

Free Tool

Engagement Rate Calculator

Calculate ER for Instagram, TikTok, Reels & 6 more platforms

Free Tool

Best Time to Post Calculator

Engagement heatmap + top windows for 10 platforms. Auto-detected timezone, day-by-day breakdown.

Free Tool

Thread Splitter

Split long text into threads for X, Threads, Bluesky, Mastodon & LinkedIn

Free Tool

QR Code Generator

Custom static QR codes with color, logo & SVG/PNG export. Social presets included.

Free Tool

YouTube Chapter Generator

Generate YouTube chapters from any URL, transcript, or SRT. Validates the rules YouTube silently enforces.

Free Tool

Character Counter

Live character counter for X, Instagram, LinkedIn, TikTok, Threads, Bluesky & 3 more. Grapheme-aware, URL-smart.

Free Tool

Hashtag Generator

AI hashtag sets per platform — 5 for Instagram, 4-6 for TikTok, 1-2 for X, 1 for Threads. Free, no signup.

Free Tool

Trending TikTok Hashtags

This week's top TikTok hashtags by industry. Live data from TikTok Creative Center, refreshed weekly.

Free Tool

Trending TikTok Songs

This week's top TikTok sounds across 10 genres. Live from TikTok Creative Center, refreshed weekly.

Free Tool

Popular Instagram Hashtags

450+ Instagram hashtags across 18 niches with Mega / Mid / Niche tier badges. Reels boost set included.

Free Tool

Instagram Caption Generator

AI Instagram captions tuned for the 2026 algorithm. Pick Story, Educate, or Sell — get hook, body, and CTA.

Free Tool

AI Caption Generator

Per-platform captions, posts, and descriptions for Instagram, TikTok, Snapchat, Facebook. Story / Educate / Sell goals.

Free Tool

AI Voice Generator

Free AI voice generator for TikTok, Reels & Shorts. 8 studio voices, length presets per platform, MP3 download with no watermark.

Free Tool

YouTube Dislike Viewer

See the like/dislike ratio YouTube hid in 2021. Ratio bar + leaderboard of all-time most-disliked videos.

Free Tool

Username Checker

Check handle availability across Instagram, TikTok, YouTube, X, Threads, Bluesky & GitHub in one click.

Free Tool

Twitter Shadowban Checker

Test if you're shadowbanned on X — search ban, ghost ban, reply deboost, all 4 detected in 10 seconds.

Free Tool

Bold Text Generator

Make any social media post stand out with 𝗯𝗼𝗹𝗱, 𝘪𝘵𝘢𝘭𝘪𝘤, and 4 more Unicode styles. Free, no signup.

Free Tool

Line Break Generator

Add real paragraph spacing to social posts. Invisible Braille blanks survive every major platform.

Free Tool