urltoolskit.org
URL utilities, in the browser
Say hi →

Bulk UTM builder

landing pages × sources × mediums × campaigns · every combination · CSV export

One campaign across four channels and three landing pages is twelve URLs, and building them one at a time in a single-URL tool is how inconsistent tagging starts. List your landing pages and your channel values, and get every combination generated at once — with the naming rules applied uniformly, which is the actual point.

Ready.

How to use

  1. Paste your landing-page URLs, one per line. Existing query parameters on them are preserved.
  2. Fill in the UTM fields. Any field can hold several comma-separated values — every combination is generated, so three sources × two mediums × two landing pages is twelve rows.
  3. Leave a field empty to omit that parameter entirely rather than emit utm_term=.
  4. Keep Force lowercase and Replace spaces with hyphens on. This is the single highest-value thing the tool does — see below.
  5. Download .csv gives you a sheet with the URL and each parameter in its own column, ready for the campaign brief. Copy URLs gives you just the links.

Why lowercase and hyphens matter more than they look

Google Analytics treats UTM values as case-sensitive. utm_source=Newsletter and utm_source=newsletter become two separate rows in every report, and there is no way to merge them retroactively without a filter you will forget to maintain. The same goes for Summer-Launch versus summer-launch. One person capitalising a channel name in one email is enough to split a campaign in half.

Spaces are the second trap. A space in a UTM value is legal once encoded, but it arrives as %20 or + depending on who built the link, and those show up as different values. Hyphens avoid the whole question. Underscores work too, as long as you pick one and never mix — the UTM naming linter exists to check an existing set of links for exactly these inconsistencies.

On utm_medium specifically: GA4 derives its default channel groupings from it, and only recognises particular values — email, cpc, organic_social, paid_social, referral, affiliate, display, and a few more. Inventing your own (newsletter, facebook-ad) dumps the traffic into "Unassigned", which is the most common UTM mistake there is. Put the specific name in utm_source and keep utm_medium to the standard vocabulary.

FAQ

Is there a limit on combinations?

Generation stops at 5 000 URLs and says so. If you hit it, you almost certainly want fewer utm_content variants rather than a bigger cap.

What happens to UTM parameters already on my landing pages?

By default they are replaced, so you do not end up with two utm_source values. Tick Keep utm_* parameters already on the URL if the existing ones are deliberate — but be aware that duplicate UTM parameters resolve unpredictably across analytics tools.

Do I need utm_id?

Only if you are using GA4's campaign import or want to roll several link variants up under one campaign ID. It is ignored by Universal Analytics-era tooling.

How do I clean UTM parameters back off a URL?

The UTM cleaner strips them, and it handles click IDs like gclid and fbclid as well.