Free · No signup · Runs in your browser

UTM builder

Build clean campaign URLs for Google Analytics 4. Presets put each link in the right GA4 channel, and the checks catch the case and spacing mistakes that split your reports.

Presets
Fill in the URL, source, medium and campaign.

    Bulk: tag many URLs with the same parameters
    01 How to use it

    4 steps, no signup

    1. 01

      Paste the page URL

      The page people should land on. Existing query parameters are kept.

    2. 02

      Pick a preset or fill the fields

      Presets fill source and medium with values GA4 sorts into a predictable channel (print and QR codes have no GA4 channel, so they land in Unassigned). Campaign name is up to you.

    3. 03

      Fix the warnings

      Mixed case, spaces and mismatched values are flagged, because GA4 treats "Email" and "email" as different sources.

    4. 04

      Copy the link

      Copy the tagged URL. Each link you copy is saved in your browser (the last eight) so you can reuse a naming pattern.

    Short answer: a UTM builder adds tracking tags such as utm_source=newsletter&utm_medium=email&utm_campaign=spring-sale to a link, so Google Analytics can tell which campaign sent each visit. Fill in the URL, source, medium and campaign above and copy the result. Use lowercase values that GA4's channel rules recognise.

    What this UTM builder does

    Without UTM tags, a click from your newsletter, a LinkedIn post or a partner's site often shows up in Google Analytics as "direct" or a vague referral, and you can't tell which campaign worked. The UTM builder adds the tags that fix that: utm_source, utm_medium and utm_campaign, plus the optional ones, to any URL.

    It goes further than a form that glues parameters together. Presets use the source and medium values GA4's default channel grouping actually recognises, so a newsletter link lands in "Email" and not "Unassigned". It also catches the mistakes that quietly wreck reports: mixed capitals, spaces, and links tagged as one thing but sent as another.

    The UTM parameters

    ParameterAnswersExampleRequired?
    utm_sourceWhere did the click come from?linkedin, newsletterYes
    utm_mediumWhat kind of channel?social, email, cpcYes
    utm_campaignWhich campaign?spring-sale-2026Yes
    utm_contentWhich link or creative?hero-buttonOptional
    utm_termWhich paid keyword?running-shoesOptional
    utm_idCampaign ID for data importc-1042Optional

    How GA4 sorts your links into channels

    GA4's default channel grouping uses your source and medium to decide the channel. Simplified, from Google's documentation (Analytics Help):

    ChannelMedium that triggers it (examples)
    Cross-networkCampaign name contains cross-network
    Paid Search / Social / Video / ShoppingA search, social, video or shopping site as source, with a paid medium (matches ^(.*cp.*|ppc|retargeting|paid.*)$, so cpc, ppc, paid_social)
    Displaydisplay, banner, expandable, interstitial, cpm
    Paid OtherAny other paid medium
    Organic SocialA social site as source, or social, social-network, social-media, sm as medium
    Organic VideoA video site as source, or a medium containing video
    Organic SearchA search engine as source, or organic as medium
    AI Assistantai-assistant as medium (GA4 also detects some AI assistant referrers)
    Referralreferral, app, link
    Emailemail, e-mail, e_mail, e mail as source or medium
    Affiliatesaffiliate
    Audio / SMSaudio as medium / sms as source or medium
    Mobile Push NotificationsMedium ending in push or containing mobile or notification, or source firebase
    UnassignedAnything GA4 can't match

    Rules are listed in the order Google's page lists them; a link that matches an earlier rule (say, linkedin / paid_social) never reaches a later one. GA4 matches sources against its own long lists of search, social, video and shopping sites, while this builder knows only the common names, and Google updates the rules occasionally, so treat the prediction as a guide.

    A naming convention that keeps reports clean

    1. Lowercase everything. GA4 is case-sensitive.
    2. Hyphens, not spaces. Spaces become %20 and are easy to mistype.
    3. Source = the site or list, medium = the channel type. linkedin / social, not social / linkedin.
    4. Campaign names that sort well: 2026-11-black-friday groups by date in reports.
    5. Write the convention down and share it with anyone who builds links for you.

    A worked example

    Say I'm linking to a pricing page from the header button of a November newsletter. I paste https://example.com/pricing?ref=nav, click the Newsletter preset (source newsletter, medium email), type 2026-11 Black Friday as the campaign and header-button as the content. With lowercase on, the campaign becomes 2026-11-black-friday and the link comes out as:

    https://example.com/pricing?ref=nav&utm_source=newsletter&utm_medium=email&utm_campaign=2026-11-black-friday&utm_content=header-button

    The existing ref=nav parameter stays. Under the link the builder says Likely GA4 channel: Email. Change the medium to newsletter and the prediction flips to Unassigned, which is the mistake the presets exist to prevent.

    What it doesn't do

    • It doesn't shorten links or host redirects. Build here, then shorten with whatever you already use.
    • It doesn't check that the page exists. A typo in the URL still produces a tagged link.
    • The channel prediction is an estimate. It follows Google's published rule order, but GA4 checks sources against much longer site lists, and custom channel groups in your property can change the result.
    • It doesn't sync anywhere. Your recent links live in this browser only; a different device or a cleared cache starts empty.

    Troubleshooting

    • "That URL doesn't look valid." The address couldn't be parsed. Check for spaces or stray characters; the https:// part is optional.
    • The Copy link button is greyed out. URL, source, medium and campaign are all required before a link is built.
    • "Looks like a source, not a medium." You put a platform name such as linkedin in the medium field. Move it to source and use social as the medium.
    • Bulk output shows INVALID: That line couldn't be read as a URL. Fix it and the line updates as you type.
    • Visits still show as direct in GA4. Check the tags survive the click: some redirects and in-app browsers strip query strings. Open the final URL and look at the address bar.

    Common UTM mistakes

    • UTMs on internal links. They start a new session and overwrite the real source.
    • UTMs on Google Ads links when auto-tagging is on. Let gclid do the work.
    • Inconsistent spellings: fb, facebook, Facebook.com. Pick one per platform.
    • Putting the campaign in the medium, which sends traffic to "Unassigned".
    • Tagging organic search links. Google already attributes those.

    Related tools

    Before you send the campaign, preview how the landing page looks in Google with the SERP snippet preview and test your email's subject line with the subject line tester. If AI assistants are sending you traffic, the AI traffic loss calculator and the AI crawler log analyzer cover the other side. Google's own guide to custom campaign URLs lists every parameter GA4 reads.

    Privacy

    Links are built in your browser. Your recent links are saved only in this browser's local storage, never on a server, and the Clear button deletes them.

    Last checked and updated: . Everything on this page runs in your browser; nothing you enter is sent anywhere.

    FAQ

    Frequently asked questions

    What are UTM parameters?
    Tags added to the end of a URL (like ?utm_source=newsletter&utm_medium=email) that tell analytics tools where a visit came from. Google Analytics reads them to attribute traffic to a source, medium and campaign.
    Which UTM parameters are required?
    For Google Analytics, utm_source, utm_medium and utm_campaign are the core three. utm_term and utm_content are optional; GA4 also reads utm_id, utm_source_platform, utm_creative_format and utm_marketing_tactic.
    Are UTM parameters case-sensitive?
    Yes. GA4 reports "Facebook", "facebook" and "FACEBOOK" as three different sources. The builder converts everything to lowercase by default to keep your reports clean.
    What should utm_medium be?
    Use the values GA4's default channel grouping recognises: email, social, cpc or paid variants for paid search, display, affiliate, referral, organic. A custom medium like "newsletter-blast" lands in "Unassigned".
    Should I use UTMs on Google Ads?
    Usually not. Google Ads auto-tagging (the gclid parameter) passes richer data to Google Analytics automatically. Use UTMs for every other platform: Meta, LinkedIn, newsletters, partners, QR codes.
    Should I use UTMs on internal links?
    No. A UTM on a link from one page of your site to another starts a new session attributed to that fake campaign, which overwrites the real source. Use UTMs only on links from outside your site.
    Do UTM parameters affect SEO?
    Not if they're only on links from elsewhere (ads, emails, social). Don't use UTM links in your own sitemap or internal links; if a tagged URL gets indexed, a canonical tag pointing to the clean URL handles it.
    What is utm_content for?
    Telling apart links that share source, medium and campaign, for example two buttons in one email, or two ad creatives. Use short labels like header-button and footer-link.
    Can I shorten a UTM link?
    Yes. The parameters survive any redirect-based shortener. Shorten after you build and copy the full link.
    Is my data saved anywhere?
    Only in your own browser: the last few links you built are kept in local storage so you can reuse them. Nothing is sent to a server. Clear them with the button under the list.