Skip to content
ToolShelf

Why are my emails going to spam?

Look up the three records that decide whether a mail server believes a message really came from you, and get told in plain words what is missing and what each gap actually causes.

Your domain

The part after the @ in your email address. An address or a full web address is fine too.

Unlike the other tools here, this one has to ask the internet something. A browser cannot make a DNS query, so the domain you type is sent to Cloudflare’s public resolver, or Google’s if that one cannot be reached. Only the domain goes: no address, no message, nothing else. Nothing is stored by this page, and the domain is not put in the web address, so it does not end up in your history.

This checks the setup, not the inbox

These three records decide whether a receiving server believes a message really came from you. Whether it then lands in the inbox also turns on your sending reputation, what the message says, how old the list is and how many people press the spam button. A domain can pass everything here and still go to spam. Nothing on this page can promise otherwise.

What your domain says

—

Enter your domain and press the button.

The three notes a receiving server reads

When a mail server receives a message claiming to be from you, it has no reason to believe it. Anyone can write any address in the From line; the protocol was designed in 1982 and has no opinion about it. Three small records in your domain’s public settings are what give a receiver something to check.

SPF is a list of the servers allowed to send mail using your domain. If a message arrives from somewhere not on the list, the receiver knows.

DKIM puts a cryptographic seal on each message as it leaves. The receiver fetches your public key and checks the seal, which proves the message came from you and has not been altered in transit.

DMARC is the one that ties it together. SPF and DKIM both check the technical envelope, which is not the address a person sees; DMARC requires that one of them match the visible From address, and tells receivers what to do when neither does. Without it, somebody can pass SPF perfectly using their own domain while putting yours in the From line.

The four things that are usually wrong

Two SPF records. The commonest cause of mail that was fine last month and is in spam now. A business signs up for a newsletter service, is told to add a TXT record, and adds it beside the one already there. Receivers do not merge them or pick the better one: they treat the whole check as broken, which is worse than having no SPF at all.

Too many lookups. A receiver may make ten DNS lookups while checking SPF and gives up beyond that, failing the check. You cannot see this by reading your record, because the cost is inside the includes: each one pulls in another record with lookups of its own, and one large provider can spend five. This page follows them and counts.

DMARC set to p=none. It looks like protection and is not. p=none tells receivers to deliver failing mail anyway and send a report. It passes any test of whether you have DMARC, which is exactly why so many domains have sat on it for years. It is the correct place to start and a stage rather than a destination: read the reports until every legitimate sender of yours passes, then move to p=quarantine.

No reporting address. A p=none record with no rua= is doing nothing whatsoever. It is not protecting anything and it is not telling you anything either, so there is no way to know when it would be safe to move on.

Why DKIM can only be guessed at

SPF and DMARC live at fixed addresses: the domain itself, and _dmarc under it. Either they are there or they are not.

DKIM does not work that way. A key lives under a selector, an arbitrary word chosen when it was set up, and there is nothing in DNS that lists them. The selector travels in the header of every message you send, so a receiver always knows which key to fetch, but from outside there is no way to enumerate them. Amazon SES and Mailgun generate random ones on purpose.

So this page tries the selectors the large providers use by default. Finding one proves DKIM is set up and tells you which provider signed it. Finding none proves nothing at all, and the result says so rather than reporting a problem that may not exist. To check for certain, open a message you have sent, view the original, and read the s= value out of its DKIM-Signature header.

What this page cannot tell you

Whether your mail reaches the inbox. Authentication answers one question: does this message really come from the domain it claims? Delivery also turns on your sending reputation, what the message says, how old the list is, how many recipients press the spam button, and rules that differ between providers and change without notice. A domain that passes everything here can still go to spam, and a page that promised otherwise would be the most useful-sounding lie it could tell.

A score. There is no number out of a hundred here, because any such number requires deciding what a missing DKIM key is worth against a weak DMARC policy, and that weighting is invented whoever does it. What is real is the list of specific things that are wrong.

Anything, if the lookups were blocked. This is the one tool on this site that has to ask the internet something: a browser cannot make a DNS query, so the domain is sent to a public resolver over HTTPS. Ad blockers and company networks block those endpoints fairly often, and a blocked lookup looks exactly like a domain with nothing set up. They are reported separately here and never read as each other.

Questions

What are SPF, DKIM and DMARC, in plain words?
Three small notes you leave in your domain's public settings. SPF is a list of the servers allowed to send email using your address. DKIM puts a seal on each message so the receiver can tell it was not altered on the way. DMARC ties those two to the name people actually see in the From line, and tells receivers what to do when a message fails: nothing, send it to spam, or refuse it. A receiving server reads all three before deciding whether to believe the message is really from you.
Will fixing these get my email into the inbox?
It removes the commonest reason for being refused, and it is not a guarantee. Authentication answers one question: does this message really come from the domain it claims? Whether it then reaches the inbox depends on your sending reputation, what the message says, how old and how willing the list is, how many people mark it as spam, and rules that differ between providers and change without notice. A perfectly configured domain can still land in spam. Anyone promising otherwise is selling something.
Why does having two SPF records break things?
Because the rule is exactly one, and receivers do not merge them or pick the better one. Faced with two, they treat the whole check as broken, which is worse than having no SPF at all. It happens constantly: a business signs up for a newsletter service, is told to add a TXT record, and adds it alongside the existing one. Mail that was fine for years starts going to spam and nothing obvious has changed. The fix is a single record containing every provider's include.
What is the ten lookup limit, and why can I not see it in my record?
A receiver is allowed to make at most ten DNS lookups while checking SPF, and stops with an error beyond that, which fails the check for everybody. You cannot see it by reading your record because the cost is hidden inside the includes: each one pulls in another record with lookups of its own, and a single large provider can spend five. This tool follows them and counts. If you are over, the usual fixes are removing services you no longer send from, or flattening the record.
I have DMARC. Why does this say it is not protecting me?
Probably because it says p=none. That is monitoring only: it instructs receivers to deliver failing mail anyway and send you a report. It passes every test of whether you have DMARC, which is why so many domains have sat on it for years believing they were covered. It is the right place to start, and the point of it is to read the reports until you are sure every legitimate sender of yours passes, then move to p=quarantine and eventually p=reject. If there is no rua= address in the record, it is not even doing the monitoring.
Why can it not tell me for certain whether I have DKIM?
Because DKIM keys live at addresses nobody outside can list. SPF and DMARC sit at fixed names, so either they are there or they are not, but a DKIM key sits under a selector chosen when it was set up, and several providers generate a random one so they cannot collide. There is nothing in DNS that points at them. This tool tries the selectors the large providers use by default, so finding one proves DKIM is set up and finding none proves nothing. To check properly, open a message you have sent, view the original, and read the s= value out of the DKIM-Signature header.
Does my domain get sent anywhere?
Yes, and this is the one tool here that sends anything. A browser cannot make a DNS query: there is no interface for it, so the only way to read a record from a web page is to ask a public resolver over HTTPS. The domain you type goes to Cloudflare, or to Google if Cloudflare cannot be reached. Only the domain goes, nothing is stored by this page, and it is not put in the address bar, so it does not end up in your browser history.
It says the lookups did not get through. What does that mean?
Something between you and the resolver blocked the request. Ad blockers, privacy extensions and company networks block DNS-over-HTTPS endpoints fairly often. The important part is that a blocked lookup and a domain with nothing configured look identical if you only check whether the answer was empty, so this tool reports them separately and never reads one as the other. Pause the blocker and try again before believing any result.
Why is there no score out of a hundred?
Because it would be made up. Any single figure requires deciding how much a missing DKIM key is worth against a weak DMARC policy, and that weighting is arbitrary whoever does it. What is real is the list of specific things that are wrong and what each one causes, so that is what this shows.
Do I need all of this for a small business?
You need SPF and DMARC. Since early 2024 Gmail and Yahoo have required both from anyone sending in any volume, and the threshold keeps coming down. DKIM is normally a switch in your mail provider's settings rather than something you build. For a domain that sends nothing at all, an SPF record ending in -all and a DMARC record with p=reject are worth publishing anyway: they stop anyone using the name to send mail.

More tools