postfast

Free tool

UTM link builder

Fill in the campaign parameters and get a correctly encoded URL back. Everything is encoded properly, existing query strings are preserved, and nothing leaves your browser.

Where the traffic comes from — x, bluesky, newsletter.

How it arrives — social, email, cpc.

What it belongs to — launch-week, spring-sale.

Paid keyword. Usually left empty.

Which variant — hero-link, footer-link.

Your tagged URL

Enter a destination URL and the tagged link appears here.

How this works

  • Existing query strings survive. A destination that already carries parameters keeps them; the UTM values are added alongside rather than replacing the query string.
  • Everything is encoded properly. Spaces, ampersands and non-ASCII characters are percent-encoded by the browser’s own URL parser rather than by string concatenation, which is where hand-built campaign links usually break.
  • Empty fields are omitted. A blank parameter is left out entirely instead of being added as an empty value, because `utm_term=` in a report is worse than no `utm_term` at all.
  • Lowercase is a convention worth keeping. Analytics tools treat `Social` and `social` as two different mediums. This tool does not rewrite what you type, so pick one case and hold to it.
  • It runs here, in your browser. Nothing is sent anywhere, stored, or logged.

Common questions

What are UTM parameters?
Five optional query parameters — source, medium, campaign, term and content — that analytics tools read to attribute a visit to where it came from. They change nothing about the page; they only travel with the link.
Which ones do I actually need?
Source, medium and campaign carry almost all of the value. Term is for paid keywords and content is for distinguishing two links to the same place in the same campaign.
Does adding UTM parameters affect a post on X?
Not for reach, but it does for cost if you publish through the X API: a post containing any URL costs twenty times more than a plain one, tagged or not.

The other free tools

This is one check out of a product full of them

postfast runs this inside its composer, on every post, against every network you publish to. Join the waitlist for early access.