Free tool · runs in your browser

Free merge tag tester — see what your list actually gets

Your email was designed for a subscriber whose first name is filled in and four letters long. Most of your list is not that subscriber. Paste your HTML and see what actually sends.

Runs in your browser · nothing uploaded · no signup

100% private — the preview, the checks and the translator run in your browser, nothing is uploaded.

Subscriber
Width
As designedTypical

Every field filled, every value short. The version the email was built and approved against.

As sentBlank fields

The subscriber who signed up through a form that only asked for an email — which on most lists is the majority of it. Any tag without a fallback renders as nothing at all.

Tags found

Paste your HTML to find every merge tag.

Checks

Paste your HTML to run the merge tag checks.

Translate to another ESP

Paste your HTML to translate its tags between platforms.

The preview substitutes the sample data itself, so it shows what the layout does — not what your ESP’s own renderer does with a conditional block, which each platform evaluates its own way. The tag list and the checks are the reliable part: every one maps to documented syntax for the platform it names. For the rest of the pre-send checks, work through the email QA checklist.

Personalization safety

What the Merge Tag Tester checks

Six checks and four stress profiles — the difference between an email that survives a real list and one that only survives a test send to yourself.

  • Fallbacks

    Greeting collapse

    Catches the "Hi ," defect — a greeting whose only word is a tag with no default value, on a list where most rows have no first name.

    Tags with no fallback

    Flags every subscriber field that has neither a default value nor a conditional wrap, anywhere in the body.

    Unguarded tag in a link

    Finds tags built into an href, where an empty value makes a malformed URL rather than a visible gap — invisible in any preview nobody clicks.

  • Portability

    Mixed ESP syntax

    Detects tags from more than one platform in one file. An ESP only resolves its own syntax; the rest sends as literal text.

    Unmapped placeholders

    Flags portable bracket placeholders like [FIRST_NAME] that no ESP resolves, so they ship as-is until you map them.

    Translation

    Rewrites every tag into Mailchimp, Klaviyo, MailerLite, ActiveCampaign or portable syntax, carrying the fallback across where the platform supports one.

  • Stress data

    Blank fields

    The subscriber who signed up through a form that only asked for an email — which on most lists is the majority of it.

    Long values

    Real names and company names run longer than the design comp. Shows the greeting wrap and the button overflow before you send.

    Accents and symbols

    Apostrophes, ampersands and accented characters are ordinary in real lists, and they break layouts built and tested on ASCII.

How it works

Paste, stress, fix what breaks.

Paste your HTML.

Drop in your email HTML or load a sample. Every merge tag is found across all four ESP syntaxes and marked guarded or unguarded — in your browser, nothing uploaded.

See it against real data.

The email renders twice, side by side: the typical subscriber it was designed for, and the one it will actually be sent to. Blank fields, long names, messy casing, accents.

Fix it, or move it.

Each finding names the tag and the fix. When you are switching platforms, the translator rewrites every tag into the new syntax and carries the fallbacks with it.

Questions

Merge tags, in plain language.

Why does my email say “Hi ,” instead of a name?

Because the first name field is empty for that subscriber and the merge tag has nothing to fall back on. It is the most common personalization defect there is: a list built from a form that only asked for an email has no first name on most rows, so the tag renders as nothing and the comma is left stranded. Give the tag a default value and it reads “Hi there,” instead.

What is a merge tag?

A token in your email that the ESP swaps for that subscriber’s data at send time. Mailchimp writes it *|FNAME|*, Klaviyo writes {{ first_name }}, MailerLite writes {$name} and ActiveCampaign writes %FIRSTNAME%. Same idea, four syntaxes, and none of them resolves another platform’s.

How do I set a default value for a merge tag?

It depends on the platform. Mailchimp takes it inline as *|FNAME:there|*, Klaviyo as {{ first_name|default:'there' }} and MailerLite as {$name|default('there')}. ActiveCampaign has no default-value syntax at all, so the fix there is conditional content: %IF !empty($FIRSTNAME)% Hi %FIRSTNAME%, %ELSE% Hi there, %/IF%.

What happens if a merge tag has no data?

The ESP replaces it with an empty string and sends anyway. Nothing errors, nothing is held back — the email just goes out with a gap where the name should be. That is why the defect survives review: it never shows up in a test send to yourself, because your own record has every field filled.

Can I use the same template on a different ESP?

The HTML travels fine, but the merge tags do not. Every tag has to be rewritten into the new platform’s syntax or it sends to your subscribers as literal text. The translator here does that rewrite in one pass and carries the fallbacks across wherever the target platform supports them.

Is my HTML private?

Yes. The preview, the checks and the translator all run in your browser. Your HTML is never uploaded or stored.

Skip the checklist

Or generate email that handles the blanks already.

EmailTemple writes the fallback into every personalized line it generates, in your ESP's own syntax — so a subscriber with no first name still gets a sentence that reads.