UTM Builder

Build trackable UTM campaign URLs free. Add source, medium, and campaign tags with correct encoding. Track email, ad, and social traffic in analytics.

UTM Builder
Destination
Existing query parameters and any #section anchor are preserved — tags are inserted before the anchor, where analytics tools expect them.
Quick presets
Each preset fills source and medium with the values Google Analytics recognises for that channel. You can still edit them afterwards.
Campaign parameters
Where the traffic comes from.
The kind of link it is.
The promotion this link belongs to.
Ties the link to an ad platform campaign ID in GA4.
Paid keyword, for search ads.
Tells two links in the same campaign apart.
Google Analytics treats Facebook and facebook as two different sources, which silently splits one campaign across two rows in your reports. Lower casing prevents that.
Your tracking URL
Fill in the fields above and the link builds itself here.
Saved links this session
    What each parameter does
    ParameterRequiredWhat it answersExample
    utm_sourceYesWhich site or list sent the visitornewsletter
    utm_mediumYesWhat kind of link it wasemail
    utm_campaignYesWhich promotion it belongs tospring-sale-2026
    utm_idOptionalTies the click to an ad platform campaign IDss-2026-01
    utm_termOptionalWhich paid keyword was boughtrunning-shoes
    utm_contentOptionalWhich creative or link position was clickedhero-banner
    Everything happens inside your browser. No URL you build or paste is sent anywhere.

    How to use the UTM builder

    Step 1 — Enter the destination URL

    Paste the page you want people to land on. You can leave off https:// — the tool adds it and tells you it did. Two things are handled that catch out simpler builders:

    • Existing query parameters are kept. If your URL already reads ?id=7&ref=abc, those survive and the UTM tags are appended after them.
    • Anchors stay at the end. A link ending #pricing keeps the anchor last, where it belongs. Builders that simply glue parameters onto the end produce #pricing&utm_source=…, and every tag after the # becomes invisible to analytics, because the fragment is never sent to the server.

    Step 2 — Pick a channel preset, or fill the fields yourself

    Eighteen presets fill source and medium with the values Google Analytics recognises for that channel — Google Ads, Microsoft Ads, Facebook organic and paid, Instagram, LinkedIn, X, YouTube, TikTok, Pinterest, WhatsApp, email newsletter, email signature, affiliate, QR code, SMS, podcast and display. Presets are a starting point; every field stays editable.

    Step 3 — Name the campaign

    Source, medium and campaign are the three required parameters. Analytics groups traffic by all three together, so leaving one out makes the visit hard to attribute even though the link still works. The tool warns you which are missing as you type, and explains why each matters.

    Step 4 — Check the warnings, then take the link

    The live preview colour-codes the URL so parameter names and values are easy to scan, and shows the character count and how many of the six tags are set. Copy the URL, open it in a new tab to test it, or copy it as a ready-made Markdown or HTML link. Save to list collects several links before exporting them all as CSV.

    Building a whole campaign at once

    The Bulk builder takes one destination and one campaign name, then a list of channels — one per line as source, medium, content. It generates every link in one pass, shows them in a table with individual copy buttons, and exports the set as CSV ready for a campaign brief or a spreadsheet handover. Lines missing a source or medium are skipped and reported rather than silently producing a broken link.

    Auditing links that already exist

    The Decode tab takes any tagged URL and breaks it into a table: the base destination, each UTM parameter with its value, which required ones are missing, any non-UTM parameters such as gclid or fbclid, and the anchor. It then flags the problems — missing parameters, capital letters, spaces. Send to builder loads it into the Build tab so you can correct and re-issue it.

    About the UTM builder

    A UTM builder turns an ordinary page link into a campaign tracking URL — a link that tells Google Analytics exactly where a visitor came from. Without UTM parameters, a click from your email newsletter, a click from a Facebook post and a click from a paid ad can all land in the same anonymous bucket in your reports. With them, each one is labelled at the moment of the click, and the labels follow the visitor through to whatever they do next.

    UTM stands for Urchin Tracking Module, after Urchin Software, the analytics product Google bought in 2005 and rebuilt into Google Analytics. The parameter names survived the rebrand and are now a de facto standard: Google Analytics 4, Matomo, Adobe Analytics, Plausible, Fathom, HubSpot, Mailchimp and most other platforms read the same six utm_ parameters without any configuration.

    This builder does three jobs. It creates tracking URLs one at a time or in bulk, it validates them against the mistakes that quietly corrupt campaign reporting, and it decodes existing links so you can audit what a colleague or agency has already tagged. Everything runs in your browser — no link you build or paste is ever uploaded, which matters when the URLs contain unreleased campaign names or client landing pages.

    Who this is for

    • Marketers tagging a newsletter, a social post or a paid campaign so the results are attributable in Google Analytics.
    • Agencies building dozens of links for one campaign across many channels, and needing them consistent enough to group cleanly in a report.
    • Anyone auditing a link that already exists — checking whether a partner, affiliate or previous agency tagged it correctly, before the traffic is lost.
    • Print and offline campaigns, where a QR code or a short link needs a trackable destination.

    The UTM parameters explained

    utm_source — required

    The individual site, publication or list the traffic came from. Answers who sent them. Examples: google, facebook, newsletter, partner-blog. Use the specific property, not the category — facebook rather than social, because “social” belongs in the medium.

    utm_medium — required

    The kind of link it was. Answers what type of marketing. Examples: cpc, email, social, referral, banner, affiliate, qr. Google Analytics uses medium to build its default channel groupings, so consistency here decides whether your traffic lands in “Paid Search”, “Email”, “Organic Social” or the dreaded “Other”. Conventional values matter: cpc and ppc map to paid search, email to email, social to social. An invented medium such as newsletter-blast falls into Other and stops being comparable.

    utm_campaign — required

    The promotion, launch or initiative the link belongs to. Answers which effort. Examples: spring-sale-2026, black-friday, product-launch-v2. This is what ties links from different channels together, so keep it identical across every link in the same campaign — that is the whole point of it.

    utm_id — optional

    A campaign ID that ties the click to a campaign in your ad platform. In GA4 this is what allows imported cost data to be joined to the sessions the campaign produced, which is how you get real return on ad spend rather than click counts. If you are not importing cost data, leave it empty.

    utm_term — optional

    The paid keyword that triggered the ad. Mostly used for manually tagged search campaigns. If auto-tagging is enabled in Google Ads, gclid already carries the keyword and you do not need this.

    utm_content — optional

    Distinguishes two links inside the same campaign. This is the A/B testing parameter: the same email with a hero-banner link and a text-link at the bottom tells you which placement people actually click. Examples: hero-banner, footer-cta, variant-a.

    The mistakes that quietly break campaign reporting

    Capital letters split one campaign into two

    Google Analytics treats UTM values as case-sensitive. Facebook and facebook appear as two separate sources, so one campaign shows up as two half-sized rows and every comparison you make is wrong. There is no way to merge them retrospectively without a filter or a BigQuery rewrite. This builder lower-cases values by default, and if you switch that off it tells you what you are risking.

    Spaces become %20

    A space in a campaign name is legal but ugly: spring sale becomes spring%20sale in the URL and often reads that way in reports. Hyphens are the convention, and the tool converts spaces to hyphens by default.

    Tagging your own internal links

    Never put UTM parameters on links between pages of your own site. Doing so starts a brand new session and re-attributes the visitor to the internal link, destroying the record of how they originally arrived. Internal link tracking needs events, not UTMs.

    Duplicate tags on a link that was already tagged

    Appending UTM parameters to a URL that already has them produces the same parameter twice, and analytics reads only one — usually not the one you intended. The builder detects existing tags and replaces them, telling you it has done so.

    Losing tags after the hash

    Anything after # in a URL is never sent to the server, so UTM parameters placed after an anchor are invisible to analytics. This tool always inserts tags before the anchor.

    Frequently asked questions

    What is a UTM parameter?

    A short label added to the end of a URL that tells your analytics tool where the click came from. It is plain text in the query string, starting with utm_, and it does not change the page a visitor sees — only how the visit is recorded.

    What does UTM stand for?

    Urchin Tracking Module. Urchin was the web analytics company Google acquired in 2005, and the parameter names carried over into Google Analytics unchanged.

    What is the difference between utm_source and utm_medium?

    Source is the specific place — facebook, google, newsletter. Medium is the type of link — social, cpc, email. A useful test: if you could name a competitor of it, it is a source; if it describes a marketing method, it is a medium.

    Which UTM parameters are required?

    Three: utm_source, utm_medium and utm_campaign. The link still works without them, but analytics will not group the visit correctly. utm_id, utm_term and utm_content are optional.

    Do UTM parameters affect SEO?

    Not if used as intended. UTM links point at pages you already have, and search engines generally treat the tagged URL as the same page thanks to the canonical tag. The risk appears if tagged URLs get indexed as separate pages — which happens when UTM links are placed where crawlers follow them, such as sitemaps or internal navigation. Keep UTM links to outbound campaigns and make sure your canonical tags are correct.

    Are UTM parameters case-sensitive?

    Yes, in Google Analytics. Email, email and EMAIL are three different mediums. Lower case everything, every time — this builder does it by default.

    How do I create a UTM link for Facebook, Instagram or an email?

    Use the matching preset. Facebook organic is facebook / social, Facebook paid is facebook / cpc, Instagram is instagram / social, and a newsletter is newsletter / email. Add a campaign name and copy the link.

    Can I create many UTM links at once?

    Yes — the Bulk builder generates one link per channel line and exports the whole set as CSV, which is the usual way to hand a campaign over to a team.

    How do I check whether an existing link is tagged correctly?

    Paste it into the Decode tab. You get every parameter listed with its value, a flag on anything required that is missing, and warnings about capitals or spaces. Non-UTM tracking parameters such as gclid and fbclid are identified separately, so you know they came from ad platform auto-tagging rather than from a person.

    Do UTM links expire?

    No. The parameters are read at the moment of the click, so an old link still reports correctly whenever someone finds it — worth remembering for printed material and QR codes that stay in circulation for years.

    Will UTM parameters work with GA4?

    Yes. GA4 reads all six, including utm_id, which GA4 added specifically to join imported campaign cost data to sessions. Nothing about the tagging changed between Universal Analytics and GA4.

    Is this UTM builder free?

    Free, with no sign-up and no limit on how many links you generate. Everything happens in your browser, so campaign names and client URLs never leave your device.