Skip to content
Marvin's Toolbox.

Search tools

Type to filter all tools

UTM Link Builder

Build tracking URLs with utm_source, utm_medium, utm_campaign, utm_term and utm_content. Fill in the fields, watch the link update as you type, and keep the parameters consistent with presets and naming rules.

Everything runs locally in your browser. Your data never leaves your device.

Destination URL

The page the link should open. Its own query parameters and fragment are kept exactly as they are.

Campaign parameters

Pick a preset for the channel, then name the campaign. Every value is written in the color it gets in the finished link.

Email
Social
Paid
Other
utm_source

Where the click comes from: a site, a product or a mailing list.

utm_medium

The kind of channel: email, social, cpc, referral, affiliate.

utm_campaign

The campaign the link belongs to, so its links group together.

utm_term

The paid keyword the ad bid on. Optional, mostly for search ads.

utm_content

Which link it was, when one campaign has several. Optional.

Naming rules

Applied to every parameter value on its way into the link, so the same channel is always spelled the same way.

Replace spaces

Analytics tools compare values character by character, so Spring Sale, spring sale and spring-sale become three separate rows in the same report.

Campaign URL

The finished link, with each parameter in the color of the field it came from.

No link yet
Add a destination URL above and the tracking link builds itself as you fill in the fields.

Next steps

Send this tool's output straight into another tool.

Create a QR code for text, a link, an email, a phone number, an SMS, Wi-Fi access or a contact card. Set the error correction level, size, margin and colors, then download it as PNG or SVG or copy it straight to the clipboard.

Break a URL into scheme, host, port, path, query and fragment, and edit every part on its own. Query parameters become an editable table where you can change, add, remove and reorder values, with everything decoded for reading and the rebuilt URL ready to copy.

Convert text into every case at once: title case in the APA, AP, Chicago, MLA, Bluebook, AMA and NYT styles, sentence case, upper, lower, camelCase, snake_case, kebab-case and more.

Count words, characters, sentences, paragraphs, lines and more as you type, with estimated reading and speaking time.

Remove duplicate lines from a list or text, keeping the first occurrence. Optionally ignore case and whitespace, or drop blank lines too.

Replace text in two modes: plain find and replace all, or regular expressions with flag controls and capture group references like $1.

Compare two texts and see every added, removed and changed line highlighted, side by side or inline, with the changed words marked within each line. Ignore case, whitespace or blank lines, read a summary of how much changed, and export the result as a unified diff.

Paste a UUID to see what it carries: version, variant, and for time-based versions the exact timestamp, clock sequence and node. Also shows the raw bytes, the 128-bit integer and the URN form.

Decode Base64 to text or encode text to Base64. Paste into the top box, read the result below, and flip the direction with one click. Handles Unicode correctly, reads URL-safe Base64, and shows binary payloads as a hex dump you can download.

What you can do

  • Build a campaign URL with utm_source, utm_medium, utm_campaign, utm_term and utm_content.
  • Add the GA4 parameters utm_id, utm_source_platform, utm_creative_format and utm_marketing_tactic.
  • Read the UTM parameters out of a link you already have and edit them in the form.
  • Keep the query parameters and the fragment the destination already has.
  • Force lowercase values and replace spaces with a hyphen or an underscore.
  • Start from a preset for newsletters, Instagram, Google Ads, affiliate links and other common channels.
  • Spot values that would split one campaign into several rows in your reports.
  • Save finished campaign links and load one back to build the next variant.

How to use the UTM Link Builder

  1. 1Paste the page you want to link to. A link that already carries UTM parameters is taken apart into the fields instead of being tagged twice.
  2. 2Pick a preset for the channel, or type the source and the medium yourself.
  3. 3Name the campaign, and fill in term or content when one campaign has several links.
  4. 4Set the naming rules, then read the Checks panel for anything that would split your reports.
  5. 5Copy the campaign URL, or save it to the list so the next variant starts from it.

What each parameter is for

utm_source names where the click comes from, like newsletter, instagram or google. utm_medium names the kind of channel, like email, social or cpc. utm_campaign groups every link of one campaign together, which is what lets you compare a spring sale against a summer one.

The last two are optional. utm_term records the keyword a search ad bid on, so it belongs with a cpc or ppc medium. utm_content tells apart several links inside the same campaign, like the header button and the footer link of one newsletter. Fill it in whenever a campaign has more than one link, otherwise the clicks all land in the same bucket.

Why the spelling matters more than the wording

Analytics tools compare parameter values character by character, so Newsletter, newsletter and news letter are three different sources. Nothing warns you about it at tagging time, and by the time the report looks wrong the links are already out in the world. That is why the tool applies naming rules on the way into the link rather than trusting everyone to type the same thing.

Lowercase and hyphens are the common convention, so those are the defaults. Underscores work just as well as long as everyone uses the same one. Spaces are the case worth avoiding: they become %20 in the link and show up escaped in reports.

Pasting a link that is already tagged

Adding UTM parameters to a link that already has them is the classic way to end up with two utm_source values, and analytics tools disagree about which one wins. Paste such a link here and its parameters move into the form fields, so you edit them instead of stacking a second set on top. Parameters that are not UTM, like fbclid or your own ref, stay in the destination URL untouched.

To take a link apart the other way, or to strip its tracking parameters entirely, use the URL Parser.

The GA4-only parameters

utm_id is the campaign id GA4 joins with imported cost data, and utm_source_platform, utm_creative_format and utm_marketing_tactic describe the platform, the creative and the targeting behind a campaign. They sit behind the Advanced disclosure because most analytics tools ignore them and pass them through as ordinary query parameters.

GA4 also files traffic into a default channel group based on the medium, which is why the tool shows the channel next to the medium field and flags a medium it has no rule for. Those visits end up under Unassigned, which is a confusing place to find a campaign you paid for.

Getting the link in front of people

A tagged URL is long, so it rarely goes out as-is. For print, a slide or a poster, turn the finished link into a scannable image with the QR Code Generator. For a shortener, tag the link here first and shorten the tagged version, otherwise the parameters are lost on the redirect.

Enter a resolution to get its simplified aspect ratio, or start from a ratio and one side to get the missing dimension. Knows the common ratios like 16:9, 4:3 and 21:9 and shows how close your size is to each.

Create barcodes in dozens of formats, from EAN-13, UPC-A and Code 128 to QR Code, Data Matrix and PDF417. Type the content, tune the size, colors and text options, and download the result as PNG or SVG.

Encode and decode Base16, Base32, Base36, Base45, Base58, Base62, Base64 and Base85. Pick the alphabet variant you need, from Crockford Base32 to Bitcoin Base58 and Ascii85, and convert in either direction.

Decode Base64 to text or encode text to Base64. Paste into the top box, read the result below, and flip the direction with one click. Handles Unicode correctly, reads URL-safe Base64, and shows binary payloads as a hex dump you can download.

Hash a password with bcrypt or Argon2 and verify a password against an existing hash. Tune the cost factor, memory, iterations and parallelism, see how long the hash takes, and read the parsed parts of any hash you paste.

Calculate AND, OR, XOR, NOT and bit shifts with a live binary view of every operand and the result. Enter numbers in decimal, hex, octal or binary and see each bit line up as you type.