Paste the message source

Gmail: open the message → ⋮ menu → Show original → copy to clipboard. Outlook: File → Properties → Internet headers. Nothing you paste is uploaded — parsing happens on this page, with no network requests.

How it works

read the Received chain from the bottom up
01

Bottom — origin

The first server the message touched. The IP here is as close to the sender as headers get.

02

Middle — relays

ESP outbounds, forwarders, scanning gateways. Long delays between stamps show up here.

03

Top — delivery

The recipient’s server. Its Authentication-Results header is the verdict that actually decided placement.

01

Grab the raw source

Show original in Gmail, Internet headers in Outlook, View raw message in Yahoo. Copy everything.

02

Paste and analyze

The parser unfolds the headers, orders the hops oldest-first and times each handoff.

03

Read the verdicts

SPF, DKIM and DMARC as the receiver judged them, plus whether your signing and bounce domains align.

Why headers beat DNS checks when a campaign is misbehaving

The SPF, DKIM and DMARC checkers on this site tell you what your DNS publishes. The Authentication-Results header tells you what a real receiving server actually decided about a real message. When placement drops on a domain that looks clean in DNS, the header of a delivered test message is the ground truth: it shows which identity SPF was evaluated against, which d= domain signed, and whether DMARC passed on alignment or squeaked through on one channel only.

The alignment trap most senders miss

A DKIM pass is worthless for DMARC if the signing domain does not match the From domain. Plenty of ESPs sign with their own domain by default, so the header shows dkim=pass and dmarc=fail in the same line. Same story on SPF: it is evaluated against the Return-Path, not the From address, so a bounce domain that differs from your From domain at the organizational level means SPF alone can never satisfy DMARC. This tool checks both alignments explicitly and tells you which leg your DMARC pass is standing on.

What the hop delays tell you

Each Received stamp carries a timestamp, so the gap between consecutive hops is measurable. A healthy transit is a few seconds end to end. A multi-minute wait before one specific hop usually means greylisting (a first-contact deferral), a scanning gateway holding the message, or queuing at a throttled relay. If your follow-ups land minutes late at one client while everything else is instant, this table shows exactly where the time went.

About tracing the sender

The bottom of the chain gets you the first public IP that handled the message. For anything sent through Gmail, Microsoft 365 or a commercial ESP, that IP belongs to the provider’s infrastructure, not the sender’s machine — webmail providers stopped exposing client IPs years ago. What the origin still reliably tells you is which platform sent the mail, which is usually the useful question when you are working out whether a message is legitimate.

How to get the raw headers out of your mail client

ClientWhere to look
Gmail (web)Open the message → the three-dot menu → Show original.
Outlook (web)Open the message → three dots → ViewView message source.
Outlook (desktop)Double-click to open the message → FileProperties → Internet headers.
Apple MailViewMessageRaw Source.
ThunderbirdViewMessage Source, or Ctrl+U.
Superhuman / Spark / othersLook for "show original", "view source" or "raw message" in the message menu.

You need the whole block from the top of the message down to the body, not just the visible From and Subject lines. The parts that matter — Authentication-Results, Received and DKIM-Signature — sit above anything a mail client normally shows you.

Reading the Authentication-Results line

VerdictWhat it meansWhat to do
spf=passThe sending IP was authorised — but for the Return-Path domain, which the recipient never sees.Check the domain listed beside it matches your From domain.
spf=failThe IP is not in the record. Common on forwarded mail and unavoidable there.If it is direct mail, your SPF record is missing the sender.
spf=softfailNot authorised, record ends ~all. Accepted but marked.Same fix as fail — the sender is not listed.
spf=noneNo SPF record published at all.Publish one. This is a bad look in 2026.
spf=permerrorThe record is broken — two records, syntax error, or over ten lookups.Run the lookup counter.
dkim=passA valid signature — but check the d= domain.If d= is your ESP, it cannot satisfy DMARC.
dkim=failSignature did not verify. Often the body was modified in transit.Check for disclaimer appenders and mailing lists.
dmarc=passSPF or DKIM passed and aligned with the From domain.Nothing. This is the target state.
dmarc=failNeither mechanism aligned, even if both passed individually.Alignment problem — see below.

The three domains to compare

When DMARC fails while SPF and DKIM pass, the answer is always in the same three places. Pull them out of the headers and put them side by side:

  • The From domain — in the From: header. The only one your recipient sees.
  • The Return-Path domain — what SPF was actually checked against.
  • The d= domain — inside DKIM-Signature. What DKIM was checked against.

DMARC needs at least one of the second or third to match the first. If neither does, both checks pass on their own terms and DMARC fails anyway. The full explanation is in why DMARC fails when SPF and DKIM pass.

google workspace · reseller pricing

Google Workspace below Google's list price

I can sell licences at reseller price, under the public price you see above — and set the tenant up properly at the same time. Domains verified, DNS and authentication configured, users provisioned in bulk, sending limits and signatures set, OAuth connected to Instantly or Smartlead.

Sensible from a handful of seats upward, and the saving compounds with every seat you add. Tell me your seat count and I will send a price.

100+clients served
1000sinboxes provisioned
BelowGoogle list price

Frequently asked questions

Where do I find the full email headers?

In Gmail open the message, click the three-dot menu and choose Show original. In Outlook double-click the message, then File and Properties — the headers are in the Internet headers box. In Yahoo Mail use More and View raw message. In Apple Mail use View, Message, All Headers. Copy everything and paste it into the box above.

Can this tool find the exact person or location who sent an email?

No, and neither can any header analyzer. Messages sent through Gmail, Microsoft 365 or a commercial ESP show the provider's server IP, not the sender's device. The origin IP identifies the sending platform and sometimes the region of its data center. Only the sending provider, under legal process, can map a message to an account.

Why does the receiver's Authentication-Results header matter more than my DNS records?

DNS shows intent; Authentication-Results shows the outcome. It records the SPF, DKIM and DMARC evaluation the receiving server actually performed on that specific message, including which domains were checked. If DNS looks correct but real messages show a fail, the header tells you which identity broke — usually a Return-Path or signing domain that does not align with the From domain.

Is it safe to paste email headers here?

Yes. The parser runs entirely in your browser with no network requests — headers are never uploaded, stored or logged. If you are still cautious, strip the Subject and body before pasting; the routing and authentication analysis only needs the Received, Authentication-Results, DKIM-Signature, From and Return-Path lines.

How do I check if an email passed SPF, DKIM and DMARC?

Open the message, view its raw source, and paste the headers above. The Authentication-Results header written by the receiving server carries the verdicts — spf=, dkim= and dmarc= — along with the domain each was evaluated against. That last part matters most: a pass against the wrong domain does nothing for DMARC.

Where do I find email headers in Gmail?

Open the message, click the three-dot menu at the top right of the message itself rather than the toolbar, and choose Show original. That opens the full raw source in a new tab, which you can copy in one go. Outlook on the web calls the same thing View message source.

What does dkim=pass but dmarc=fail mean?

The signature was cryptographically valid, but the domain that signed it — the d= value — is not your From domain, so it cannot satisfy DMARC alignment. This is the default behaviour of many sending platforms, which sign with their own domain until you publish their keys under yours. Fixing it means publishing DKIM in your own DNS.

Why does SPF pass but DMARC fail?

SPF is evaluated against the Return-Path, which recipients never see and which your sending platform often sets to its own domain. DMARC requires the passing domain to align with the visible From domain. If the platform supplies the Return-Path, SPF passes for them and DMARC still fails for you — unless DKIM is aligned instead.

Can email headers tell me who really sent a message?

They tell you which platform, not which person. The first public IP in the chain belongs to Gmail, Microsoft or the ESP that handled the message — webmail providers stopped exposing the originating client's IP years ago. For judging whether a message is legitimate, the platform plus the authentication verdicts is usually the more useful answer anyway.

What causes long delays between hops?

Each Received line carries a timestamp, so the gap between two hops is measurable. A multi-minute pause at one specific hop usually means greylisting on first contact, a scanning gateway holding the message for inspection, or queuing at a throttled relay. Healthy end-to-end transit is a few seconds.

Is it safe to paste email headers into this tool?

Parsing happens entirely in your browser — the headers are not uploaded anywhere. That said, headers can contain recipient addresses and internal hostnames, so apply the same judgement you would to any tool handling client data.

Last reviewed

Related tools

What to run next

The checks that most often follow this one.

Reputation & monitoring

More in this category

Read more

Guides that go deeper

Services

When the tools tell you something is wrong

The diagnostics here are free and always will be. When the fix is bigger than a DNS record, this is the work I do.

Get in touch

Start with a call

Bring a domain and the symptom. I will tell you what is actually wrong and whether you need me at all — plenty of people leave that call able to fix it themselves.

Thirty minutes, no pitch

We will run the checks together on your actual domains, and you will leave knowing what is broken, what it takes to fix, and what it should cost. If that is a job you can do in-house, I will say so.

Based inRangpur, Bangladesh — all time zones
RepliesWithin one business day
LicensingWorkspace below list price
Back to top