UTM builder
Build one correctly encoded campaign URL, keep the setup as a reusable template, and take a locally verified CSV with it.
- SECURE
- NO UPLOADS
- NO SIGNUP
- BROWSER BASED
- FREE
- FOREVER.
Support us with a link or a share
Campaign details
Campaign source is required.
Reuse a campaign template
Paste a template from this tool, or choose its JSON file. The destination URL stays yours.
Add a complete web address, source, medium and campaign name. Nothing is fetched while you type.
A UTM builder should leave you with more than one link
A campaign URL is useful for the minute it is created. The naming decision behind it
needs to survive for weeks: which source label the team chose, whether email was called
email or newsletter, and how the campaign name was separated.
That is why this builder returns three connected artifacts. The URL is ready to publish,
the JSON template preserves the campaign fields for the next destination, and the CSV is
a reviewable campaign row for a spreadsheet or handoff.
The template deliberately leaves out the destination URL. Reusing a campaign should keep its naming convention, not quietly keep last week's landing page. Paste or open the template here, add the new destination, and inspect the complete generated address before copying it. Nothing is saved in an account, so the downloaded template is the durable copy.
How the campaign URL is assembled
The destination is parsed as a real web URL rather than joined with a question mark by
hand. Existing non-campaign parameters stay in place, as does a fragment such as
#pricing. Existing parameter names beginning with utm_ are removed
case-insensitively before the visible fields are added. That matters when a landing-page
link has been copied from an earlier campaign: leaving both old and new source parameters
would make the reporting result depend on which duplicate a later system happens to read.
Each field is encoded as a query value. An ampersand inside a source is data, not the start of another parameter; a plus sign inside a medium stays a literal plus; spaces, slashes, Unicode and hash characters cannot escape into the rest of the URL. The displayed link is the exact string written into the CSV. There is no hidden shortener and no redirect layer. If you need to inspect a link someone else built, URL decode explains the existing query string instead of changing it.
Source, medium and campaign are naming decisions
Source answers where the visit originated: a newsletter name, partner, platform or
publication. Medium describes the channel class, such as email, paid social or referral.
Campaign groups the work you want to compare. The builder requires those three because a
blank value creates an incomplete reporting label, but it does not force lowercase or
replace your spaces. A tool cannot know whether your existing convention uses
fall-launch, fall_launch or Fall Launch. Silently
choosing one would create a second convention rather than enforce yours.
Campaign ID, term and content are optional. ID can join the link to an external campaign record. Term is often used for a paid-search keyword, while content distinguishes links that share the same destination and campaign, such as a hero button and a footer link. Empty optional parameters are omitted rather than emitted as meaningless blank keys.
What the verified CSV does and does not prove
Spreadsheet programs may interpret cells beginning with =, +,
- or @ as formulas. Campaign labels are text, so those prefixes
are neutralized in the CSV before download. The file uses a UTF-8 byte order mark and CRLF
rows for broad spreadsheet compatibility. It is then parsed again in this tab, and all
eight headers and every cell are compared with the intended campaign row. The green receipt
means the generated table survived that exact local round trip.
It does not mean a spreadsheet imported the file, that a link was clicked, or that an analytics property recorded a session. This page never fetches the destination and never contacts Google Analytics. After publishing, use GA4 DebugView or your own real-time checks to confirm measurement, and use the Search Console report analyzer only for the separate question of how organic queries and pages performed. Those are evidence from live systems; a URL builder cannot manufacture it.
Keep campaign structure separate from campaign performance
A well-formed URL can still point to the wrong page, carry a naming convention nobody else follows, or be published where a redirect strips its query string. Review the visible URL, open it in the context where it will actually appear, and compare the resulting data after the campaign starts. If rankings or impressions are the concern, the Google ranking diagnostic walks through that evidence without treating UTM parameters as a ranking fix.
The same boundary applies to structured publishing data. A FAQ schema generator can produce valid JSON-LD while still being unable to promise a search presentation. Likewise, this builder can prove its encoding and exports while making no promise about analytics delivery. When page speed is the suspected issue instead, the Lighthouse report analyzer reads an actual report rather than inferring performance from the campaign URL.
Questions
Does this check that Google Analytics or GA4 received my UTM link?
No. It verifies the URL structure and reparses the downloaded CSV in this browser, but it does not open the destination, inspect a tag, contact GA4 or wait for campaign data. Use Analytics DebugView and your own reporting after publishing when you need evidence that measurement is working.
What happens to query parameters already on my destination URL?
Non-UTM parameters and the URL fragment are preserved. Existing parameters whose names begin with utm_, regardless of capitalization, are removed and replaced by the values visible in this form. That prevents two competing campaign sources from appearing in the same link.
Why are source, medium and campaign required?
Those three fields identify where the visit came from, the channel type and the campaign grouping. An empty optional term, content or campaign ID can be omitted safely; an empty source, medium or campaign would produce a link whose reporting meaning is incomplete.
What does the CSV verification prove?
The generated UTF-8 CSV is parsed again locally and every header and cell is compared with the intended row. Spreadsheet-formula prefixes are neutralized before that check. It proves the downloaded table matches this form; it does not prove that another application imported it or that a campaign platform accepted it.