What are email headers? How to read them
The hidden lines at the top of every message that record where it came from and how it got to you.
What headers are
Every email has two parts: the headers and the body. The body is the message you read. The headers are a block of lines at the top, each in the form Name: value, that describe the message. Your mail app shows a few of them (From, To, Subject, Date) and hides the rest. The format is defined in RFC 5322.
Headers matter when something seems off: a message you think is fake, mail that landed in spam, or a delivery that took hours. They show the path the message took and the results of the checks done on it.
A real example
Here is a shortened set of headers from an order confirmation, as a Gmail user would see them:
Return-Path: <bounces+8812@mail.example-shop.com>
Received: from mail.example-shop.com (mail.example-shop.com [203.0.113.25])
by mx.google.com with ESMTPS id a1b2c3
for <alice@gmail.com>; Tue, 14 Oct 2025 09:12:44 -0700 (PDT)
Authentication-Results: mx.google.com;
dkim=pass header.i=@example-shop.com header.s=s1;
spf=pass (google.com: domain of bounces+8812@mail.example-shop.com
designates 203.0.113.25 as permitted sender)
smtp.mailfrom=bounces+8812@mail.example-shop.com;
dmarc=pass (p=REJECT) header.from=example-shop.com
From: Example Shop <orders@example-shop.com>
Reply-To: help@example-shop.com
Subject: Your order has shipped
Message-ID: <20251014161240.5521@mail.example-shop.com>Reading the important lines
From is the sender shown in your inbox. It is easy to forge, so it is the line the other headers help you check. Reply-To, if present, is where your reply will go.
Return-Path is the envelope sender from the SMTP conversation, where bounces go. It often differs from From for mail sent through a newsletter or shipping service, and that is normal.
Received lines are added by each server that handles the message, newest on top. Read them from the bottom up to follow the path from sender to you. Only the top ones, added by your own provider, can be trusted. Lines further down were written by servers you do not control, and a sender can fake them.
Authentication-Results (RFC 8601) is added by your provider and is the quickest way to judge a message. It shows spf=, dkim= and dmarc= with pass, fail, softfail or none. The header.from part shows which From domain DMARC checked. A dmarc=pass on the domain you expect is a strong sign the message is genuine, while dmarc=fail on a well-known domain is a red flag.
Message-ID is a unique ID for the message, useful when asking an admin or provider to trace a specific email.
How to view full headers
In Gmail on the web, open the message, click the three-dot menu and choose Show original. In Outlook on the web, open the message's three-dot menu and look for the option to view the message source or details (Microsoft renames it from time to time). In Apple Mail, choose View, then Message, then All Headers, or Raw Source to see the full message.
Questions
- Can I find someone's location from email headers?
- Rarely. Big providers such as Gmail and Outlook do not include the sender's own IP address, so the earliest Received line usually shows only the provider's server. Some smaller servers do include it.
- Why are there so many Received lines?
- Each server that passes the message along adds one. A message may go through the sender's app server, a sending service, spam filters and your provider's internal servers, each adding its own line.