UTM Builder
Free campaign URL builder for GA4, Google Ads, Meta, and every channel
Tag any URL with utm_source, utm_medium, utm_campaign, and 6 more parameters in seconds. 22 one-click channel presets, live validation with auto-fix, batch mode with CSV export, URL parser, and saved templates. Runs 100% in your browser.
One-click channel presets
Sets source + mediumUTM parameters
Where the traffic originates: google, facebook, newsletter, partner_name
The marketing medium: cpc, email, paid_social, referral, organic
The specific campaign name: spring_sale_2026, q2_launch, black_friday
Optional. Match this to the campaign ID in your ad platform for one-to-one reporting
Saved templates
Saved templates appear here. Useful for team UTM conventions you reuse across campaigns.
How to build a tracked campaign URL
Pick a channel preset, fill in the campaign name, copy the URL. The hard part is the convention. The tool handles the syntax and validates your inputs before you ship.
Pick a channel preset
One click sets utm_source and utm_medium for Google Ads, Meta, LinkedIn, TikTok, email, QR codes, and 16 more channels. Keeps naming consistent across your team.
Fill in campaign name
Name your campaign (spring_sale_2026, q2_product_launch, black_friday). The tool auto-fixes spaces and uppercase, warns on special chars, and shows a live URL preview.
Copy or export
Copy as plain URL, Markdown link, HTML anchor, or JSON. For batch campaigns, paste a list of channels and export every URL as CSV. Save templates for the conventions you reuse.
What Is a UTM Parameter?
A UTM parameter is a tag appended to the end of a URL that tells your analytics platform where the click came from. The U-T-M stands for Urchin Tracking Module (a legacy from the Urchin Analytics tool that became Google Analytics). The tags themselves are still the universal standard 20 years later.
A URL with UTM parameters looks like this:
When a user clicks that link, GA4 (or your analytics of choice) reads the parameters from the URL and attributes the session to the source, medium, and campaign you specified. Without UTMs, that same click would show up as "referral" or "direct" with no campaign context, and you would not know which ad, email, or post drove the result.
The KeyGrow UTM Builder turns the manual string-concatenation work into one paste. It enforces naming conventions, validates inputs, supports all 9 GA4 UTM parameters, generates URLs for 22 common channels in one click, and exports a whole campaign worth of URLs as a CSV when you need to tag a launch across 20 placements at once.
Every UTM Parameter, Explained
Most marketers know utm_source, utm_medium, and utm_campaign. GA4 supports 6 more. Here is the full list and when each one matters.
| Parameter | Required | Example | What it does |
|---|---|---|---|
| utm_source | Yes | Where the click came from. One unique value per platform: google, facebook, newsletter, partner_name. | |
| utm_medium | Yes | cpc | The marketing medium: cpc, email, paid_social, organic, referral, affiliate. Drives default channel grouping in GA4. |
| utm_campaign | Yes* | spring_sale_2026 | The specific campaign name. One of utm_campaign or utm_id is required by GA4. |
| utm_id | Yes* | 12345 | Campaign ID. Match this to the campaign ID in Google Ads or Meta for 1:1 reporting in GA4. |
| utm_term | No | running_shoes | The paid keyword that triggered the ad. Mostly used for search ads. Auto-set by Google Ads if you enable tracking templates. |
| utm_content | No | cta_button_v2 | Differentiates ads or links pointing to the same URL. Use for A/B testing creatives, header vs footer CTAs, ad variant labels. |
| utm_source_platform | No | sa360 | GA4-only. The platform that delivered the click: sa360, dv360, google_ads. Adds another reporting dimension. |
| utm_creative_format | No | display | GA4-only. Format of the creative: display, video, native, search, banner. Useful for cross-format campaign reporting. |
| utm_marketing_tactic | No | remarketing | GA4-only. Targeting strategy: remarketing, prospecting, lookalike, retargeting. Separates funnel stages in reporting. |
*Required: GA4 expects at least one of utm_campaign or utm_id. The other 4 (source, medium, term, content) are the legacy GA convention. The last 3 (source_platform, creative_format, marketing_tactic) are GA4 additions and are not yet supported by all analytics platforms.
UTM Naming Conventions That Save Reporting Sanity
A poorly named UTM creates a fake new channel in GA4. paid_social, paidsocial, social_paid, and paid-social show up as four different mediums. After 6 months of campaigns, your channel grouping is unusable. Here are the rules that prevent it.
Always lowercase
utm_source=Google and utm_source=google are two different sources in GA4. Pick lowercase as your standard and never deviate. The tool has a force-lowercase toggle that catches this every time.
One separator across all fields
Pick underscore or hyphen and stick to it. spring_sale_2026 and spring-sale-2026 are different campaigns in GA4. Most teams use underscore because that is the historical UTM convention and matches Google Ads campaign naming.
Unique source per platform
Use utm_source=facebook and utm_source=instagram, not utm_source=social for both. The whole point of utm_source is to tell platforms apart. Lumping them defeats the tracking.
Standard medium values
Stick to GA4's recognized medium values: cpc, email, paid_social, organic, referral, affiliate, organic_social, organic_video, paid_video, audio, display. Custom medium values get bucketed as "(other)" in channel grouping.
Date or version in the campaign name
spring_sale_2026 beats spring_sale every time. When you run the same campaign next year, the year-tagged version keeps last year's data intact for year-over-year reporting. Same for product launches: q2_2026_product_launch.
Use utm_content for creative variants
When you run 3 ad creatives in the same campaign, give each a unique utm_content (creative_a, creative_b, creative_c, or hero_image, carousel, video). That is the only way to see per-creative performance in GA4 without going into the ad platform.
Never tag internal links
Tagging your own nav, footer, or in-page CTAs with UTMs breaks attribution. When a user lands from a Google Ads click and then clicks an internal UTM-tagged button, GA4 starts a new session attributed to the internal UTM. Reserve UTMs for inbound traffic only.
Google Ads Auto-Tagging vs Manual UTMs
If you run Google Ads with auto-tagging enabled (the gclid parameter), you usually do not need to add manual UTMs to your Google Ads URLs. Auto-tagging passes a richer set of dimensions to GA4 than UTMs do, including campaign type, network, device, and match type.
But there are cases where manual UTMs on Google Ads still matter:
- You use an analytics platform that does not read gclid (most non-Google tools).
- You want a consistent UTM convention across all paid channels for easier multi-platform reporting.
- You need the exact campaign name in your CRM and your CRM only parses URL parameters, not gclid.
- You are running Performance Max or Demand Gen and want to override the default source/medium that gets reported.
When you add manual UTMs to a Google Ads URL with auto-tagging on, GA4 uses the UTMs and ignores the auto-tag data. That can be what you want or the opposite, depending on your setup. The general rule: if you have one analytics platform (GA4) and one ad platform (Google Ads), leave it on gclid and skip UTMs for paid search. For everything else, use UTMs.
Meta, LinkedIn, TikTok, and X do not auto-tag. They rely entirely on UTMs you build. Same for email tools (Mailchimp, Klaviyo, HubSpot), affiliate platforms, and any other inbound source. The UTM Builder is built specifically for those channels.
Who Uses a UTM Builder
Anyone who runs marketing and wants to know what worked. The four roles that get the most out of a Builder like this one.
Performance marketers
Tag every paid campaign across Meta, LinkedIn, TikTok, and X with consistent UTMs. Use batch mode to generate 30 ad variant URLs in one paste. Match utm_id to ad platform campaign IDs for 1:1 reporting.
Email and lifecycle teams
Generate UTMs for every broadcast, drip step, and transactional template. Save common templates so the team uses the same source and medium values every time. Avoid the "newsletter vs Newsletter vs email_newsletter" mess.
Agency teams running multi-client campaigns
Build a UTM convention document once, save templates per client, batch-generate launch URLs. Hand the CSV to the client or paste them into the ad platform without re-typing.
Founders and solo marketers
Tag every link you share on social, in newsletters, in podcasts, on QR codes. Get a clear picture of which channels actually drive traffic, without paying for an enterprise analytics tool to organize it for you.
UTM Builder questions answered
Everything you need to know about tagging campaign URLs, building consistent UTM conventions, and tracking inbound traffic in GA4.
A UTM parameter is a tag added to the end of a URL that tells analytics tools where the click came from. UTM stands for Urchin Tracking Module, named after the legacy tool that became Google Analytics. The five legacy parameters are utm_source, utm_medium, utm_campaign, utm_term, and utm_content. GA4 adds four more: utm_id, utm_source_platform, utm_creative_format, and utm_marketing_tactic. When a user clicks a URL with UTMs, GA4 reads them and attributes the session to the source, medium, and campaign you specified.
Yes. The KeyGrow UTM Builder is 100% free with no signup, no login, no email gate, and no usage limits. Generate unlimited single URLs, batch up hundreds of URLs at once, save unlimited templates to your browser, and download as many CSV exports as you want. There is no paid tier and no upsell inside the tool. We offer it as a free utility from KeyGrow, a marketing agency that helps brands rank on Google and AI search engines.
No. The UTM Builder runs entirely in your browser using client-side JavaScript. Your URLs, parameters, batch lists, and CSV exports never touch our servers and never get logged. Saved templates and recent URL history stay in your browser localStorage, not on our servers. You can verify this by opening DevTools network tab while building URLs. The tool also works offline after the first page load.
All 9 official GA4 UTM parameters. The 5 legacy ones (utm_source, utm_medium, utm_campaign, utm_term, utm_content) are supported by every analytics platform. The 4 GA4 additions (utm_id, utm_source_platform, utm_creative_format, utm_marketing_tactic) are supported by GA4 and increasingly by other platforms. Required fields are utm_source, utm_medium, and one of utm_campaign or utm_id. The tool warns when a required field is empty.
The tool ships with one-click presets that pre-fill utm_source and utm_medium for the channels most marketers use: Google Ads (cpc), Facebook Ads, Instagram Ads, LinkedIn Ads, TikTok Ads, X (Twitter) Ads, Reddit Ads, Pinterest Ads, YouTube Ads, Bing Ads, Google Organic, YouTube Organic, Newsletter, Email Blast, Transactional Email, QR Code, Print Ad, SMS, Affiliate, Influencer, Podcast, and Webinar. Click a preset, fill in the campaign name, copy the URL. Saves the team from re-debating "should we use facebook or fb" for the hundredth time.
Either works, but pick one and stick to it. spring_sale_2026 and spring-sale-2026 are two different campaigns in GA4 if you mix them. Most teams use underscores because that is the historical UTM convention and matches Google Ads campaign naming conventions. The KeyGrow UTM Builder defaults to underscore and offers a hyphen toggle. Both characters are treated as word boundaries by GA4 search and filters.
Yes. Each field gets live validation that warns you about: uppercase characters (case mismatch breaks GA4 grouping), spaces (encoded as %20 and ugly in reports), special characters beyond letters/numbers/hyphen/underscore (can break some analytics filters), and over-long values (over 100 chars makes URLs hard to share). With Auto-fix on blur enabled, the tool quietly converts spaces to your chosen separator and lowercases when you tab away from a field.
Switch to Batch mode at the top of the tool. Paste one campaign per line in the format source,medium,campaign,term,content (term and content are optional). The tool generates a UTM-tagged URL for each row using the destination URL you set above. Copy all URLs to clipboard with one click, copy individual rows, or download every original-and-URL pair as a CSV file ready to import into Google Sheets, the ad platform, or your campaign brief. There is no row limit.
Yes. In Single mode, click "Parse existing URL" above the destination URL field. Paste a URL with UTM parameters and the tool decomposes it into the editable form fields: it pulls out the base URL, every UTM parameter it finds, and preserves any non-UTM query parameters that were on the original URL. Useful when you have an old UTM URL and want to bump the campaign name or change a creative variant without rebuilding from scratch.
Templates let you save a complete set of UTM parameters under a name, then reapply them with one click. Useful for your team conventions, recurring campaign series, or client-specific naming patterns. For example, save "Google Ads Brand" with source=google, medium=cpc, campaign=brand_2026, then just hit the template button next time you need it. Templates stay in your browser localStorage. They are not synced to our servers, so they are private to that browser on that device.
Google's builder is a basic 7-field form with no presets, no validation, no batch mode, no templates, and no URL parser. The KeyGrow UTM Builder adds 22 one-click channel presets, live validation with auto-fix, batch mode with CSV export, URL parser to decompose existing UTM URLs, all 9 GA4 parameters (Google's tool shows 7), 4 copy formats (plain URL, Markdown, HTML anchor, JSON), saved templates with localStorage persistence, a browser-frame URL preview, and live SEO-friendly length scoring. Everything still runs entirely in your browser.
Usually not, if you use GA4 with Google Ads auto-tagging (gclid) on. Auto-tagging passes more data than UTMs do, including device, network, and match type. Adding manual UTMs on top causes GA4 to use the UTMs and ignore the auto-tag data, which can be the opposite of what you want. Exceptions: if you use a non-Google analytics platform that does not read gclid, if you need consistent UTMs across all paid channels, or if your CRM only parses URL params and not gclid. For Meta, LinkedIn, TikTok, X, email, and every other channel that does not auto-tag, you always need manual UTMs.
utm_id is the campaign ID parameter. Use it to match the campaign ID from your ad platform (Google Ads campaign ID, Meta Ads campaign ID, etc.) so GA4 can do 1:1 attribution between sessions and campaigns. GA4 actually requires either utm_campaign or utm_id to be present, so utm_id can replace utm_campaign in your tagging if you prefer ID-based reporting. Most teams use both: utm_campaign for human-readable reports, utm_id for machine-readable campaign linking.
utm_content differentiates ads or links that point to the same URL. Use it for A/B testing creatives, ad variant labels (hero_image, carousel, video), or to track which CTA on a page got the click (header_cta vs footer_cta vs sidebar_cta). When you run 3 ad variants in the same campaign, give each a unique utm_content value and you can see per-variant performance in GA4 without going into the ad platform. It is the most underused UTM parameter and one of the highest-value when you do use it.
Yes. Below the generated URL are four copy buttons: Copy URL (plain), Markdown ([campaign_name](URL) format ready for docs and notes), HTML link (anchor tag with campaign name as link text), and JSON (structured object with base URL, full URL, and params object). Useful for shipping a campaign launch with all formats ready: the URL goes in the ad platform, the markdown goes in the launch brief, the HTML anchor goes in the email template, the JSON goes in the team Slack message.
No. UTM parameters are just query string values. They do not load any extra resources, do not run any JavaScript, and do not affect page rendering. Some Single Page Applications strip query parameters during client-side routing, but UTMs are read by analytics tags during the initial page load (before routing takes over) so they still get captured. Best practice: make sure your analytics tag fires on the landing page before any client-side navigation strips the UTM params.
Indirectly, in one specific case. Google can index URLs with UTM parameters as separate URLs from the clean version, which creates duplicate content. The fix is canonical tags on your pages pointing to the clean URL (no UTMs). All modern CMS platforms handle this automatically. For most marketers, UTMs and SEO are unrelated: UTMs are for inbound campaign URLs (where SEO does not matter because the traffic is paid or referred), and your organic landing pages are not the ones getting UTM-tagged.
Yes. The tool is fully responsive. The form, channel preset chips, options sidebar, batch table, and copy buttons all reflow for narrow screens. Templates and history persist on the device. Copy buttons use the native clipboard API and work on mobile Safari, Chrome, and Firefox. For long batch lists, a desktop browser is more comfortable to scroll, but mobile works for quick single-URL generation on the go.
Tracking is set. Is your funnel converting?
Clean UTM data shows you where traffic comes from. Our team turns that traffic into customers with PPC, SEO, AEO, and landing pages built to convert. Free audit, no obligation.
Get Free Growth AuditYour tracking is dialed. Is the campaign actually converting?
UTMs tell you where traffic came from. We help you turn that traffic into customers with PPC, SEO, AEO, and landing pages built to convert. Free audit, no obligation.
Google Ads + Meta Ads
Paid campaigns built to hit ROAS targets. Smart Bidding, audience strategy, creative testing, and reporting that ties spend to revenue.
SEO and AEO
Rank on Google and get cited inside ChatGPT, Claude, Gemini, and Perplexity. Keyword research, content, schema, and AI search optimization.
Conversion-Built Pages
Landing pages, service pages, and blog content built to rank and convert. Clear copy, fast load, structured for AI parsing.