TextSorter

Generated URL

How the UTM Builder Works

A UTM link is just a normal URL with five optional query parameters tacked onto the end: utm_source, utm_medium, utm_campaign, utm_term, and utm_content. This tool builds that URL for you so you do not have to remember the parameter names, get the ampersands right, or worry about a stray space breaking the link later. Type in a destination URL, fill in the parameters that apply, and the tracking link appears in the result box as you type. Nothing is submitted anywhere; the URL object your browser already understands does the work.

  1. Paste your destination URL. This is the page the click actually lands on: a landing page, a blog post, a pricing page, whatever the campaign is promoting. Include the protocol (https://) or the tool will add one for you.
  2. Fill in utm_source. Where is this link being placed? A newsletter, a specific ad network, a partner site. This becomes the value analytics platforms use to answer "where did this visit come from."
  3. Fill in utm_medium. What kind of channel is this? Email, paid social, a banner, an affiliate placement. Source tells you the specific place; medium tells you the category of place.
  4. Name the campaign with utm_campaign. Every link that belongs to the same push, spring_sale, product_launch, black_friday, should share this exact value so they roll up into one row in your reports instead of scattering across several.
  5. Add utm_term and utm_content only if you need them. Both are optional, and skipping them when they do not apply keeps your links shorter and your reports cleaner.
  6. Copy the finished link. Click "Copy URL" and paste it wherever the link is going: an email platform, an ad manager, a social scheduler, or a spreadsheet you are building for a whole campaign at once.

The generator updates live as you type, so you can see exactly how each field changes the final URL before you commit to it. Clear a field and its parameter drops out of the link entirely rather than being appended as an empty value that would show up in your reports as a blank row.

The Five UTM Parameters, One at a Time

All five parameters exist to answer one question at different levels of detail: where did this visitor come from, and why did they click? Two of them are effectively required for the link to be useful, two are optional and situational, and one sits in between.

Parameter Answers Typical values
utm_sourceWhich specific place sent the trafficgoogle, newsletter, facebook, partner_site
utm_mediumWhat category of channel that place iscpc, email, social, affiliate, referral
utm_campaignWhich marketing push this click belongs tospring_sale_2026, product_launch, webinar_may
utm_termWhich paid keyword triggered the adrunning_shoes, project_management_software
utm_contentWhich specific link or creative was clickedheader_cta, sidebar_banner, variant_b

utm_source and utm_medium are the pair that shows up together in every analytics report as a single combined dimension, so it helps to think of them as a matched set. Source is specific (facebook, not "social media"), medium is the bucket that source belongs to (social). Get this pair right and everything downstream, channel groupings, default report tables, cost per acquisition by channel, lines up correctly.

utm_campaign is what ties a scattered set of links back into one initiative. A single campaign, say a product launch, might have a dozen individual links: one in an email, three in social posts, two in paid ads, a handful in partner newsletters. Every one of those should carry the same utm_campaign value so that when someone pulls a campaign performance report, all twelve show up contributing to the same row instead of twelve separate, hard to connect entries.

utm_term versus utm_content: the pair people mix up

utm_term was built for paid search specifically. It records the keyword that triggered a search ad, so when a report shows conversions by term, you can see which keywords are actually worth the bid. Outside of paid search campaigns, utm_term rarely has a natural use and most marketers leave it blank.

utm_content is broader: it distinguishes between two links that point to the exact same destination inside the exact same campaign. The classic example is an A/B test on an email, one version with a text link, one with a button, both going to the same landing page under the same campaign. Without utm_content, both clicks would look identical in your reports. With it, you can tell the button outperformed the text link by a factor of three. The same idea applies to comparing a header CTA against a footer CTA, or two different ad creatives running side by side.

How GA4 Turns These Parameters into a Report

Google Analytics 4 reads utm_source and utm_medium together and writes them into a single dimension called Session source/medium, formatted as source / medium, so a link tagged utm_source=newsletter and utm_medium=email shows up in reports as newsletter / email. That is the value you will filter by, compare against other channels, and build acquisition reports around, so whatever you type into those two fields becomes permanent, visible text in your analytics account.

utm_campaign lands in a separate dimension called Session campaign. This is what lets you open a report, filter to one campaign name, and see every session that arrived carrying that value, regardless of which source or medium brought it in. A well run campaign report is really just this dimension filtered down to one campaign, with source/medium as a secondary breakdown showing which channels within that campaign performed best.

utm_term and utm_content get their own dimensions too, Session manual term and Session manual ad content, and they only become useful once you actually add a secondary dimension or a comparison to see them. They do not appear in the default acquisition tables, which is part of why so many people set utm_term on every link out of habit and never look at the resulting data again.

The word session in those dimension names matters. GA4 attributes a new session's source and medium based on the parameters present on the link that started that session, not on every link a user has ever clicked. A visitor who arrives from an email today and comes back through a bookmark next week will show as two different sessions with two different source/medium values, which is expected and correct.

Naming Conventions That Keep One Campaign as One Row

GA4 treats UTM values as case sensitive strings, not as ideas. That means Facebook, facebook, and FACEBOOK are three different values as far as your reports are concerned, and a campaign tagged spring_Sale in one email and spring_sale in another will split into two rows even though a human reading both would call them the same campaign. The fix is a habit, not a feature: type every UTM value in lowercase, every time, on every link, with no exceptions for brand names or proper nouns.

Spaces cause a related but slightly different problem. A browser turns a literal space in a URL into %20, so a campaign named "Spring Sale" becomes spring%20sale in the address bar and in your reports, which is technically one value but reads as clutter and is easy to mistype inconsistently across different links. Use a hyphen or an underscore instead: spring-sale or spring_sale. Either works as long as you pick one and stick to it across your whole team, since spring-sale and spring_sale are, again, two different string values to GA4.

A short naming convention written down once and shared with everyone who builds links, marketing, agency partners, whoever manages paid ads, prevents most of this. Something as simple as "all lowercase, words separated by underscores, campaign names follow the pattern season_promotion_year" is enough to keep a full year of campaigns readable in one report instead of fragmenting into near duplicate rows that all have to be manually merged later.

Common Mistakes That Split One Campaign into Several Rows

The single most common UTM mistake is inconsistency across links that are supposed to belong together. A campaign built over a few weeks by different people, one person tags it spring_sale, another types Spring_Sale a week later, a third leaves out the underscore and writes springsale, and the result is a campaign report with three rows instead of one, none of them showing the full picture. The fix is always the same: agree on the exact string before the first link goes out, then copy that string rather than retyping it.

Building every link for a campaign in one sitting, using the same tool, with the campaign name typed once and reused rather than retyped for each link, removes almost all of this risk before it happens.

Why Tagging Internal Links Backfires

It is tempting to add UTM parameters to a link inside your own site, a homepage banner pointing to a sale page, or a blog post linking to a related article, because it feels like it would show which internal placements drive clicks. It causes a real problem instead: GA4 treats a link carrying utm_source and utm_medium as the start of a new session, even when the click happens entirely within your own site. A visitor who arrived last week from a Google search, browsed around, and then clicked an internally tagged banner gets counted as a fresh session from whatever source and medium that internal link specifies, overwriting the original acquisition data for that visit.

This quietly corrupts your acquisition reports. Organic and paid traffic that should be credited to Google or a specific campaign instead gets reassigned to whatever internal source you tagged the banner with, and the more internal links you tag, the more sessions get artificially restarted mid visit. The traffic did not actually come from a new source; it was already on your site.

If you want to measure which internal placements get clicked, that is a real and useful question, but UTM parameters are the wrong tool for it. Event tracking or a dedicated internal campaign tool built for that purpose measures the click without disturbing the session's original source and medium. Save UTM tagging for links that live outside your own domain: emails, ads, social posts, partner sites, anywhere a visitor's session genuinely begins.

UTMs Through Redirects, Link Shorteners, and QR Codes

A UTM parameter only works if it survives the trip from the link someone clicks to the page GA4 actually measures. Most of the time it does, but three common detours are worth knowing about.

A standard 301 or 302 redirect, the kind used when a page moves or a short link expands to its full destination, normally passes query parameters straight through as long as the redirect target does not already define its own conflicting parameters. Test this once for any redirect chain you rely on regularly; some CMS platforms and some redirect rules strip the query string by default and need to be configured to forward it.

Link shorteners are usually fine, since the shortened link stores the full destination URL, UTM parameters included, and simply expands it on click, but it is worth checking a specific shortener's behavior once before relying on it for an entire campaign, since a few older or self hosted shorteners truncate long query strings.

QR codes are just a UTM link encoded as an image, so everything above applies the same way. A printed flyer, a poster, or packaging with a QR code pointing at a UTM tagged URL will report scans back into GA4 exactly like a clicked link would, with utm_source and utm_medium values you choose ahead of time, print or qr working well as a medium so this offline traffic does not get lumped in with your other channels.

Common Use Cases

Email campaigns

Every link in a newsletter or promotional email should carry the same utm_campaign, a medium of email, and a source identifying the specific list or platform sending it. Using utm_content to distinguish a header logo link from a body text link from a footer link reveals which placement inside the email people actually click, which is the kind of detail a raw open rate never shows.

Social media posts

Tagging links posted to different platforms with the platform name as the source, twitter, linkedin, instagram, and a medium of social or paid_social depending on whether the post was boosted, makes it possible to compare platforms against each other directly in one report instead of relying on each platform's own, differently defined analytics.

Paid advertising

Ad platforms report their own click and conversion numbers, but those numbers are not always defined the same way GA4 defines a session or a conversion. Tagging every ad's destination URL with utm_source, utm_medium, and utm_term for the triggering keyword gives you an independent, comparable view of paid performance sitting right next to your organic and email numbers in the same tool.

Print, packaging, and offline campaigns

A UTM link baked into a QR code on a flyer, a business card, or product packaging is often the only way to connect an offline touchpoint to an online conversion at all. Since these links rarely change once printed, get the campaign name and source right the first time.

Privacy: Everything Happens in Your Browser

Building out a full campaign's worth of UTM links, sometimes dozens across email, social, and paid channels, means typing out unreleased product names, unannounced campaign themes, and internal codenames well before any of it is public. This tool never sends any of that to a server. The URL parsing and parameter assembly run as JavaScript in the page you already have open, using the same URL object every modern browser ships with, and the result never leaves your device until you copy it yourself.

That also means there is no history to accidentally leak, no account to secure, and no third party retaining a record of which campaigns you were planning before launch day. Build one link or fifty in a single sitting, and the only place any of it exists is your own clipboard and whatever destination you paste it into.

Frequently Asked Questions

What is a UTM link?
A UTM link is a normal URL with up to five extra parameters attached after a question mark: utm_source, utm_medium, utm_campaign, utm_term, and utm_content. Analytics platforms like GA4 read those parameters when someone clicks the link and use them to record exactly where a visit came from and which campaign it belongs to, rather than lumping it into a generic "direct" or "referral" bucket.
What should I put in utm_source?
utm_source names the specific place the link is being placed: a platform, a publication, or a partner site, written as one lowercase word or phrase like newsletter, facebook, or partner_blog. Keep it specific rather than generic, since "newsletter" paired with a matching utm_medium of email is far more useful in a report than a vague value like "marketing".
What is the difference between utm_source and utm_medium?
utm_source answers where exactly the click came from, while utm_medium answers what category of channel that place belongs to. A link shared in your company monthly newsletter might use utm_source=monthly_newsletter and utm_medium=email; the source is specific to you, the medium is a broad bucket shared by every email based link you send.
When should I use utm_term instead of utm_content?
utm_term is built specifically for paid search, recording the keyword that triggered a particular ad so you can see which keywords actually convert. utm_content is for distinguishing between two links that point to the same destination within the same campaign, such as an A/B test comparing a text link against a button, so use term for search keywords and content for creative or placement variants.
Does it matter if I use uppercase or lowercase in my UTM values?
Yes, it matters a great deal. GA4 treats UTM parameters as case sensitive text, so Facebook, facebook, and FACEBOOK are recorded as three separate values, which silently splits what should be one row in your report into several. Typing every value in lowercase, on every link, every time, is the single easiest habit that prevents this.
Do UTM parameters hurt my SEO or search rankings?
No, UTM parameters have no effect on organic search rankings. Search engines like Google recognize tracking parameters and consolidate ranking signals to the canonical version of the page, so adding utm_source and the rest to a URL you are sharing in an email or an ad does not change how that page ranks for anyone finding it through search.
Should I add UTM parameters to links on my own website?
Generally no. GA4 treats any link carrying utm_source and utm_medium as the start of a new session, even when the click happens between two pages on your own site, which overwrites the visitor original acquisition data with whatever you tagged that internal link with. Reserve UTM tagging for links that live outside your domain, in emails, ads, and social posts, where a new session is actually beginning.
What happens to my UTM parameters if the link goes through a redirect or a link shortener?
Most standard redirects and link shorteners pass query parameters straight through to the final destination, so a UTM tagged link that gets shortened or redirected once still reaches GA4 intact in the large majority of cases. It is still worth testing any redirect chain or shortener you plan to rely on for an entire campaign beforehand, since a handful of older or misconfigured setups strip the query string instead of forwarding it.
Do UTM links expire or stop working after a while?
No, a UTM link works for as long as the destination page itself stays live; there is no separate expiration on the tracking parameters. A link built today for a product launch will still report accurately if someone clicks it from an old printed brochure or a bookmarked email a year from now, as long as the URL it points to has not been removed.
Is my campaign data private when I use this tool?
Yes. Every part of building the link, parsing the URL, filling in the parameters, assembling the final result, runs as JavaScript in your own browser tab, and nothing you type is sent to a server or logged anywhere. That makes it safe to plan unreleased product launches, confidential campaign names, or client work before any of it becomes public.

Related tools

🔒 100% Client-Side Privacy

Every UTM link is built <strong>entirely in your browser</strong>. No URL, campaign name, or parameter is ever uploaded to a server. Your campaign plans stay on your device.