Email verification & deliverability, in one place.

Check that the email addresses you collect are real, turn bad ones away at signup, and set up the DNS records your own email needs.

  • Catch-all detection included, not an add-on
  • Unknown results are never charged
  • Pay monthly or buy credits that never expire

We never send mail to anyone on your list. Not one message. mailchecker is for addresses people gave you permission to use, never for cold or unsolicited email.

Check an address

Type any address and get the same answer a paying customer gets — the verdict, the reason behind it, and who runs the mailbox. Nothing is sent to the address.

Everything you need to keep your email data clean.

Three tools against one problem, included on every plan — including the free one.

Clean your list

Check every address in your customer or subscriber data. Remove the dead ones and flag the risky ones, so mistyped and abandoned addresses do not sit in your records.

See the checks

Protect your signup form

One script tag turns away fake, disposable and mistyped addresses as they are typed, so your list stays clean without you cleaning it again.

Set up Shield

Monitor your domain

SPF, DKIM, DMARC and the major blacklists, checked on a schedule. A score out of 100, the fixes ranked, and the exact record to paste.

Check my domain

Remove bad data before you send it.

A list and a single API call run exactly the same checks. The only difference is how many addresses you hand us at once.

All 30 reason codes
Invalid syntax, before any server is contacted
Domains with no mail server at all
Mailboxes the server confirms do not exist
Disposable and throwaway domains
Catch-all domains, detected and labelled
Role addresses — info@, sales@, support@
Typos, with the correction suggested
Duplicates, removed and never billed twice

Four verdicts. No maybes dressed up as yeses.

Every row of your file gets one of these, plus a reason code explaining it.

Deliverable

The mail server confirmed this mailbox exists.Send to it.

1 credit
Risky

Real, but carrying bounce risk — a catch-all domain, a role address, a full mailbox.Review it before you use it.

1 credit
Undeliverable

No such mailbox, no mail server, or a domain that cannot receive mail.Remove it. This is the one that bounces.

1 credit
Unknown

The server refused to say, and we will not invent an answer.Your call — and you are not charged for it.

free

We would rather lose the credit than sell you a guess.

Some mail servers simply refuse to answer. A verifier can admit that, or label the address anyway and bill you for it. The second looks better on a results screen and costs you twice: once for the credit, and again when the address bounces.

Unknowns are free

When a server will not answer, we say so and take no credit for it.

Catch-all, labelled

We test a random address beside yours and mark the result risky, with the reason.

Nothing is sent

We ask whether the server would accept mail, then hang up. No message leaves.

Every verdict explained

A reason code on every row, so you know why an address failed, not just that it did.

One call, while they are still typing.

Check an address at signup, at checkout, or anywhere you take an email. The reply tells you what to do with it: accept it, ask them to confirm, or reject it outright.

POST /api/verify
{
  "email": "[email protected]",
  "verdict": "deliverable",
  "reason": "mailbox_exists",
  "suggested_action": "accept",
  "billed": true,
  "did_you_mean": null,
  "provider": "Google Workspace",
  "latency_ms": 274
}

Simple pricing. You pay for answers.

One credit per address. Unknowns, duplicates and malformed addresses are never charged, so the bill is always smaller than the row count.

The things people ask.

Do you send email to my list?

No, and this is worth being precise about. We open a connection to the mail server and ask whether it would accept mail for that address, then close it. The command that would actually deliver a message is never sent. Nobody on your list hears from us.

What about catch-all domains?

A catch-all domain accepts every address, including ones that do not exist, so no verifier on earth can confirm a single mailbox on one. We test a random address alongside yours to detect it, label the result risky, and tell you why. Anyone marking those deliverable is guessing.

Why do some addresses come back unknown?

Because the server would not give us a straight answer. It asked us to come back later, it throttles anyone who asks, or it gives every address the same reply. We could guess. We do not, and we do not charge you for them.

How long does a big list take?

Most of it is answered at a few addresses per second. Servers that ask us to come back later get a second pass automatically, so your file is ready quickly with those rows marked, and it updates itself when they answer.

Do I need a developer?

No. Upload a CSV or Excel file and download the results. Shield is one line of HTML on your form. The API is there if you want it, not because you need it.

How often should I re-check a list?

People change jobs and abandon mailboxes constantly, so a list decays whether you use it or not. Check them again from time to time, and set a schedule if you want it automatic — the app will re-check and show you what went bad since last time.

Find out what is in your list.

100 checks a month, free, no card. Upload a file and see the state of it in a couple of minutes.

Create a free account