UTM Link Builder
Tags one URL, or every link in an email at once, with utm_source, utm_medium and utm_campaign. mailto:, #anchors and merge tags stay as they are.
@emailens/engine 0.18.22 · data last changed 10 Nov 2026
What changed
- https://acme.com/spring?ref=hero→ https://acme.com/spring?ref=hero&utm_source=newsletter&utm_medium=email&utm_campaign=spring_sale
- https://acme.com/new#arrivals→ https://acme.com/new?utm_source=newsletter&utm_medium=email&utm_campaign=spring_sale#arrivals
<table role="presentation" width="100%">
<tr><td><a href="https://acme.com/spring?ref=hero&utm_source=newsletter&utm_medium=email&utm_campaign=spring_sale">Shop the spring sale</a></td></tr>
<tr><td><a href="https://acme.com/new?utm_source=newsletter&utm_medium=email&utm_campaign=spring_sale#arrivals">New arrivals</a></td></tr>
<tr><td><a href="#top">Back to top</a> · <a href="mailto:help@acme.com">Email us</a></td></tr>
<tr><td><a href="{{unsubscribe_url}}">Unsubscribe</a></td></tr>
</table>Only absolute http(s) links are tagged; mailto:, #anchors and {{merge_tags}} stay as they are, and existing query strings are kept.
Paste your own email above and check it, or open the checker and paste it there: five clients, no account.
No signup · Five clients free, Outlook Classic included · All 21 with an account
Which clients need an account
Gmail Android, Gmail iOS, Outlook 365, Outlook iOS, Outlook Android, Outlook for Mac, Apple Mail, Yahoo Mail Android, Yahoo Mail iOS, Samsung Mail, Thunderbird, HEY Mail, Proton Mail, AOL Mail, Fastmail, Superhuman open with a free account.
The checker needs a computer screen.
Why email links need tags
Without UTM tags, analytics cannot tell a click from your newsletter apart from any other visit, and the campaign that drove the sale gets no credit. Tagging every link by hand is where mistakes come in: one untagged button, a typo in the campaign name, a tag pasted into a mailto: link. This tool tags every link in one pass and leaves the rest alone.
What each tag should hold in an email
- utm_medium
- Always email. GA4 puts a visit in its Email channel when the source or the medium is email, e-mail, e_mail or e mail, in any case. Anything else, such as newsletter in the medium, lands outside the Email channel.
- utm_source
- Which list or flow sent it: newsletter, welcome_series, cart_reminder. Leave it empty and GA4 files the visit under (not set).
- utm_campaign
- One name per send, with the date if you send the same campaign again: spring_sale_2026_03. This is the row you compare sends by.
- utm_content
- Which link in the email was clicked: hero_cta, footer_link. It tells you whether readers click the button or the text link.
Pick one spelling for each value and keep it. Reports group rows by the exact text, so Newsletter and newsletter become two rows.
A worked example
Three links from a campaign email, tagged with source newsletter, medium email, campaign spring_sale and content
hero_cta. The existing ref=hero stays. The mailto: link and
the unsubscribe merge tag are not touched, so your email platform can still fill the merge tag in.
<a href="https://acme.com/spring?ref=hero">Shop the spring sale</a>
<a href="mailto:help@acme.com">Email us</a>
<a href="{{unsubscribe_url}}">Unsubscribe</a> <a href="https://acme.com/spring?ref=hero&utm_source=newsletter&utm_medium=email&utm_campaign=spring_sale&utm_content=hero_cta">Shop the spring sale</a>
<a href="mailto:help@acme.com">Email us</a>
<a href="{{unsubscribe_url}}">Unsubscribe</a>
Outlook buttons built in VML carry their own href on the
v:roundrect, separate from the link other clients see. The tool
tags both, so Outlook clicks are counted too. MJML is tagged in place: mj-button,
mj-image and the other MJML link elements.
Your next question
- Do the tagged links all resolve? Check every link, free.
- Does the email trip a spam filter? Check its spam score, free.
Other free tools: Subject Line & Preheader Tester · Plain-Text Generator · AI Fix-Prompt Generator · Gmail Clipping & Size Checker · HTML Email Minifier · Accessibility Checker
Questions
What are UTM parameters?
UTM parameters are tags you add to a link's URL (utm_source, utm_medium, utm_campaign, and optionally utm_term and utm_content) so analytics tools can attribute the resulting traffic to a specific campaign. For email, a typical set is utm_source=newsletter, utm_medium=email, utm_campaign=your-campaign-name.
How do I tag every link in my email at once?
Paste your full email HTML into the input instead of a single URL. The tool detects it's HTML and rewrites the href on every absolute http(s) link, Outlook's VML buttons included, so you don't have to tag them one by one. It reports how many links it tagged.
What does it leave untouched?
Anything that isn't an absolute http or https link: mailto: and tel: links, #anchors, relative paths, and templating placeholders like {{unsubscribe_url}}. It also preserves each link's existing query string and hash, and replaces an existing utm_ value rather than duplicating it.
Is my email private?
Yes. Everything runs in your browser with JavaScript. The URL or HTML you paste is never uploaded or sent to a server.