UTM Bench › Bulk UTM Builder
Bulk UTM Link Builder
Paste one destination per line, set the campaign fields once, and get every tagged link at once. Naming rules apply to every row, which is the only reliable way to keep a large campaign consistent.
● Runs locally. What you paste never leaves this page.
Why bulk tagging is where consistency breaks
A single link built carefully is rarely the problem. Problems appear when a
campaign has forty links across an email, a set of ads and several social posts,
built by different people over several days. One person writes
Newsletter, another writes newsletter, and the
campaign is split in reporting before it launches.
Building every link in one pass from one set of field values removes that entirely. The source, medium and campaign are typed once and applied to every row identically.
Per-link content labels
Add a comma and a label after any URL to set utm_content for
that row only. This is how you keep campaign-level fields constant while still
distinguishing individual placements:
https://example.com/pricing,pricing-cta
https://example.com/demo,demo-cta
https://example.com/blog/post,footer-link
All three share the same source, medium and campaign, so they roll up
together, while utm_content lets you see which of the three
actually drove clicks. That is the distinction that tells you whether the hero
button or the footer link is doing the work.
The CSV export
The download gives one row per link with each parameter in its own column alongside the finished URL. That format is directly useful for two things: handing the links to whoever is building the email or the ads, and keeping a record of what was tagged with what.
Keeping that record matters more than it sounds. Six months later, when a report shows an unfamiliar campaign value, the export is the only evidence of what it referred to. Treat it as campaign documentation rather than a throwaway.
Existing query strings are preserved
If a destination already carries its own parameters, such as a product variant or a language flag, those are kept and the UTM parameters are added alongside. Any existing UTM parameters on the destination are replaced, since carrying two conflicting sets is never intended.
Practical limits
Everything runs in the browser, so a few thousand rows is comfortable. Two things to watch when tagging at volume: URLs beyond roughly 2000 characters are truncated by some email clients, and links carrying long campaign names inside QR codes produce denser, harder-to-scan codes. Keep values short.
Questions
How do I set a different utm_content per link?
Add a comma and the label after the URL on that line. Campaign-level fields stay constant across every row while each link gets its own content value, which is how you compare placements within one campaign.
Are existing query parameters kept?
Yes. Parameters already on the destination, such as a product variant, are preserved and the UTM parameters are appended. Existing UTM parameters are replaced, since two conflicting sets are never intentional.
How many links can I build at once?
A few thousand is comfortable, since it all runs in your browser. The practical limit is readability of the output rather than the tool.
Why download the CSV?
It gives one row per link with every parameter in its own column, which is what you hand to whoever builds the email or ads, and it is the only record of what a campaign value meant when you review reports months later.