UTM Campaign Builder

Build consistent, correctly encoded UTM links — one at a time or in bulk from a CSV.

Runs in your browser. Nothing is uploaded — your input is processed on this device and discarded when you close the tab.

Build a single campaign URL

The page the link points to, including any parameters or #section it already has — those are kept.

Where the click comes from: newsletter, google, a partner’s name, a printed poster.

The channel type. Use a preset chip below or type your own — and then use the same word every time.

The campaign this link belongs to: october_launch, spring_sale, product_hunt_day.

Traditionally the paid-search keyword. Leave empty unless you genuinely split reports by it.

Which variant or placement: header_button, sidebar_banner, text_link — for telling two links in one message apart.

Medium presets:

Naming-convention helper: pick one word per channel from these chips and never improvise a synonym later. “email” this month and “e-mail” next month are two mediums in every report you will ever run. Keep every value lowercase, join words with underscores, and write the convention down where your whole team can see it.

—

Privacy note: this builder runs entirely in your browser — nothing is uploaded. Even so, treat finished campaign URLs with care: campaign names can reveal unannounced launches or internal codenames, so do not paste them into public link shorteners or shared documents unless that exposure is acceptable.

QR code for print

The QR code appears here once the built URL is valid.

Use medium qr (or a campaign name that says print, such as poster_october) on anything physical — posters, packaging, event stands — so scans land in your reports as their own channel instead of being mistaken for direct visits.

Saved presets

Presets store a whole field combination — a newsletter header link, a partner referral pattern — in this browser’s local storage, on this device only. Nothing is uploaded, and clearing the browser’s site data deletes them.

Bulk builder

Build up to 50 tagged URLs at once. Edit the cells directly, import a CSV with columns for the destination and the five UTM values (a header row is recognised and matched by name), and export the finished set — including any row errors — as CSV. Rows with errors export with a note instead of a URL, so a broken row can never slip into a campaign unnoticed.

Destination URLSourceMedium CampaignTermContent Built URLStatusRow actions

Next steps

How to use the UTM Campaign Builder

  1. Paste the destination URL. Use the exact page the link should open, including an existing query string or a #section fragment if the link needs one. Existing parameters are preserved; existing UTM parameters are replaced rather than duplicated.
  2. Fill in source, medium and campaign. These three are required — a link missing any of them lands in your analytics as unassigned mush. Use the medium preset chips where one fits, and follow the naming note under them: lowercase, underscores between words, the same words every time.
  3. Add term and content only when they earn their place. Term belongs to paid-search keywords; content separates two links inside the same message, such as a header button versus a footer text link. Empty optional fields are simply left out of the URL.
  4. Read the warnings before you copy. Uppercase letters and spaces build a working link, but they fragment reports — Newsletter and newsletter are different sources to an analytics tool. The Tidy values button applies the recommended clean-up in one click.
  5. Copy, save or scale up. Copy the built URL for a one-off link, save the field combination as a preset when your team will reuse it, or switch to the bulk table and CSV export when a campaign needs dozens of links at once. For print, download the QR code instead.

Worked example

The October launch email for this very site points at the UTM builder page itself. The destination is https://atoztools.pro/tools/utm-builder/; the source is newsletter, because the traffic comes from our mailing list rather than from email as a technology; the medium is email, chosen from the preset chips; the campaign is october_launch; term stays empty, because there are no keywords to report on; and content is header_button, distinguishing this link from the footer link in the same message, which would carry footer_link instead. Select Load the sample campaign and the workspace fills with exactly those values, producing this URL character for character:

https://atoztools.pro/tools/utm-builder/?utm_source=newsletter&utm_medium=email&utm_campaign=october_launch&utm_content=header_button

Notice what is absent: no utm_term, because an empty optional parameter is omitted rather than shipped blank, and no encoding surprises, because every value is already lowercase words joined by underscores. Now imagine the same campaign built carelessly — source typed as Newsletter in one message and newsletter in the next, medium as Email in one tool and email in another. The links all work. The report is what breaks: four rows where one campaign should be, each with a quarter of the clicks, and a launch that looks four times smaller than it was. The warnings under the builder exist to catch exactly that, before the email is sent rather than after the report is read.

What UTM parameters do, and why consistency is the whole game

A UTM parameter is a label you attach to a link so that your analytics can tell you where a visit came from. Without labels, a thousand visits from your newsletter, a partner’s blog and a printed poster arrive looking identical — a chart of pageviews with no story attached. With labels, each visit carries its answer with it: this one came from the newsletter (utm_source=newsletter), through email as a channel (utm_medium=email), as part of the October launch (utm_campaign=october_launch), by clicking the header button (utm_content=header_button). The five standard parameters divide the work: source names the origin, medium names the kind of channel, campaign names the push it belonged to, term carries a paid-search keyword, and content separates variants within one placement.

The parameters themselves are trivially simple — that is the trap. Nothing technical stops a team inventing utm_medium=Email on Monday, e-mail on Wednesday and newsletter (a source, typed into the medium slot) by Friday. Every one of those links works perfectly. The damage is entirely in the reporting, and it is permanent: analytics tools are case-sensitive about these values, historical data cannot be relabelled after the fact, and a campaign split across six spellings is a campaign you can no longer measure. Marketing teams routinely discover, a quarter later, that their biggest channel is a spelling mistake. The fix is not cleverness; it is a written convention, a small fixed vocabulary for mediums, lowercase everywhere, underscores instead of spaces, and a builder that warns the moment a value drifts from the pattern.

Encoding is the other quiet failure. URLs cannot contain raw spaces and several punctuation marks, so a campaign named October Launch! has to be percent-encoded before it travels — October%20Launch%21 — and different tools encode differently, which is another way reports fragment. This builder follows the URL standard’s own rules through the browser’s URL machinery, so what you copy is what every server and analytics tool will read back. It also respects the URL you started with: parameters already on the destination — a product filter, a language code, a fragment pointing at a pricing section — survive untouched, while stale UTM values from a previous campaign are replaced cleanly instead of stacking up in duplicate, which some analytics setups read as the first value and some as the last.

None of this makes a campaign good. UTM hygiene is measurement hygiene: it ensures that when you compare October’s launch with November’s, you are comparing campaigns and not typographies. Teams that tag consistently can answer, within a minute, which partner sends visitors who stay, which email placement earns clicks, and whether the printed poster paid for itself. Teams that do not are guessing with extra steps.

Common errors, and the limits of this tool

The classic error is tagging internal links. UTM parameters are for traffic arriving from outside your own analytics’ view of the site — emails, ads, partners, print. Putting them on links between your own pages overwrites the visitor’s original source in most analytics setups: someone who arrived from a search, then clicked a tagged homepage banner, is re-credited to the banner, and your search reporting quietly loses them. Tag inbound links only. The second error is inconsistency, covered above: mixed case, synonyms for the same medium, spaces in one tool and underscores in another. The third is tagging everything with everything — term and content filled in out of habit produce reports sliced so thin that no row means anything. Optional means optional.

Two mechanical errors deserve mention. Shortened or redirected links must preserve the query string; some redirect setups drop it, so always click the final link once and confirm the parameters are still present on the landing page. And never put personal information — an email address, a customer name, an order number — into a UTM value: it ends up in analytics reports, server logs and shared screenshots, places it was never meant to be.

The limits are these. The builder constructs and checks URLs; it cannot verify that the destination page exists, that your analytics property is configured to read the parameters, or that a link shortener in the middle preserves them — test the final shared link end to end. Presets are stored only in this browser, so they do not follow you between devices or teammates; for a shared convention, export a bulk CSV and keep it as the team’s reference copy. The bulk builder holds 50 rows per batch by design, which keeps the page responsive and the export reviewable; larger campaigns should be split by channel, which is usually how they are reported anyway. QR codes encode the built URL exactly, but a very long URL makes a dense code that older phone cameras struggle with — the tool warns past roughly a thousand characters, and a short landing URL with a redirect is the better pattern for print.

Frequently asked questions

What is the difference between utm_source and utm_medium?

Source is the specific origin — the newsletter’s name, the partner site, google. Medium is the kind of channel — email, cpc, social, referral. One medium contains many sources: medium email might hold sources newsletter, onboarding_sequence and winback_offer. Keeping the two apart is what lets you answer both “how does email do overall?” and “which email, exactly, did best?” from the same data.

Why does capitalisation matter so much?

Because analytics tools, including GA4, treat UTM values as case-sensitive text. Newsletter, newsletter and NEWSLETTER become three separate sources, each with its own row, and there is no merge button after the data is collected. The builder warns whenever a value contains an uppercase letter, and the Tidy values button lowercases everything at once — but the real protection is a team convention that says values are always lowercase, applied before the link is shared rather than after.

Should I put UTM parameters on links inside my own website?

Almost never. In most analytics setups, clicking a tagged link starts a new session attributed to that link’s parameters, wiping out the original source that brought the visitor to you. Internal promotion — banners, menus, cross-links between your own pages — should be tracked with events or your analytics tool’s internal-promotion features instead. Reserve UTM tagging for links that live outside the site: emails, ads, social posts, partner pages, documents and print.

What happens to parameters already on my destination URL?

Ordinary parameters and any #fragment are preserved exactly — a product filter or language parameter rides along untouched. Existing utm_ parameters are treated differently: they are removed and replaced by the values in the builder, because two utm_source values on one URL are ambiguous — different tools honour the first or the last. If the destination you pasted already carries UTM values, the builder tells you they are being replaced, so the change is never silent.

How do CSV import and export handle the columns?

Import expects one row per link with the destination and the five UTM values. If the first row is a header, its names are matched flexibly — url, destination or destination_url all find the destination column, and both source and utm_source work for source. Without a header, columns are read in the order destination, source, medium, campaign, term, content. Export writes the inputs, the built URL and a status column; a row with an error exports its error message instead of a URL, so a flawed row cannot hide inside a big file. Batches are capped at 50 rows — rows past the cap in an import are reported, not silently dropped.

Where are my saved presets stored, and who can see them?

Only in this browser, in its local storage for this site, on this device. They are never uploaded, never synced and never visible to us or to other visitors. That makes them convenient for a solo marketer’s regular links — and unsuitable as a team’s only copy of a convention, since clearing site data or changing laptops loses them. For anything shared, export the combinations as a bulk CSV and store the file with the rest of the campaign’s assets.

Related tools

QR Code Generator

Create QR codes for any text or URL with size and error-correction controls, and download as PNG or SVG.

Business and Marketing

JSON Studio

Format, validate, minify, query and compare JSON in your browser, with precise line-and-column errors.

Developer Tools

Related articles

How to Build and Track UTM Parameters

UTM parameters label your links so analytics can tell one campaign from another. This guide defines all five parameters, gives a naming convention that survives real use, and shows tested URL output — including the uppercase and spaces mistakes that silently split your reports.

By AtoZTools Editorial Team · Last reviewed 2026-10-24

How to Calculate Profit Margin and Break-Even Price

Profit margin, markup, and break-even explained with the formulas, then worked in full — payment fees, platform fees, shipping, ad cost, and a discount included — so you can price for a target margin and find your break-even units. Includes the case where no break-even exists.

By AtoZTools Editorial Team · Last reviewed 2026-10-24

How to Build Topic Clusters and Internal Links

How to build a topic cluster: pick one pillar page, group supporting articles around one clear subtopic each, link them with descriptive anchor text, and run a repeatable orphan-page check — worked through on this site's real article set.

By AtoZTools Editorial Team · Last reviewed 2026-10-24