Email QA Checker

Email link checker

One dead link makes a campaign look careless; one missing UTM makes it impossible to measure. Paste your HTML to see link and tracking problems first, then use the guide below to get every link right.

Check my emailRead the guideFree · no sign-up · your email code is not stored.

Link and tracking issues first

Results open filtered to broken, placeholder and insecure links and UTM mistakes.

Try a broken example

The sample newsletter has the link mistakes that slip into real campaigns most often.

Nothing is clicked

Links are checked in your browser without visiting them, so tracking and unsubscribe links are never triggered.

Email type
Your email code is not stored.

Your QA report will appear here

85 deterministic checks across 8 categories. Paste HTML and press Run QA Check, or load the sample to see a report straight away.

  • Compatibility18
  • Outlook9
  • Accessibility6
  • Links12
  • Images12
  • Mobile5
  • Tracking7
  • HTML Quality16

Guide

How to QA every link in an email

Broken, placeholder and untracked links are the most common email mistakes — and the easiest to prevent. Here's what to check and how to fix it.

1. Remove leftovers from development

Most broken links are placeholders that were never replaced. Search your HTML for these before every send:

  • href="#" and empty href="" — they go nowhere, and some clients open a blank page.
  • Staging, preview and localhost links — they work on your machine and nowhere else.
  • example.com, “yourdomain.com” and other template domains.
  • Values like href="link", href="TODO" or a bare https://.

2. Use absolute URLs with https://

An email has no base URL, so relative links like /pricing have nothing to resolve against and break in every client. Links that start with www. but no scheme are treated as relative by many clients too. Always write the full URL, including https:// and the domain.

Use HTTPS for every link and image. Plain http:// links can trigger “Not secure” warnings when they open, and some spam filters treat them as a negative signal.

3. Format email and phone links properly

An email address on its own in href is treated as a relative web link and opens a broken page. Phone numbers need the tel: scheme to be tappable on mobile. Encode spaces and special characters in mailto subjects.

HTML
<a href="mailto:help@acme.com?subject=Order%20question">help@acme.com</a>
<a href="tel:+15550102233">+1 (555) 010-2233</a>

Write phone numbers in international format with digits only in the tel: value. The visible text can keep spaces and brackets.

4. Get UTM tracking right

UTM parameters tell your analytics tool where a visit came from. Without them, email traffic usually shows up as “direct” and you can't tell which campaign drove sales. For each campaign, tag every link with the same three core values:

  • utm_source — where the traffic comes from, e.g. newsletter.
  • utm_medium — the channel; for email, use email.
  • utm_campaign — this specific send, e.g. october-edit.
  • utm_content (optional) — tells links apart within one email, e.g. hero-button vs footer-link.
A correctly tagged link
<a href="https://acme.com/new?utm_source=newsletter&utm_medium=email&utm_campaign=october-edit&utm_content=new-arrivals">
  Five new arrivals
</a>

The mistakes that quietly ruin campaign reports:

  • Inconsistent values — newsletter on one link and Newsletter or news-letter on another splits the traffic into separate rows. Pick lowercase values and stick to them.
  • Empty or placeholder values — utm_campaign= or utm_campaign=test left over from a template.
  • Duplicate parameters — the same key twice, often because your email platform also adds UTMs automatically. Check your platform's link-tracking settings and tag in one place only.
  • Malformed query strings — a second ?, &&, or UTMs placed after a # fragment, where analytics tools can't see them.

5. Make unsubscribing easy

Every marketing email needs a visible unsubscribe link in the body — laws such as CAN-SPAM (US), GDPR (EU) and CASL (Canada) expect an easy way to opt out. Since 2024, Gmail and Yahoo also require bulk senders to support one-click unsubscribe (through List-Unsubscribe headers) and to honour requests within two days.

Those headers are added by your email platform, not your HTML, so check your platform's settings. In the HTML, make sure the unsubscribe or preferences link is present and works — and don't add UTMs to it.

6. Avoid links that look suspicious

  • URL shorteners like bit.ly hide the destination; spam filters and wary readers distrust them. Link to the full URL — your platform's click tracking will wrap it anyway.
  • Link text that shows a different URL — if the visible text is a web address, it should match where the link goes. A mismatch is a classic phishing signal.
  • Too many different domains — linking to lots of unrelated sites in one email can look spammy. Stick to your own domain where you can.

7. Click everything in a real test send

This checker reads your links without visiting them, so it can't tell you if a page returns a 404. Before the campaign goes out, send a test to yourself and click every link — including the ones in the footer — on desktop and on your phone. Your email platform rewrites links for click tracking, so this is also the only way to confirm the final redirect lands on the right page.

Paste your email into the checker above to catch everything else — it flags placeholders, staging and example links, relative and insecure URLs, mailto and tel mistakes and every UTM problem in this guide.

What we check

85 deterministic rules — no AI guesswork. Confirmed problems are errors; patterns that only break in some clients are warnings.

Links

12 checks

Empty, # and malformed hrefs, localhost and example.com leftovers, mailto: and tel: formatting.

  • –Empty link
  • –Placeholder link href="#"
  • –Localhost or private-network link
  • –Staging or test link
  • –example.com or placeholder domain
  • –Placeholder link text in href
  • –Relative link URL
  • –Malformed URL
  • –Non-HTTPS link
  • –Same URL linked multiple times
  • –Email address link without mailto:
  • –Phone link formatting

Tracking

7 checks

UTM coverage and consistency, empty campaign values, duplicate and malformed parameters.

  • –No UTM tracking on any link
  • –Link missing UTM parameters
  • –Incomplete UTM set
  • –Inconsistent UTM values
  • –Empty or placeholder campaign value
  • –Duplicate query parameter
  • –Malformed query string

FAQ

Do you click or fetch my links?
No. Links are checked in your browser without being visited, so tracking pixels, unsubscribe links and one-time links are never triggered. That also means 404 pages aren't detected — click through a test send for that.
What about merge tags like {{unsubscribe_url}}?
They're recognised and skipped for URL checks, because your email platform fills them in at send time.
See all FAQs