Skip to content
brownie.tools

UTM Builder

Build bulk campaign links with nine UTM fields, reusable JSON templates, and a GA4 channel pre-check.

Edit an existing tagged URL

Import replaces the current destinations and campaign fields.

Campaign templates

Save campaign fields and naming settings. Destinations stay unchanged. Templates remain in memory until you reload. A matching name replaces that template.

Opening a file replaces the current template list.

Campaign parameters

Destination URLs are required. One URL per line. Missing protocols use HTTPS. Existing query parameters and fragments are preserved.

Source is required.

Medium is required.

Campaign is required.

Optional campaign dimensions

GA4 channel pre-check: Unassigned

No default channel rule matches. Review source and medium.

GA4 default channel group rules as of 2026

Manual-tag estimate. Ad integrations and campaign data can override this result. Optional dimensions do not override these manual rules.

Runs locally in your browser. Nothing is uploaded or sent to a server.

Paste destinations into Destination URLs and fill Source, Medium, and Campaign to get UTM tracking links automatically. Copy all links or download CSV after fixing any marked lines. Add six optional campaign fields, normalize values to lowercase with hyphens, or import an existing tagged URL for editing. A local GA4 channel pre-check estimates the channel without opening your destinations. Save campaign templates in memory and export them as JSON to reuse after reloading; campaign processing stays in your browser.

Updated

How do I build a UTM link with existing query parameters?

Enter https://example.com/offer?plan=team#pricing in Destination URLs, then set Source to newsletter, Medium to email, and Campaign to Spring Launch. Set Content to Hero Banner and enable Use lowercase and replace spaces with hyphens in all campaign values. Leave the other fields empty. The generated link is:

https://example.com/offer?plan=team&utm_source=newsletter&utm_medium=email&utm_campaign=spring-launch&utm_content=hero-banner#pricing

The existing plan=team survives, campaign values use lowercase hyphens, and the fragment remains after the query. The GA4 channel pre-check displays Email for this combination. No Generate button is needed: results update as you edit. Review the complete address before selecting Copy all links or Download CSV.

How do I build campaign links in bulk?

Paste one landing page per line to apply a shared campaign to a product page, an offer page, and an article. Every result uses the same campaign fields; the tool does not accept a separate set of values per destination. To compare creative variants, change Content between batches and export each batch separately.

Blank lines create no results. Each result shows its original input line number and generated character count. A single invalid nonempty line blocks copying and CSV export for the batch, even when other links are ready. Fix the marked line or remove it. There is no configured link-count quota, but large batches still require browser memory and rendering time.

What does each supported campaign parameter mean?

The form supports nine UTM keys. Source, Medium, and Campaign are required here; whitespace alone does not satisfy a required field. This is a builder rule, not a statement that every analytics platform requires the same fields.

Campaign fields and intended labeling roles
FieldURL keyUse
Sourceutm_sourceWhere the link is distributed, such as newsletter
Mediumutm_mediumChannel label, such as email or referral
Campaignutm_campaignPromotion or initiative name
Campaign IDutm_idYour campaign identifier
Termutm_termKeyword or targeting label
Contentutm_contentCreative or placement label
Source platformutm_source_platformPlatform label
Creative formatutm_creative_formatFormat label, such as image
Marketing tacticutm_marketing_tacticTactic label, such as prospecting

Open Optional campaign dimensions for the last three fields. Medium presets offer email, cpc, social, paid_social, referral, and affiliate; they change only Medium. The builder writes labels into URLs. It does not install analytics, collect visits, or verify which dimensions your reporting configuration exposes.

How can I update a link that already has UTM tags?

Open Edit an existing tagged URL, paste into Tagged URL to edit, and select Import campaign. Import replaces the current destination list and all nine campaign fields, and disables normalization. Supported tags are extracted and removed from the destination. Simply pasting a tagged link into Destination URLs does not populate fields.

Generation deletes all existing instances of each supported UTM key, then adds your nonempty values. Clearing an optional field therefore removes its old tag. Import reads the first value when a supported key is repeated. Unrelated query parameters, including repeated keys, and fragments survive. Key matching is case-sensitive: use the lowercase keys shown above. URL serialization can normalize encoding, so preservation does not mean byte-for-byte identical text.

How can I keep campaign names consistent?

The naming checkbox trims, lowercases, and replaces runs of whitespace with hyphens in all nine values, including identifiers. It affects generated values without rewriting the text you typed. With the checkbox off, surrounding whitespace is still trimmed, but capitalization and internal spaces remain. Keep it off for case-sensitive campaign IDs.

Enter ordinary text rather than manually escaped values. The URL API encodes a literal plus sign as %2B and an unnormalized space as + in query values. Pre-encoding a space as %20 instead treats the percent sign as input and produces %2520. The naming option does not lowercase destination paths or unrelated query values.

What does the GA4 channel pre-check tell me?

This local estimate uses source, medium, and campaign with ordered manual-tag rules. It compares trimmed, lowercased inputs even when naming normalization is off; that comparison does not itself lowercase your output. No match displays Unassigned and a warning to review source and medium. That warning does not prevent export.

Treat the estimate as a review aid rather than confirmed attribution. Optional campaign dimensions do not override its rules. The pre-check does not connect to an analytics account or inspect traffic. Ad integrations and campaign data can override the estimate, so test a distributed link against your actual reporting setup.

How do I reuse campaign templates without saving destinations?

Enter a Template name and select Save template to keep the current campaign fields and naming setting in memory. Choose from Saved templates and select Apply template to restore them while leaving destinations unchanged. A matching name replaces the saved template; matching ignores capitalization. Names accept up to 100 characters, and the list holds up to 50 templates.

Select Save templates to download the list as JSON before reloading. Open templates replaces the current list; it does not immediately apply a campaign. Choose a template afterward and apply it. These files preserve campaign settings, not a history of generated links. Reloading clears the in-memory list and form.

Which URL and export limits should I check before sharing?

The builder accepts HTTP and HTTPS addresses, including hosts with ports, and assumes HTTPS when the protocol is missing. It rejects unsupported schemes and embedded usernames or passwords. Validation checks syntax without requesting the destination: it cannot confirm that a page exists, redirects correctly, or retains tags after navigation.

Copy all links writes one URL per line to the clipboard. If clipboard access fails, select the displayed links manually. Download CSV creates campaign-links.csv with destination and tracking_url columns. Cells are quoted, embedded quotes are doubled, and formula-like cell starts receive an apostrophe for spreadsheet safety.

Campaign processing stays in browser memory without sending inputs to a server or opening destinations. Keep passwords, personal identifiers, and confidential details out of campaign values: they remain visible in shared URLs. For adjacent publishing checks, use Meta Tag Generator for page metadata and Open Graph Tag Generator for sharing tags; neither replaces campaign tracking.

How to Use UTM Builder

  1. Destination URLs

    Paste one HTTP or HTTPS destination per line. Alternatively, open Edit an existing tagged URL, fill Tagged URL to edit, and select Import campaign; this replaces the current destinations and fields.

  2. Campaign parameters

    Fill Source, Medium, and Campaign. Add Campaign ID, Term, or Content as needed; open Optional campaign dimensions for Source platform, Creative format, and Marketing tactic.

  3. Use lowercase and replace spaces with hyphens in all campaign values

    Enable this checkbox only if every campaign value, including identifiers, should follow that convention. Review the automatically generated links and GA4 channel pre-check.

  4. Copy all links

    Fix every marked line and required field, then select Copy all links. Alternatively, select Download CSV to save destination and tracking_url columns as campaign-links.csv.

Frequently Asked Questions