Six checks, run in order, on every address.
Nothing here is proprietary magic. It is a sequence of checks, each cheaper and faster than the one after it, so we stop as soon as we have a definitive answer — and you are never charged for an answer we could not reach.
Pre-flight, before you spend anything
We read your file, find the email column, normalise every row, and count what is actually there: unique addresses, duplicates, blanks, malformed rows. You see the credit cost and press Start — nothing runs before that.
Syntax and typo detection
Structure, illegal characters and length. Obvious domain typos — gmial.com, hotmial.com, yaho.com — are flagged with a suggested correction rather than silently rewritten.
Domain and mail-server checks
Does the domain exist, and is anything listening for its mail? A domain with no MX records cannot receive mail however the address is spelled. We record which provider handles the domain and return it alongside the result.
Mailbox check
A conversation with the receiving mail server asking whether that specific mailbox exists — without ever delivering a message. Catch-all domains answer yes to everything, which is why they resolve differently.
Risk signals
Role addresses, disposable and burner domains, and patterns consistent with spam traps. This is where a technically valid mailbox can still be the wrong thing to send to.
One vocabulary, every time
Signals are normalised into one result code and a 0–100 confidence score that mean the same thing on every file you run. Where checks disagree, confidence falls rather than the result being overstated.
What you see while it runs
The app shows rows processed, the current rate, and a time estimate as a range rather than a false-precision countdown. If a batch is waiting rather than running, it says queued in words. You will never watch a bar that is not moving without being told why.
See what each result means