Inspect and debug
EML file viewer
Open a .eml file to read the message, its headers and its attachments, without uploading it anywhere.
Open a .eml file to read the message, its headers, and what was attached. Nothing leaves your browser.
Instructions
How to use this tool
- 01Drop the .eml file onto the box, or pick it from your machine. It is read in the page with FileReader and never uploaded.
- 02Read the message. Remote images are blocked until you ask for them, because loading them tells the original sender it was opened.
- 03Switch to Headers for the full list, including the authentication results the receiving server recorded.
- 04Switch to Source when something will not render. The raw text is always there, even when the message is malformed.
Background
What a .eml file actually is
A .eml file is one email saved verbatim: the headers, then a blank line, then the body, exactly as it travelled. Mail clients export them when you drag a message to the desktop or forward one as an attachment, which is why they turn up in bug reports and spam complaints.
The body is rarely a single thing. A typical message is a multipart container holding a plain text version and an HTML version of the same content, and often a third part with the images the HTML refers to. Each part carries its own encoding, usually base64 or quoted-printable, and its own character set. That is why opening a .eml in a text editor shows walls of base64 rather than the message: the file is correct, it is just not meant to be read directly.
Background
Why remote images are blocked until you ask
Most .eml files people open are not their own mail. They are complaints a recipient forwarded, or a message someone attached to a support ticket. Rendering the remote images in one fetches them from the sender's servers, which fires any tracking pixels the message carries and reports back that it was opened, along with the IP address that opened it.
Embedded images are different and load immediately: those are parts of the file itself, referenced with cid: URLs, so showing them reaches the network for nothing. Anything pointing at a URL stays blocked until you turn it on, and the tool says how many it held back.
Background
What this cannot open
Encrypted bodies, whether S/MIME or PGP, are ciphertext without the private key, and no browser tool can change that. TNEF attachments, the winmail.dat files older Outlook servers produce, are a proprietary container this does not unpack.
When a message is simply malformed, which is common in mail generated by scripts, the viewer degrades rather than failing: the headers and the raw source are always shown, and anything that could not be parsed appears as a note rather than an empty screen.
FAQ
Frequently asked questions
Is it safe to open someone else's .eml file here?
The file is read in your browser and never uploaded. The message body renders inside a sandboxed frame with no permissions at all, so scripts in it cannot run, and remote images are blocked until you ask for them so nothing is fetched from the sender. You can confirm all of that from the network tab while using it.
How do I get a .eml file from my mail client?
In Apple Mail or Outlook, drag the message out of the list onto your desktop. In Gmail, open the message, choose Show original from the three-dot menu, then Download original. Forwarding a message as an attachment also produces one.
Why does the message look different here than in my mail client?
Every client applies its own stylesheet before it renders your HTML, and several rewrite colours for dark mode. This shows the message with a minimal base style, which is closer to the raw HTML than to any particular client. It is for reading and debugging a message, not for judging how a design will look.
Can I download the attachments?
They are listed with their type and size but not offered as downloads. If you are opening a message because something about it looked wrong, its attachments are the last thing worth saving to disk.
Why are some embedded images missing?
The HTML refers to them with a cid: URL that names a part of the file, and the part is not there. That usually means the message was forwarded or re-saved by something that dropped the attachments and left the references behind. The viewer counts how many it could not resolve.
More tools
Browse more free tools
Stop reconstructing what you sent from a .eml file
Courier records the delivery, bounce and open events for every message it sends, so debugging starts from a timeline rather than a file someone forwarded you.
See Courier's message log