Solved.tools โ€” Free Online Calculators & Tools

We use cookies for analytics and advertising. Learn more about our cookie policy

UTM Link Builder

Last updated: 14 August 2026

Reviewed by Gavin ยท Research and drafting assisted by AI

Presets (one-click fill)
Tagged URL
https://example.com/landing?utm_source=newsletter&utm_medium=email&utm_campaign=spring_promo
Parameter breakdown
utm_sourcenewsletter*
utm_mediumemail*
utm_campaignspring_promo*
utm_termโ€”
utm_contentโ€”
utm_idโ€”
lowercaseon
spaceModepreserve
Was this helpful?


UTM Link Builder, Build Tagged Campaign URLs Correctly

A UTM link builder takes a base URL and the five standard UTM parameters and produces a tagged campaign URL that is the join key between your marketing tool and your analytics platform. The boring parts, percent-encoding every parameter value, choosing ? versus & based on whether the base URL already has a query, preserving the URL fragment in the right place, and stripping stale utm_* parameters, are the parts most likely to break if you do them by hand. This tool gets those parts right so you can focus on the campaign name.

What UTM parameters are and which analytics tools read them

UTM parameters are a set of query-string parameters prefixed with utm_ that identify the marketing source of a website visit. The five standard names, utm_source, utm_medium, utm_campaign, utm_term, and utm_content, were defined by the now-archived urchin-params IETF draft, originally for the Urchin web analytics product that eventually became Google Analytics. GA4 added a sixth optional parameter, utm_id, for stable cross-channel campaign IDs.

UTM-tagged URLs are read by every major web analytics platform: Google Analytics, Matomo, Plausible, Fathom, Adobe Analytics, and most product-analytics tools with campaign attribution. The tagged URL is the join key between the marketing tool (where the link was placed) and the analytics platform (where the visit is recorded). When a visitor clicks a UTM-tagged link, the analytics platform reads the utm_* parameters from the URL and attributes the visit to the named campaign, source, and medium.

The five standard parameters and what each is for

utm_source identifies the specific referrer: a search engine, a newsletter name, a partner site, a podcast. The convention is lowercase, hyphen-separated, and specific. utm_source=newsletter is more useful than utm_source=email-newsletter-2026 because the source should be reusable across campaigns.

utm_medium identifies the marketing channel: email, social, paid search, organic search, referral, print, QR. The convention is a small set of channel buckets, also lowercase. The most common mistake is to put the same value in both source and medium, or to swap them.

utm_campaign identifies the specific campaign: a product launch, a seasonal sale, a webinar. The convention is snake_case or hyphen-case, lowercase, specific enough to be filterable. utm_campaign=spring_sale_2026 is good; utm_campaign=spring is too vague.

utm_term is the paid keyword, used only for paid search. utm_term=running+shoes records the keyword that triggered the ad. Not used for organic or non-search channels.

utm_content differentiates ad variants or link placements: utm_content=hero_image, utm_content=footer_link, utm_content=twitter_cta. Used to A/B test creatives or to track which link placement generated the click.

utm_id (GA4 only) is a stable unique campaign ID. Setting utm_id=spring_2026 allows GA4 to stitch together the same campaign across multiple tagged URLs and report them as a single campaign.

Source vs medium, the single most common mistake

The single most common mistake in UTM tagging is to conflate source and medium, or to put the same value in both. utm_source=newsletter&utm_medium=newsletter is redundant, it tells the analytics platform nothing about the channel.

A common convention: medium is the channel bucket, source is the specific origin within that channel. Email newsletters are medium=email with source set to the specific newsletter name (source=weekly_digest). Paid search ads are medium=cpc with source set to the search engine (source=google or source=bing). Social posts are medium=social with source set to the specific network (source=twitter, source=linkedin). This two-level breakdown lets you answer both "how much traffic came from email?" (medium=email) and "which newsletter drove the most clicks?" (source=weekly_digest).

Why case sensitivity destroys reporting

Most analytics platforms treat utm_source=Google and utm_source=google as two different sources. The same applies to utm_medium and utm_campaign. Inconsistent casing fragments your reporting, email and Email appear as two separate rows. The builder offers a lowercase toggle that lowercases all values and parameter names. Always tag with lowercase values, and document a naming convention in your campaign brief so every team member uses the same strings.

A common pitfall: a campaign brief says "use source = Facebook" and one team member types Facebook, another types facebook, and a third types FB. Three different sources in the analytics report. The lowercase toggle plus a documented naming convention fixes this.

Tagging internal links, your own navigation, your own footer, your own cross-page links, is a common mistake that destroys session attribution. UTM parameters override the referral source for that click. The visitor appears to arrive from the marketing campaign instead of from the previous page on your site, which breaks the attribution model.

Tag only links that cross from a third-party surface (email, social, ad, print, partner site) into your site. Internal links should never carry utm_* parameters. If you want to track internal navigation, use a different mechanism (event tracking, in-page analytics, on-page survey pixels) that does not override the referral source.

There is one narrow exception: UTM-tagged links used in A/B test variants and sent from your own email service to your own audience. Tag those with utm_medium=email and utm_source=<newsletter_name> so the email channel is correctly attributed, but be aware that the visitor's first-touch attribution is the email, not the previous page on your site.

URL encoding and fragments

URLs are restricted to a small set of "safe" characters per RFC 3986: the unreserved characters A-Z, a-z, 0-9, -, _, ., ~, plus the reserved characters that have special meaning in URL syntax (:, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,, ;, =). Any other character, including spaces, accented letters, and emoji, must be percent-encoded: replaced with %xx where xx is the two-digit hexadecimal representation of the character's UTF-8 bytes.

The URL fragment begins with # and is everything after it to the end of the URL. The fragment is never sent to the server, it is processed entirely client-side by the browser. This is why UTM parameters must go BEFORE the fragment, not after. The builder splits the fragment off first, appends the new UTM block to the query string, and reattaches the fragment at the end. https://example.com/p#hero plus UTM tags becomes https://example.com/p?utm_source=...#hero.

The builder also percent-encodes every parameter value via encodeURIComponent. Spaces become %20, & becomes %26, = becomes %3D, # becomes %23, ? becomes %3F. None of those characters can break the URL.

UTM-tagged URLs are long. Most marketers wrap them in a link shortener (a redirect service) so the link fits in a tweet, an SMS, or a printed QR code. The shortener takes a short URL (e.g. https://short.example/abc) and 301-redirects to the long UTM-tagged URL. The analytics platform sees the UTM parameters on the final URL because they are passed in the redirect.

However, link shorteners can lose UTM parameters in two ways. First, if the shortener does a 301 to the long URL, the analytics platform sees the UTM parameters in the final request, that works. Second, if the shortener does a 302 (temporary) redirect, the redirect chain is recorded but the final URL parameters may be dropped from the analytics view depending on the platform. Third, some platforms read UTM parameters from the referrer URL (the shortener's URL) rather than the landing URL, which produces incorrect attribution. Test the shortener with a known UTM-tagged URL before deploying widely.

The safest pattern is to use the shortener's own analytics to track per-click data, and use the UTM-tagged URL as the final destination. That way you get both the shortener's per-click data and the analytics platform's attribution.

Frequently Asked Questions

What are UTM parameters and which analytics tools read them?

UTM parameters are query-string parameters prefixed with utm_, utm_source, utm_medium, utm_campaign, utm_term, utm_content, and the GA4 addition utm_id. They are read by every major web analytics platform, including Google Analytics, Matomo, Plausible, Fathom, and Adobe Analytics. UTM parameters are also read by most product-analytics tools for campaign attribution. The tagged URL is the join key between the marketing tool (where the link was placed) and the analytics platform (where the visit is recorded).

What is the difference between utm_source and utm_medium?

utm_source identifies the specific referrer, a search engine, a newsletter name, a partner site. utm_medium identifies the marketing channel, email, social, paid search, print, referral. The single most common mistake is to put the same value in both (e.g. utm_source=newsletter&utm_medium=newsletter) or to swap them. A common convention: medium is the channel bucket, source is the specific origin within that channel. Email newsletters are medium=email with source set to the specific newsletter name. Paid search on Google is typically medium=cpc with source=google.

Why does case sensitivity matter for UTM values?

Most analytics platforms treat utm_source=Google and utm_source=google as two different sources. The same applies to utm_medium and utm_campaign. Inconsistent casing fragments your reporting, your "email" traffic and your "Email" traffic appear as two separate rows. The builder offers a lowercase toggle that lowercases all values and parameter names. Always tag with lowercase values, and document a naming convention in your campaign brief so every team member uses the same strings.

Should I tag internal links with UTM parameters?

No. Tagging internal links (your own navigation, your own footer, your own cross-page links) overrides the referral source for that click. The visitor appears to arrive from the marketing campaign instead of from the previous page on your site, which destroys session attribution. Tag only links that cross from a third-party surface (email, social, ad, print, partner site) into your site. Internal links should never carry utm_* parameters.

Where in the URL do UTM parameters go, before or after the fragment?

Before the fragment. The URL fragment (the part after #) is never sent to the server, it is processed entirely client-side by the browser. If UTM parameters end up after the fragment (e.g. https://example.com/p#hero?utm_source=newsletter), the analytics platform never sees them. The builder splits the fragment off first, appends the UTM block, and reattaches the fragment at the end. https://example.com/p#hero plus UTM parameters becomes https://example.com/p?utm_source=...#hero.

What is the difference between %20 and + for spaces in UTM values?

%20 is the standard percent-encoded space and is safe everywhere in a URL. The + sign represents a space only in application/x-www-form-urlencoded format, which is the format used in HTML form submissions and most query strings. For UTM values, the analytics platform will accept either. RFC 3986 specifies %20. The builder offers a space-handling dropdown so you can choose the form your analytics platform expects.

Do UTM parameters affect SEO?

Generally no, Google treats UTM parameters as a navigation detail and does not rank against them. However, two different URLs that resolve to the same content (one with UTM parameters, one without) can confuse Google's duplicate-content detection. Set up a canonical URL on your landing pages pointing to the UTM-less version, and treat UTM-tagged URLs as analytics-only. Also, Google Search Console may report UTM-tagged URLs as separate pages in the performance report, which can mislead you about your actual organic visibility.

What is utm_id and do I need it?

utm_id is a GA4-specific parameter that adds a stable, unique identifier to the campaign. It allows GA4 to stitch together the same campaign across multiple tagged URLs (e.g. one link per email, one per social channel) and report them as a single campaign. It is optional but recommended for any campaign you run more than once or want to compare across channels. The builder includes it as an optional field.

can the UTM Link Builder be used for professional or commercial purposes?

Yes, the builder produces correctly-encoded UTM-tagged URLs that are suitable for professional, commercial, and educational marketing campaigns. The encoding rules follow RFC 3986 and the WHATWG URL Standard. For high-stakes campaigns (large ad spend, regulatory compliance), verify the output on a test analytics dashboard before deploying widely. The encoding rules are well-established and validated against the relevant RFCs.

How often are the underlying UTM encoding rules updated?

The encoding rules are based on RFC 3986 (URI Generic Syntax) and RFC 3987 (Internationalized Resource Identifiers) plus the WHATWG URL Living Standard, and they rarely require updates. The five UTM parameter names (utm_source, utm_medium, utm_campaign, utm_term, utm_content) were defined by the now-archived urchin-params IETF draft and have been stable since the mid-2000s. GA4's utm_id is the only recent addition. When standards change, this builder is updated to reflect the current authoritative source.

References

  • RFC 3986, Uniform Resource Identifier (URI): Generic Syntax. T. Berners-Lee, R. Fielding, L. Masinter. IETF, 2005. Defines the URI generic syntax, percent-encoding, and reserved/unreserved character sets.
  • RFC 3987, Internationalized Resource Identifiers (IRIs). M. Duerst, M. Suignard. IETF, 2005. Extends RFC 3986 to international character sets.
  • WHATWG URL Living Standard, URL. Defines the URL parser used by browsers, including the fragment/query/host components and the encoding rules.
  • urchin-params IETF draft (archived), defines the five canonical UTM parameter names (utm_source, utm_medium, utm_campaign, utm_term, utm_content).
  • Google Analytics 4 documentation, utm_id parameter and GA4 campaign attribution semantics.

Worked example

Suppose you want to tag a Facebook post linking to your pricing page. Fill in the source as facebook, the medium as social, the campaign as spring-sale, and the content as carousel-1. The builder returns https://solved.tools/pricing?utm_source=facebook&utm_medium=social&utm_campaign=spring-sale&utm_content=carousel-1. Paste that link into the post, and analytics will attribute visits to that exact placement.