LinkScaleLinkScale
Free tool, no account

UTM Link Generatorfree, and nothing leaves your browser.

Tag a link so your analytics can tell you where the click came from. Channel presets that pick a medium GA4 actually understands, a batch mode for a whole campaign at once, and a warning when you spell a source two different ways.

No accountNothing is uploadedUnlimited links

The page the link points to. Type it however you like, https:// is added when you leave it out.

Start from where the link will live

Each preset sets a source and a medium that GA4 files under the right channel. The medium is what decides that, and getting it wrong is what puts a campaign in Unassigned.

Where the click comes from: instagram, newsletter, partner name.

The kind of channel: social, email, cpc, referral. This is the one that decides your channel report.

The push this link belongs to: spring_sale, launch_v2.

The keyword you bought. Paid search only, leave it empty otherwise.

Tells two links in the same campaign apart: bio_link and story_sticker, or button and text link.

Conventions

UTM values are case sensitive in reports, so Instagram and instagram become two separate sources. One casing rule, applied to every link, is the only thing that prevents it.

Your tracking link

Fill in a destination and your link appears here.

Turn it into a QR code

Everything runs in your browser. No URL you paste here is sent anywhere, logged or stored on a server.

This tool builds a link and hands it to you. It does not shorten it, host it or redirect it, so nothing here can ever expire.

What are UTM parameters, exactly?

Five to nine extra pieces of text on the end of a URL. They change nothing about the page, and they are the only reason your analytics can tell one visitor from another when neither of them came from a search engine.

They are a label, not a redirect

A UTM link goes straight to your page. Nothing sits in the middle, nothing has to stay up for it to keep working, and nothing about it can expire. That is also why this campaign url builder does not shorten anything: the moment a link is hosted somewhere, it can go away.

Your analytics reads them, the visitor does not

The browser sends the whole URL, your analytics tool pulls the utm_ parameters out of it and files the visit under that source, medium and campaign. The page itself ignores them entirely.

They exist because referrers are unreliable

A click from an app usually arrives with no referrer at all, so untagged traffic from Instagram, TikTok or a newsletter lands in Direct next to people who typed your address. Google Analytics utm tags are the only way to get that traffic back.

They are strings, so they are exact

utm_source=Instagram and utm_source=instagram are two different sources, forever, in every report. There is no fuzzy matching and no cleanup pass. Conventions are not tidiness here, they are the whole mechanism.

Which UTM parameters do you actually need?

Most people fill in all five because the form has five boxes. Three of them do the work, one is for paid search only, and one is the one everybody skips and then wishes they had used.

    utm_source and utm_medium, always

    Source is where the click came from, medium is what kind of channel it was. Medium is the one that decides which channel your report groups it into, so a made-up medium is how a campaign ends up in Unassigned. Use social, email, cpc, referral, and stop inventing.

    utm_campaign, whenever there is a campaign

    The push the link belongs to. Skip it and you can see that Instagram sent traffic, but not which of the four things you posted that month did it.

    utm_content, more often than you think

    This is the one worth adding. Same campaign, same source, two placements: your bio link and your story sticker. Without content they are one row and you learn nothing about which one works.

    utm_term, paid search only

    It carries the keyword you bought. On an organic post it is noise, and filling it in because the box exists is how a report gains a column nobody can interpret.

utm_term or utm_content, what is the difference?

They are the two optional ones, they sound interchangeable, and they are not. The confusion between them is the most common reason a set of UTM parameters produces a report nobody trusts.

utm_term answers "what did they search for"

It exists for paid search. You bought a keyword, someone typed it, the ad appeared, and the term records which keyword it was. On a social post, in a newsletter or on a printed QR code there is no keyword, so there is nothing to put in it. Leaving it empty is the correct answer, not a missing field.

utm_content answers "which one of these did they click"

It separates two links that are otherwise identical. Same campaign, same source, same medium, but one is the button at the top and one is the text link at the bottom. Or the bio link and the story sticker. It is the only parameter that tells you which creative earned the click, which makes it the most useful and the most skipped.

Why does Instagram appear twice in your analytics?

Because it is not one Instagram. It is instagram, Instagram, ig and instagram.com, tagged by four people over six months, and your report shows them as four sources that each did a quarter of the work. Four ways a utm tracking link quietly breaks.

Capitals split a source in two

UTM values are compared exactly. Instagram and instagram never merge, and no report will tell you they are the same thing. Lowercase is on by default here for that reason, and the tool warns when you type a spelling you have used differently before.

Separators split it again

spring_sale and spring-sale are two campaigns. Pick one separator, apply it to everything, and never think about it again. The tool applies your choice to every value at once so a single link cannot drift.

Parameters after the hashtag are never read

A URL like yoursite.com/page#pricing?utm_source=x is silently useless: everything after the # stays in the browser and is never sent to the server, so your analytics receives nothing. Parameters have to go before the fragment. This is the quietest bug of the lot, and this builder puts them in the right place for you.

A tag added twice, or added over an existing query

Appending to a link that already has parameters is how you get two utm_source values, or a lost ?ref=. Every link here is rebuilt from scratch each time, so existing parameters are preserved, existing UTM tags are shown to you, and nothing is ever stacked twice or encoded twice.

A UTM tag tells your analytics which source a click came from. What it cannot tell you is whether that visitor landed inside an in-app browser where they are logged out of everything and your checkout does not recognise them, which is a different problem with a different fix.

Want to see how the tagged link will look when it is shared? Check its preview card

Putting the link on something printed? Turn it into a QR code

UTM Link Generator

How do you name campaigns so the reports stay readable?

Not a style question. Every one of these rules exists because breaking it produces a report that splits one number across several rows, and there is no way to merge them afterwards.

Lowercase everything, no exceptions

The cheapest rule and the one that saves the most. Decide once, apply it to source, medium, campaign and content, and never rely on anyone remembering.

One separator, chosen once

Underscores or hyphens, it genuinely does not matter which. What matters is that the same person does not use both in the same quarter.

Medium comes from a short fixed list

social, email, cpc, referral, affiliate, display. If you are about to invent a medium, you probably want utm_source or utm_content instead. An invented medium does not fail loudly, it just stops being grouped.

Campaign names carry a date or a version

spring_sale is ambiguous by the second year. spring_sale_2026 is not. You will thank yourself the first time you compare two runs of the same push.

Write the convention down somewhere

The history in this tool is per browser and per person, so it catches your own drift, not your colleague's. A shared note with the six mediums you allow is what makes it hold across a team.

UTM link generator questions

Still have questions?

Online
Ask us anything about links, pages or pricing…

Real humans, usually replying in a few minutes.

Yes. No account, no trial, no limit on how many links you build and no watermark of any kind. It runs entirely in your browser, so there is no server cost for us to pass on to you.

Your link is tagged. Now see what happens after the click.

UTM tags tell your analytics where a visitor came from. LinkScale tells you what they did next, and gets them out of the in-app browser first.

Free 14-day trial on every plan

+100% conversion