Checking an address never emails it. Not once, and not by accident. Here’s why that holds

Start for free

Email verification

Know which addresses can receive mail before you press send.

Check one address, clean up a list you already have, or verify every signup as it happens. Every answer comes back with the evidence behind it and a clear recommendation.

5 free checks, no account neededNo credit card required

Live checkSame engine as the API

5 free checks remaining

A real check against the real service. It talks to the mail server and never delivers anything: there is no DATA stage in the probe.

No message sent

There is no DATA stage in the probe, so nothing can reach the mailbox.

Five states

Four answers, and one that admits when nothing safe can be said.

Stable reason codes

A fixed vocabulary you can write code against, never text from a stranger’s server.

Nothing held back

The free checker returns exactly what the API returns, before you sign up.

Why it matters

Three things a bad address costs you.

Bounces

Take out the addresses that were never going to arrive, before a mailbox provider notices you sending to them.

Sender reputation

Every bounce is a small vote against you. Keep invalid and burner addresses out of campaigns, trials and your user table.

Data quality

Catch a typo while the person is still on the page. That is the one moment it costs nothing to fix.

Three ways in

One address, a whole list, or every signup.

Three different jobs and three different interfaces. Underneath, the same checks and the same four answers.

01 / Single

Check one address, see the whole working.

For when somebody in support, sales or ops needs a straight answer about one address. You get the verdict, and every stage that led to it.

Check an email
Resultalex@studio.co
Deliverable

Recommended action: allow

Mail routing
MX found
Mailbox probe
Recipient accepted
Disposable provider
No
Role account
No
MX_FOUNDSMTP_RCPT_ACCEPTED

02 / Bulk

Turn a list into decisions.

Upload the file you already have, watch it work through, then filter by outcome and export only the rows you need.

Explore bulk verification
contacts.csv125,420 rows
Illustrative outcome distribution
Deliverable104,852
Risky9,112
Undeliverable9,804
Unknown1,652

Made-up figures, for the sake of the example. No two real lists break down alike.

03 / Real-time

Stop bad addresses at the form.

One call while the person is still typing. The response tells your signup, lead form or checkout whether to let it through, ask for confirmation, add a step, or turn it away.

Explore real-time verification
POST /v1/verifications
// request
{ "email": "person@example.com" }

// response
{ "status":     "deliverable",
  "action":     "allow",
  "confidence": 0.92,
  "reason_codes": ["SMTP_RCPT_ACCEPTED"] }

How a check runs

Five stages, and you can see all of them.

There is no score here to take on faith. Each stage asks one question, and the work stops as soon as the answer is settled.

  1. 01

    Syntax

    Is it even a well-formed address? Typos, stray spaces and a missing @ are caught here, without touching the network.

  2. 02

    Domain

    Does the domain exist at all, and does it say anything about receiving mail?

  3. 03

    Mail routing

    Where does mail for this domain actually go? MX records, null MX, implicit MX.

  4. 04

    Mailbox probe

    We start a conversation, name the recipient, then reset and hang up. There is no DATA step.

  5. 05

    Classification

    Everything we found becomes a status, a recommended action, and the codes explaining both.

A mail server saying yes is good news, but it is not proof. That yes can come from a catch-all domain, from a gateway that checks properly later on, or from a provider that simply will not tell you whether a mailbox is there. Which is why one of the four answers is “we couldn’t say”.

What you get back

Four answers, and what to do about each.

Colour is only a hint. The label, the icon and the recommended action are what carry the meaning.

Deliverable

The mailbox is there and the server accepted it. Nothing was flagged against it.

Typically: Mail exchangers configured · Recipient accepted · No risk flags

Action: allow

Risky

The address may well work. Something about it weakens the evidence, and the reason code says what.

Typically: Catch-all domain · Disposable provider · Role account · Looks like a typo

Action: challenge

Undeliverable

A hard failure. The address is malformed, the domain doesn’t exist, or it takes no mail at all.

Typically: Bad syntax · Domain does not exist · Domain accepts no mail · Mailbox not found

Action: reject

Unknown

The mail server wouldn’t say. That happens more often than you’d expect, and a guess would be worse.

Typically: Timed out · Greylisted · Provider throttled · Mailbox existence hidden

Action: allow_with_email_confirmation

There is a fifth state, and it only means “not finished yet”.pending means the mailbox check is still running. It arrives with a retry_after_ms, so your polling is bounded instead of blind, and it always settles into one of the four above.

The response

Six fields, and what each one is for.

One thing you will never find in there: the raw text a mail server sent back. It gives away details of someone else’s infrastructure, it can carry control characters you did not ask for, and it changes the day a provider rewords a message. You get stable codes instead.

Response fields
status
One of five values. Four are final; pending means come back shortly.
action
What we suggest your product does about it.
checks
syntax · domain · mail_routing · smtp · accept_all · disposable · role_account
reason_codes
A fixed vocabulary. Safe to write an if-statement against.
suggestion
The domain they probably meant, when it looks like a typo.
confidence
How strongly the evidence backs the conclusion, from 0 to 1.
Confidence is not the chance of delivery.It is a rule-based score for how strongly the evidence backs the conclusion. We won’t show it as a percentage until we have real delivery outcomes to calibrate against, because an uncalibrated percentage looks far more precise than it actually is.
Status and action are separate on purpose.Status is what we found. Action is what we suggest. Keeping the two apart means your signup form and your list cleaner can treat identical evidence completely differently.
DNS_NXDOMAINNULL_MXACCEPT_ALL_DOMAINDISPOSABLE_DOMAINROLE_ACCOUNTSMTP_GREYLISTEDSMTP_MAILBOX_NOT_FOUNDLIKELY_DOMAIN_TYPO

Running it at scale

Built to sit behind every form you have.

The numbers below are still with the platform team. Until they have been measured and signed off, they stay visibly marked rather than quietly invented.

[XXK+]

checks per minute

[99.XX%]

measured uptime

[XX ms]

typical response

[Regions]

processing locations

Marked figures are placeholders waiting on approval. We would rather show you a gap than a number we can’t defend.

Nothing reaches the recipient

The probe opens a session, names the recipient, and resets. There is no code path in it that can send mail.

Nothing waits forever

The slow checks are queued and polled on an explicit interval. No request sits holding a socket open and hoping.

We have to earn the right to reject

Probe evidence can only produce a rejection where we have measured how accurate it is for that provider. Where we haven’t measured, nobody gets blocked.

Integrations

Verification where your data already lives.

  • HubSpot
  • Salesforce
  • Mailchimp
  • Klaviyo
  • Segment
  • Zapier
  • Snowflake
  • Webhooks
[CUSTOMER QUOTE — TWO TO THREE SENTENCES, NAMED SOURCE]
[NAME · ROLE · COMPANY]

No quote goes live until Marketing supplies a real one, from a real person who agreed to it.

Pricing

Pay for verification, not for ambiguity.

One product, sold by volume. Buy a thousand or buy a million: you get the same checks, the same answers and the same ways in. Only the unit price moves.

Questions

The things people ask first.

What does verification actually check?

Four things, in order: whether the address is well formed, whether its domain exists, where that domain sends its mail, and what the receiving server says when we name the recipient. Alongside that we look for what makes an address risky even when it works — burner domains, shared inboxes like info@, and domains that say yes to absolutely everything.

Does verification send an email?

No. The probe opens an SMTP session, names the recipient, then resets and disconnects. There is no DATA stage in the prober at all — not one that gets skipped, not one behind a flag. Whoever owns the mailbox never hears about it.

What does “unknown” mean?

That we couldn’t get a straight answer, and we’d rather say so than invent one. Providers time out, greylist, throttle, or deliberately hide whether a mailbox exists. When that happens the result stays unknown and the advice becomes: let the person in, behind a confirmation email.

Can catch-all addresses be verified?

Partly, and we’re straight with you about which part. A catch-all domain accepts every address it’s offered, so acceptance says nothing about that particular mailbox. Instead of promoting a guess to deliverable, those come back as risky with an ACCEPT_ALL_DOMAIN code, and you decide what your flow does with them.

How long does a single check take?

Usually not long. Most answers come from syntax, DNS and routing, where nobody else is involved. When a mailbox probe is needed you’re waiting on someone else’s mail server, and a few of them answer slowly on purpose. Those come back as pending with a retry interval, so nothing spins forever. Median and p95 figures go up here once we’ve measured them properly.

Is the address I check stored?

The conclusion is. Keeping it is what lets a repeat check answer at once instead of knocking on a stranger’s mail server a second time. How long it’s kept, and how to have it deleted, are on the security page and in the privacy policy.

Start here

Try it on an address you already doubt.

Start free, run your first few checks, and see what the answers look like on your own data.