Bulk UTM Builder

Paste your value lists once — get every tagged campaign URL, checked against GA4 rules.

One value per line. Every combination of your values becomes a link.

No https://? We add it and say so. Existing query strings and #fragments are kept intact.

Presets only fill values in — edit them however you like. Hover a preset to see the GA4 channel it lands in.

One value per line (commas work too). Leave a field empty and it is left off the link entirely — no dangling utm_term=.

Formatting and safety options

Add a landing page URL plus utm_source and utm_medium — your links appear here.

Frequently asked questions

Why does a UTM builder force everything to lowercase?

Because GA4 stores utm values exactly as they arrive. Facebook, facebook and FACEBOOK are three different strings, so one campaign is split across three rows in your reports and you have to add them up by hand. It gets worse: GA4's default channel groups match lowercase only, so utm_medium=Email never reaches the Email channel and utm_medium=CPC never reaches Paid Search — both fall into Unassigned. That is why this bulk UTM generator lowercases every value by default and flags any capital letter before you ship the links.

For Meta ads, should utm_source be meta or facebook?

Use facebook. Google publishes the source category list that drives GA4's default channel groups, and facebook and fb are on it — meta is not. With utm_source=meta&utm_medium=cpc, GA4 cannot see a social source, so your paid campaign is reported as Referral or Paid Other instead of Paid Social. The campaign URL builder here flags meta and suggests facebook before you generate anything. Instagram ads are the same story: use instagram, not ig or insta.

What utm_source should I use for Naver, Kakao or LINE campaigns?

Use the plain service name — naver, kakao, daum, line, yahoo, yandex, vk, baidu, wechat — and pick the country preset to fill them in as chips. Naver, Daum, Yandex and Baidu are search engines on Google's list, so naver + cpc lands in Paid Search just like google + cpc. Messenger and community platforms are less predictable: this UTM parameter generator ships a curated subset of Google's 800-plus entry list, so when it cannot verify a source it marks the predicted channel with ≈ rather than guessing. The rule that never changes is utm_medium: paid placements need cpc, ppc, retargeting or paid… no matter which country you are in.

Why does my Korean utm_term show up as %ED%95%9C… in reports?

That is percent-encoding, and it is correct behaviour — URLs may only carry ASCII, so non-ASCII characters are encoded per character. GA4 usually decodes it back, but exports, third-party tools and shared links often show the raw form, which makes a keyword report unreadable. This UTM link generator shows the encoded result next to your value so you can decide before launch. Safest option: romanise the value (winter-coat) and keep the original wording in utm_content or your own naming sheet.

What is the difference between utm_id and utm_campaign, and are my links uploaded anywhere?

utm_campaign is the human-readable name you read in reports (spring-sale); utm_id is the campaign ID that ties the click to imported cost data from your ad platform, so GA4 can join spend to sessions. Use both when you import cost data, and keep utm_id stable even if you rename the campaign. As for your links: nothing is uploaded. This bulk UTM builder runs entirely in your browser, there is no account and no server to send to, and a CSV you drop in is read with the File API in this tab. Your campaign plan is unreleased information, and it never leaves your device.