← Deliverability

How to Check if an Email Address Is Valid (Without Sending an Email)

You can check if an email address is valid without sending anything to it. You check it in layers: is the address written correctly, does the domain exist, does that domain have a mail server, and (when the server is willing to say) does that exact mailbox exist. Each layer catches a different kind of bad address, and the first three are free, instant and safe.

This guide shows you how to run every layer by hand, with the exact commands, what each answer means, and where the honest limits are. Then it shows you the fast way: paste the whole list into our free bulk email verifier and get all of it done in seconds, without uploading the list anywhere.

Key pointShort answer: an email is safe to send to when (1) the format is valid, (2) the domain exists, (3) the domain publishes MX records, and (4) it is not a throwaway, a typo or a shared team inbox you don't want. Layers 1 to 3 catch most of the addresses that cause hard bounces. Layer 4 (the mailbox itself) needs a server conversation that many providers refuse to answer honestly.

Valid, deliverable, verified: three different things

People use these words as if they mean the same thing. They don't, and mixing them up is how lists that "passed validation" still bounce.

TermWhat it meansExample that passes but still fails
Valid formatThe text follows email rules: one @, a legal name part, a real-looking domain.jane@acme-corp-old.com (format fine, domain gone)
Deliverable domainThe domain exists and has a mail server that accepts email.left.company.2019@acme.com (server fine, person gone)
Verified mailboxThe mail server confirmed this exact mailbox exists right now.Rarely fails, but many servers won't confirm at all

So "how do I check if an email is valid" really means: how far down these layers can I get, and what do I do with the ones I can't confirm? Here is each layer.

Method 1: Check the format (10 seconds, catches typos and junk)

Every email address is name@domain. Quick rules that catch most broken entries:

  • Exactly one @, with something on both sides.
  • The name part is at most 64 characters, and the whole address at most 254.
  • No spaces, no two dots in a row, and no dot at the start or end of the name.
  • The domain has at least one dot and ends in a real extension: .com, .io, .co.uk.

Then look for typos of big providers. These pass every format check and still bounce, or worse, reach a stranger: gmial.com, gamil.com, hotmial.com, outlok.com, yahooo.com, and anything ending in .con or .cmo. If you collect emails through a form, a typo pass alone can rescue real leads: sarah@gmial.com is almost always sarah@gmail.com.

Format checks are necessary but weak. ceo@thiscompanyclosed.com is a perfectly formatted address that goes nowhere. That's what the next layer is for.

Method 2: Check the domain has a mail server (the MX lookup)

Email for a domain goes wherever its MX records point. MX records are public DNS entries, so anyone can look them up, and looking them up sends nothing to the person. This is the single most useful free check, because dead domains and domains that never set up email are a big share of hard bounces on scraped or older lists.

On a Mac or Linux (Terminal)

dig mx acme.com +short

On Windows (Command Prompt) or a Mac

nslookup -type=mx acme.com

In any browser, no install

Open this URL and swap in the domain you want to check:

https://dns.google/resolve?name=acme.com&type=MX

How to read the answer

What you seeWhat it meansSend?
One or more lines like 10 aspmx.l.google.com.The domain receives email. The host tells you the provider: google.com is Google Workspace, mail.protection.outlook.com is Microsoft 365.Yes, go to the next layer
NXDOMAIN, or "Status": 3 in the browser versionThe domain does not exist. Every address on it will hard bounce.No
A single record 0 .A "Null MX": the domain says it accepts no email at all. Try example.com to see one.No
No MX records, but the domain has a websiteMail may still be delivered to the domain's main server (an old fallback rule), but usually nobody set up email.Risky, skip for cold email
Hosts like pphosted.com, mimecast.com, messagelabs.comA security filter (Proofpoint, Mimecast, Symantec) sits in front of the inbox. The address can be fine, but cold mail gets screened harder.Yes, with extra care

The provider line is a bonus most people ignore. If you send cold email, knowing which leads are on Google and which are on Microsoft lets you send Google-to-Google and Microsoft-to-Microsoft, which tends to land better.

Checking a whole list this way by hand takes hours. The free verifier runs the MX lookup on every domain at once, and shows the provider for each email.

Open the free verifier

Method 3: Ask the mail server about the mailbox (and why it often won't tell you)

This is the layer people mean when they say "verify without sending." A mail server has a short conversation before it accepts a message. Part of it is the sender saying RCPT TO:<jane@acme.com>, and the server answering. Verifier tools open that conversation, ask about the mailbox, read the answer and hang up before any message is sent.

> RCPT TO:<jane@acme.com>
< 250 2.1.5 OK                          (mailbox accepted)

> RCPT TO:<nobody-here@acme.com>
< 550 5.1.1 User unknown                (mailbox does not exist)

When the server answers honestly, this is the most accurate check there is. The problem is that many servers don't:

  • Catch-all domains accept every address at the door, real or not, and sort it out later. A probe gets 250 OK for jane@ and for zzz123@ alike. Verifiers label these "accept-all" or "unknown."
  • Security gateways (Proofpoint, Mimecast and similar) often accept everything first, then filter, so the probe learns nothing.
  • Big providers rate-limit and block probing. Run a few hundred probes from one IP and you start getting temporary errors or blocks instead of answers.
Watch outDon't probe from your own sending domain or server. Servers log who knocks. Hundreds of half-finished conversations from your mail IP look exactly like a spammer harvesting addresses, and that hurts the domain you actually need. If you want mailbox-level checks, let a dedicated verifier or your sending tool's built-in verification do it from their infrastructure.

This is also why no honest tool can promise 99% certainty on every address. On a typical B2B list, some share of addresses will come back as accept-all or unknown no matter what you pay. The right move is to decide what to do with them (see the results table below), not to pretend they are confirmed.

Method 4: Screen out throwaway, team and personal inboxes

An address can exist and still be a bad send. Three kinds to flag:

  • Throwaway (disposable) inboxes like mailinator.com, 10minutemail.com or yopmail.com. Real for a few minutes, then gone. There are thousands of these domains; a community-kept list has over 10,000 of them, and that is what our verifier checks against.
  • Team inboxes like info@, sales@, support@ or hello@. They exist, but nobody owns them, replies are rare, and several sending tools and providers treat bulk mail to them with suspicion. Fine for a contact form; weak for cold outreach.
  • Personal inboxes on a B2B list: @gmail.com, @yahoo.com, @outlook.com. Not invalid, but if you're selling to companies, a personal address is often old, unmonitored, or the wrong context. Flag them and decide case by case.

Also watch for forwarding aliases such as @duck.com or Apple's privaterelay.appleid.com. They deliver today, but the person can switch them off at any time.

Method 5: Check the whole list at once (the fast way)

Doing methods 1, 2 and 4 by hand is fine for five addresses. For a lead list it is not. Our free email verifier runs all of them on up to 25,000 emails per run:

  1. Paste your emails in any format, or drop a CSV straight from your CRM or lead tool.
  2. It finds the email column on its own, removes duplicates and flags typos with a fix.
  3. It checks every domain's mail server live, plus the throwaway, team and personal inbox checks.
  4. You download only the deliverable rows, with all your original columns kept and the result added.

No signup and no credits. It also runs inside your browser: only domain names (like acme.com) go out to public DNS, never the full addresses, so your lead list is never uploaded to anyone's server.

It deliberately does not run the mailbox probe from Method 3. A browser can't open that server conversation, and the warning above is why you shouldn't from your own setup either. Use it as the free first pass that removes the bulk of the bad addresses, then let your sending tool's verifier take a last look at the survivors if it offers one.

Paste a list or drop a CSV. Up to 25,000 emails per run, free, nothing uploaded.

Open the free verifier

Methods to skip

  • Sending a test email. It does tell you if an address bounces, but every bounce is a mark against your domain. Testing a list this way is exactly how domains get burned.
  • The "forgot password" trick. Typing the address into a provider's reset page to see if an account exists. It's slow, it's against most services' terms, and providers increasingly show the same message either way.
  • Googling the address. Finding it on a web page proves it existed once. It says nothing about whether it works today.

What to do with each result

ResultTypical reasonFor cold email
DeliverableFormat fine, domain and mail server found, a person's addressSend
Risky: typogmial.com, outlok.comFix it, then recheck
Risky: team inboxinfo@, sales@Find the person instead, or leave out
Risky: personal inboxGmail or Yahoo on a B2B listYour call; often skip
Risky: no MX recordWebsite exists, email never set upSkip
Accept-all / unknownCatch-all domain or security gatewaySend in small, separate batches and watch bounces
UndeliverableDead domain, Null MX, throwaway, broken formatRemove, never send

If more than about 2% of a list comes back undeliverable, don't just remove those rows and send the rest. A list that dirty usually has stale contacts the checks can't see either. Go back to the source. Our guide to cold email bounce rates covers the safe thresholds and what to do when you cross them.

A 60-second routine before every send

  1. Run the list through the verifier; fix typos in one click.
  2. Keep deliverable rows; decide on risky ones by reason, not by gut.
  3. Put accept-all addresses in their own small campaign.
  4. Check your copy for spam triggers with the spam word checker.
  5. Make sure the sending domain is old enough and set up right with the domain age checker.

That routine takes about a minute and prevents the most common way cold email programs die: a dirty list that burns a good domain in a week.

Frequently asked questions

Can you check if an email is valid without sending an email?
Yes. You can check the format, confirm the domain exists, and look up the domain's MX records to see that it has a mail server, all without contacting the person. A verifier can also ask the mail server whether the mailbox exists and hang up before any message is sent, though many servers (catch-all domains, security gateways) accept every address and won't give a real answer.
Is there a free way to check if an email address is valid?
Yes. For one address, run an MX lookup with 'nslookup -type=mx domain.com' or open dns.google/resolve?name=domain.com&type=MX in a browser. For a list, the Koldemails email verifier is free with no signup, checks up to 25,000 emails per run, and runs in your browser so the list is never uploaded.
How can I tell if an email address is still active?
Only the mail server knows for sure, and only if it answers honestly. A verifier that runs the SMTP mailbox check gives the best signal. If the domain is a catch-all, no tool can confirm the mailbox; send to those addresses in small, separate batches and watch for bounces.
What happens if I send to an invalid email address?
It hard bounces. One bounce is harmless, but a pattern of bounces tells inbox providers you're mailing addresses you never confirmed, which is what spammers do. Over about 2% for cold email, more of your messages start landing in spam, including the ones sent to good addresses.
Is a catch-all email address valid?
Maybe. A catch-all domain accepts mail for any address, so the address can't be confirmed in advance. The domain is real and receives email, but the specific mailbox may not exist. Treat catch-all addresses as risky: send to them separately and in small batches.