tomai
Log in
Free · SEO Tools

UTM Link Generator

Build clean, correctly-encoded campaign links in seconds — with one-tap presets for Facebook Ads, Google Ads and more.

Existing query parameters are kept and UTM parameters are appended. A URL without a protocol gets https:// automatically.
Quick fill
Generated link
Parameter Value

Campaign URLs your analytics can actually attribute

Consistent naming presets, automatic lowercase enforcement and saved history — the three habits that keep UTM data clean.

Instant on every keystroke

The link rebuilds as you type or tap a preset — no submit, no reload, no waiting.

🎯

Presets that match real campaigns

Facebook Ads, Google Ads, organic, email, Twitter/X and LinkedIn quick-fill the correct source and medium for you.

🔒

Campaign-ready presets

Every parameter is assembled right in your browser. Nothing is uploaded, logged or stored anywhere.

Parameter reference used here

ParameterPurpose
utm_sourceTraffic origin: newsletter, twitter, google
utm_mediumChannel type: email, cpc, social, referral
utm_campaignLaunch or promo name — kebab-case recommended
utm_term / utm_contentPaid keyword / A-B variant discriminator

Values lowercase automatically (GA treats Social and social as different sources), spaces become dashes, and the QR button turns finished links scannable for print.

Frequently asked questions

Why are my UTM parameters getting URL-encoded?

UTM parameters are regular query-string values, and query strings must follow URL syntax: spaces become %20, special characters like & # ? are encoded. If you sent raw spaces or ampersands, analytics tools would misread where one parameter ends and the next begins — encoded values survive any redirect, copy-paste or link shortener intact.

What's the difference between utm_source and utm_medium?

utm_source is the platform the traffic came from (facebook, google, newsletter); utm_medium is the channel type (cpc for paid clicks, social, email, organic). utm_campaign names the promotion (spring_sale), while utm_term and utm_content are optional refinements — the paid keyword and the specific ad or link that was clicked.

Do UTM parameters affect SEO ranking?

URLs are built in your browser from your inputs. Since campaign links can contain product or partner names, keeping this local means nothing is logged anywhere.

Do UTM parameters hurt SEO?

Tagged URLs duplicate the canonical by nature — Google usually consolidates them. Keep internal links untagged and let UTMs live in campaigns, ads and newsletters.

Related tools

What are UTM parameters and how do campaign links work?

UTM parameters are small text tags appended to a URL — utm_source, utm_medium, utm_campaign, utm_term and utm_content — that tell your analytics tool (Google Analytics, Matomo or any other) where a visit came from. Without them, all your traffic just shows as "direct": a click from a Facebook ad, a newsletter link and a Google search look identical. With them, you can see exactly which campaign, channel and even which ad produced each visit, so you know where your marketing budget actually works.

What this generator can do

  • 🔗 Appends the five standard UTM parameters to any URL in one place
  • ⚡ Regenerates the link on every keystroke — no submit button needed
  • 🎯 Six one-tap presets for the most common campaign setups (Facebook Ads, Google Ads, organic, email, Twitter/X, LinkedIn)
  • 🔧 Auto-fixes: adds https:// when missing, keeps your #anchor last, encodes every value
  • 🧹 Removes stale utm_ parameters when you re-run, so links never accumulate duplicates
  • 📋 Copy-ready output with a parameter breakdown table

When to use campaign links

  • 📢 Paid ads — Facebook, Google, TikTok or LinkedIn ads, each with its own campaign name
  • ✉️ Email marketing — tell newsletter clicks apart from other traffic
  • 📣 Social media posts — see which platform actually drives visits
  • 🎁 Promotions and seasonal sales — compare one sale against another
  • 🤝 Partnerships and affiliate links — credit the right source

Everything runs in your browser: the URL is assembled locally and nothing you type is sent to any server.

Related tools