Free tool · no signup · no SMTP probing

Email Validator

Check an address before you send to it: syntax, real MX records, disposable and role accounts, and the typo you probably meant. No mail is ever sent, and nothing you type is stored.

API live at email.lifestep.io

Developer guide: command-line recipes →

GET /validate — live

How it works

  1. The validator trims the input, lowercases and IDNA-encodes the domain, and returns input, normalized, domain, is_ascii, idn, and syntax_valid fields.
  2. For syntactically valid addresses it checks MX records, then the RFC 5321 A or AAAA fallback, returning has_mx, up to three mx_hosts, and a note.
  3. It flags disposable domains, role accounts, common free providers, and likely provider typos; suggestions are advisory and never rewrite the input.
  4. The score is clamped to 0 through 100 and maps to deliverable_likely, risky, or undeliverable. No SMTP connection is made, so this cannot prove that a mailbox exists.

Frequently asked questions

Does this validator send an email or contact the mailbox?

No. It performs no SMTP probe and sends no message. It checks syntax, mail-routing DNS, and heuristic risk signals.

Can a high score guarantee delivery?

No. Syntax and DNS cannot prove that a mailbox exists, is monitored, or will accept a future message.

What does has_mx mean?

True means usable mail-routing DNS was found through MX or the RFC 5321 address-record fallback. Null means the DNS result is unknown, not that the address is invalid.

Does it detect disposable, role, and free-provider addresses?

Yes. It checks bundled domain and local-part lists and returns separate boolean fields, but those classifications are heuristics that can change over time.

How are common domain typos handled?

The API can return a suggested corrected address for a nearby common provider domain. It does not automatically replace the submitted address.

Use it from the command line

curl -sS "https://email.lifestep.io/validate?email=test%40gmail.com" \
  | jq '{normalized,syntax_valid,has_mx,is_disposable,is_role_account,is_free_provider,suggestion,score,verdict}'

Response sample for test@gmail.com using the stable validation fields:

{
  "normalized": "test@gmail.com",
  "syntax_valid": true,
  "has_mx": true,
  "is_disposable": false,
  "is_role_account": false,
  "is_free_provider": true,
  "suggestion": null,
  "score": 90,
  "verdict": "deliverable_likely"
}

Privacy

The validator code does not persist submitted email addresses. It caches only domain-level DNS results in process for up to 600 seconds; that cache is not shared or persistent.

Validating signup or import data with agents? Keep heuristics out of the final decision.

Use the agent verification guide to separate hard syntax failures from reviewable DNS and risk signals, with explicit acceptance rules before any send or import step.