Inspect and debug
Email header analyzer
Paste raw email headers to read SPF, DKIM, and DMARC verdicts, walk the Received chain, and see which hop delayed the message.
Paste the raw headers of a delivered message to see its authentication results, the servers it passed through, and where it spent its time.
Instructions
How to use this tool
- 01Get the raw headers: in Gmail open the message, choose Show original from the three-dot menu, and copy everything above the body.
- 02Paste them here and analyze. Parsing happens in your browser; headers often contain the recipient's address, and they are not sent anywhere.
- 03Read the authentication verdicts first: spf, dkim, and dmarc as the receiving server recorded them.
- 04Walk the delivery path. Each hop shows the time it took; a hop measured in minutes is where the message queued.
Background
Reading an Authentication-Results header
The receiving server records its SPF, DKIM, and DMARC verdicts in an Authentication-Results header, and that record is the closest thing deliverability debugging has to a primary source. spf=pass means the sending IP was authorized by the envelope domain's SPF record. dkim=pass means a signature validated, and the d= value beside it names the domain that signed. dmarc=pass means one of those two aligned with the visible From domain, which is what DMARC actually checks.
A message can have several Authentication-Results headers, because every forwarder can add its own. The one written by your receiving server is the first, and it is the one this tool reads when methods repeat.
Background
What the Received chain tells you
Every server that handles a message prepends a Received header, so the raw block reads bottom-up: the lowest Received line is the first hop out of the sending infrastructure and the top one is the final delivery. Each line records who handed the message over, who accepted it, and when.
The timestamps turn the chain into a latency profile. Subtracting each hop's time from the next shows exactly where a slow message spent its time, and the answer is usually one hop: a queue at an intermediate relay or a greylisting pause at the receiver. A negative gap between hops is real information too; it means two servers disagree about the time, and every delay calculation that crosses that boundary inherits the error.
FAQ
Frequently asked questions
How do I get the raw headers of an email?
In Gmail, open the message and choose Show original from the three-dot menu. In Outlook, open the message and look under File, then Properties, for the internet headers. Every client has an equivalent, usually named view source, show original, or view raw message.
Is it safe to paste email headers into an online tool?
Headers routinely contain the recipient's address, internal server names, and IPs, so where they go matters. This tool parses them in your browser and sends nothing anywhere, which you can verify from the network tab while using it.
Why are there multiple Authentication-Results headers?
Each server that evaluates authentication can add its own, so a message that passed through a mailing list or forwarder carries one per evaluator. Read the first one, which the final receiving server wrote. Later ones describe earlier hops and can legitimately disagree.
What does a negative delay between hops mean?
The two servers' clocks disagree: the later hop stamped an earlier time than the one before it. It says nothing about the message and everything about the infrastructure, and it makes delay calculations across that boundary unreliable.
More tools
Browse more free tools
See delivery status without reading headers
Courier records delivery, bounce, and open events for every message it sends, so debugging starts from a timeline instead of a raw header block.
Start sending free