Skip to content
MARKETING TOOL

UTM Link Builder — clean campaign URLs

Three people tag the same newsletter, three sources show up in GA4. We fix that.

Destination URL is required.

UTM parameters

Source, medium and campaign are required. Term, content and ID are optional — utm_id is only needed if you use GA4 cost-import.

Where the click came from — e.g. newsletter, google, facebook.
utm_source is required.
How the click came in — e.g. email, cpc, social.
utm_medium is required.
Which campaign — e.g. fall_promo_2026. utm_campaign is required.
Optional — keyword for paid search.
Optional — which ad variant or which link inside the email.
Optional — GA4 cost-import ID, often a UUID or Ads campaign ID.

Live preview

Fill destination URL, source, medium and campaign — the assembled link will appear here.

Team taxonomy

Set your own list — source, medium and campaign turn into dropdowns with your values. Everything stays local in the browser, no server, no login.

History

0 of max 50
No URLs built yet. Once you tag a destination, it shows up here.

How It Works

  1. 01

    Paste text or code

    Paste your content into the input field or type directly.

  2. 02

    Instant processing

    The tool processes your content immediately and shows the result.

  3. 03

    Copy result

    Copy the result to your clipboard with one click.

Privacy

All calculations run directly in your browser. No data is sent to any server.

You add utm_source, utm_medium and utm_campaign to a link, hit send — and GA4 reports Facebook, facebook and fb as three separate sources. With team taxonomy, a live validator against five common mistakes and a GA4 channel-group preview, you build campaign URLs that actually group together in your reports.

UTM fields
6incl. utm_id
Output formats
5URL/MD/HTML/QR
History
50URLs local
01 — How to Use

How do you use this tool?

  1. Paste the destination URL — source, medium and campaign are required, term, content and ID optional.
  2. Keep auto-lowercase on so Facebook/facebook/FB do not show up as three sources in GA4.
  3. Check the GA4 channel-group preview — when it reads "Unassigned", the hint shows which medium token GA4 does not recognise.
  4. In bulk mode, paste many landing pages, one per line — the same UTM set applies to all, CSV export gives you the list to share.
  5. Optional: turn on team taxonomy — set the allowed source/medium values once and the tool blocks every typo afterwards.

The builder takes a destination URL and appends the five canonical UTM parameters plus the newer utm_id slot. You see the assembled URL live, can export it as Markdown or HTML snippet, download it as a PNG or SVG QR code or in bulk mode tag ten landing pages at once with the same parameters. The validator and GA4 channel-group hint run in real time below the form — you see immediately whether your medium token is recognised by GA4 or whether the click would land in “Unassigned”. Pure-client, no server, no account, no tracking.

Where do UTM parameters come from?

UTM stands for Urchin Tracking Module. In 2005 a company called Urchin built the first widely used web-analytics product — and defined the five tokens utm_source, utm_medium, utm_campaign, utm_term and utm_content. That same year Google acquired Urchin, integrated the product as Google Analytics and inherited the UTM convention. Ever since, it has been the industry standard for campaign attribution: every ad platform, every newsletter tool, every marketing-automation system knows the UTM shape.

GA4 — the current generation of Google Analytics — extended the convention with a sixth field in 2023: utm_id. It is optional but required when you import ad spend from external platforms (Google Ads, Meta Ads, LinkedIn Campaign Manager) as CSV into GA4 and want to link it with click data.

The convention is intentionally informal. There is no RFC, no W3C recommendation, no compliance body. UTM works because everyone agreed to it — and that is precisely why data quality is so fragile: one typo, one capital letter, one extra space, and your campaign shows up across three different reports.

Which mistakes does the pre-flight validator catch?

The builder runs five pain checks live as you type:

  • Uppercase in a valueFacebook and facebook are two separate dimensions in GA4. With auto-lowercase on, this is silently fixed; with auto-lowercase off, it surfaces as a warning.
  • Whitespace in a value — spaces get encoded as %20 in URLs; that works technically, but reports become unreadable and tend to spawn duplicates (q1%20promo vs q1+promo vs q1-promo).
  • Medium not in GA4 default channel group — tag with utm_medium=qrcode and the click lands in “Unassigned”. The validator shows the recognised mediums and suggests what would fit.
  • Special characters like &, +, #, ? — those carry semantic meaning in URLs. The builder encodes them automatically but warns because they rarely appear in source lists on purpose.
  • Internal link — when the utm_source token shares a hostname with the destination URL, GA4 overwrites the original session source. The builder warns the moment this combination appears so the click does not lose its attribution.

Every warning is a hint pill, not a hard stop. The URL is still built — you just see what to fix or knowingly accept.

How does convention lock work?

Inconsistent naming conventions are the most common UTM bug. A solo marketer who tags today forgets tomorrow whether they wrote facebook or fb or Facebook. A three-person team is guaranteed to produce three variants of the same value.

In the Team taxonomy block you enter the allowed values per field, comma-separated. Example for utm_source:

newsletter, google, facebook, linkedin, partner

After saving, those values appear as quick-pick chips below the input. Click a chip → value applied. Type something else — Instagram, mc, Insta — and the field gets a red outline plus the hint “Value is not in the team taxonomy”. You can still save it, but you see you are stepping outside the agreed set.

Optionally you can define a Campaign pattern, e.g. {year}_{product}_{region} — which matches values like 2026_promo_eu but not promo-2026 or q1. Three templates ship as quick picks in the convention editor:

TemplateExampleFits
{year}_{product}_{region}2026_promo_euSeasonal campaigns per market
{quarter}_{objective}q1_leadgenPerformance campaigns on a quarterly rhythm
{month}_{product}03_pricing-launchMonthly newsletters with a fixed schema

The full convention is stored as JSON in browser LocalStorage. It survives tab closes, browser restarts and routine cache clears — only an explicit cookies + LocalStorage wipe removes it. Team members copy the list manually; we deliberately do not offer cloud sync because that would require accounts, an auth layer and servers that would unwind every other privacy promise.

When does bulk mode pay off?

As soon as you want to tag more than three URLs. The “Multiple URLs” mode accepts one URL per line, applying the same UTM set to each. You get a two-column table (input ↔ output), a summary line (“7 of 10 URLs built successfully”) and three actions:

  • Copy all — every valid UTM URL lands in the clipboard as a list, one per line.
  • Export CSV — RFC-4180 compliant CSV with the columns input_url, output_url, has_error, first_error_message. Opens directly in a spreadsheet or imports into your newsletter tool.
  • Errors stay visible — an invalid line (bad URL shape, wrong protocol) is flagged in red with the specific error. You never lose the information.

Typical bulk use cases:

  • Newsletter with ten CTA buttons — each button points to a different landing page but shares utm_campaign so you can compare conversion.
  • Cross-platform posting — the same promo page posted on Facebook, LinkedIn, X — each platform gets its own UTM-tagged URL.
  • Influencer campaign with twenty creators — the same landing page, but a unique utm_content per creator for performance differentiation.

How does the GA4 channel-group preview help?

Once utm_source and utm_medium are filled in, a hint block appears below the form:

→ GA4 will report this as Email

The builder maps the most common source/medium combinations onto the GA4 default channel groups (Direct, Organic Search, Paid Search, Paid Social, Organic Social, Email, Affiliates, Display, Referral, Video, Audio, SMS, Push). When your medium is not recognised, the hint shows Unassigned in red — you know immediately that GA4 would bucket the click as Unassigned, where it is invisible in most standard reports.

The mapping approximates GA4’s logic, it is not a 1:1 replica — Google updates its official channel-group logic occasionally with source-specific rules we do not all replicate. The hint is a directional signal, not an audit. If channel-group distribution is mission-critical, verify in GA4 itself.

More tools from the kittokit ecosystem that fit UTM workflows:

  • Clean tracking URL — strips UTM and 50+ other trackers (fbclid, gclid, mc_cid) from URLs before you share them. Mirror image of the builder.
  • QR code generator — when you need UTM URLs as QR outside this tool, with extended modes for Wi-Fi and vCard.
  • URL encoder & decoder — when you want to test UTM values with exotic characters (emoji, special chars), the encoder is the clean pre-check.

Frequently asked questions?

The answers to the key questions are in the FAQ block at the top — they are emitted as JSON-LD (FAQPage) for search engines and answer voice-search queries directly.

Last updated:

You might also like