UTM builder

Tag one campaign for every channel in a single pass, with casing kept consistent so your reporting does not fragment.

Free. No sign-up. Runs in your browser. Checked 2026-09-09.

The page people land on. Existing query parameters are preserved.

One name for the whole campaign, e.g. diwali_2026.

Paid keyword. Leave empty for organic social.

Channels (4)

Casing is forced to lowercase. Analytics treats Instagram and instagram as two different sources, which is the most common way campaign reporting fragments without anyone noticing. Spaces become underscores for the same reason.

How this works, what it excludes, and the FAQsShow

What each parameter is for

utm_source
Where the click came from. A specific platform or publication: instagram, linkedin, newsletter.
utm_medium
The kind of channel: social, email, cpc, referral. Keep this list short and fixed across the agency.
utm_campaign
The name everything groups under. One campaign, one name, used identically everywhere.
utm_content
Distinguishes two links from the same source, a bio link from a story link, or creative A from creative B.
utm_term
Paid search keyword. Leave it empty for organic social.

A convention worth agreeing once

The value of UTMs is entirely in their consistency. A tagging scheme that three people apply three ways is worse than no scheme, because it produces reporting that looks precise and is not. Agree the medium list, the campaign naming pattern and the casing rule once, write it down, and tag from the same sheet every time.

One rule that saves the most pain: never put UTMs on internal links. They restart the session attribution and overwrite the original source, so an internal tagged link makes your own site look like the source of its own traffic.

Put this calculator on your own site

Free to embed on any site, including commercial ones. Paste the snippet into a blog post, a resources page or a client-facing guide and the calculator runs inside your page.

The only thing we ask is the credit line underneath, which links back here. That link is how people find the tool and how we justify keeping it free and ungated, so please leave it in.

Leave this on automatic and each reader sees their own currency, detected from their browser and changeable by them. Pin one if your audience is in a single market.

Copy this into your page
Optional: remove the inner scrollbar

The embed works without this. Add it once anywhere on the page and the iframe resizes itself to fit its content instead of scrolling internally. It listens only for a height number from poststack.ai and does nothing else.

Default height
1050px, adjustable in the snippet
Tracking
None. No cookies, no analytics, nothing posted back to us
Your readers’ data
Stays in their browser. We never receive what they type

Frequently asked questions

What do the five UTM parameters mean?
Source is where the traffic came from (instagram, newsletter). Medium is the kind of channel (social, email, cpc). Campaign is the name you group everything under. Content distinguishes two links in the same place, a bio link from a story link. Term is for paid keywords and is usually left empty for organic social.
Why is everything forced to lowercase?
Google Analytics treats Instagram and instagram as two separate sources. When several people on a team tag links by hand, that inconsistency splits one campaign across multiple rows in reporting and nobody notices until the numbers do not add up. Forcing lowercase removes the most common cause.
Do UTM parameters affect SEO?
They create separate URLs for the same content, which is why you should never use them on internal links. On external campaign links, social posts, emails, ads, they are standard practice and the canonical tag on your page handles the duplication.
How is this different from Google’s Campaign URL Builder?
Google’s tool builds one link at a time, which is fine for one link. An agency launching a campaign needs the same URL tagged for a bio link, stories, a LinkedIn post and a newsletter, consistently. This builds all of them at once and gives you a table to paste into your campaign sheet.