Skip to content

Sent vs Delivered Comparison

Send a draft to a disposable address from your own account and see what the sending path rewrote — links wrapped in redirects, dropped style blocks, added beacons, the encoding used.

The checker and the preview both reason about a message that has not been sent. This one uses the disposable inbox to find out what a real sending path does to it: open a throwaway address, send the draft from the account it will really go out from, and compare what arrived against what you wrote.

☁️ Uses our serveremaildeliverydiffnewsletter

About inbound mail in this deployment

This inbox is real code with an in-memory store, and whether mail from the outside actually reaches it depends on how this instance is deployed: it needs a domain with Cloudflare Email Routing pointed at the ingest Worker (docs/deploying-mail.md). Where that is not wired up, no external message will ever appear here however long you wait — the address is generated, the delivery is not. Nothing on this page pretends otherwise.

Messages are held in memory and vanish on restart. Do not send anything you need to keep.

  1. 1 Open a throwaway address
  2. 2 Send your draft to it — from the account it will really go out from
  3. 3 Pick the message that arrived and compare

Check the draft before you send it

How to use it

  1. Open an address

    A throwaway address on this service’s domain, valid for a short while and held in memory.

  2. Send from the real account

    From the Gmail, Naver or ESP account the campaign will actually go out from. That account’s composer and its link tracking are exactly what is being measured.

  3. Paste the draft and compare

    Pick the message that arrived, paste the same HTML you sent, and the comparison lists what was removed, what was added, which links were wrapped in a redirect, and what encoding was used.

Common questions

Will mail I send actually arrive here?

That depends on how this instance is deployed. Inbound mail needs a domain with Cloudflare Email Routing pointing at the ingest Worker; where that is not set up, an address is still generated but no external message will ever appear. The page says so at the top rather than leaving you refreshing.

Why does the comparison happen on the server?

Because a disposable address receives mail from strangers. The inbox never hands the browser raw message markup — only a sanitised copy — and diffing in the browser would mean breaking that rule for every message. So the delivered HTML is read next to the store and only counts, tag names and URL pairs cross, as text.

My draft — is it stored anywhere?

No. It is sent with the comparison request, used, and dropped when the request ends. It is not written to the store, not logged and not returned to anyone.

The message vanished after a while

Inboxes here expire and the store is in memory, so a restart empties it. It is built for one comparison in one sitting, not as a place to keep anything.

Feed it from

Next

These accept what this tool produces, so the result can go straight in.