Add your file
Choose or drop a .eml file. You can paste the contents instead.
Open a saved email (.eml) and read it the way it was actually sent. A summary shows the subject, the sender's display name and real address, recipients, Cc, the date with its UTC equivalent and the Message-ID. The plain-text body is shown as is, and an HTML body is turned into inert text where every link is written out as its full address. Below that you get every header in file order with its decoded value, the numbered Received path, the complete MIME part tree with content types, transfer encodings, charsets and byte ranges, and an attachment inventory with file name, declared type and decoded size. Remote images, CSS url() references and 1×1 tracking pixels are listed by host and path instead of being fetched; scripts, event handlers, javascript: links, forms, iframes and meta refresh are listed instead of run; cid: inline images are matched to the part they point to. A display name hiding a different address, or a Reply-To or Return-Path on another domain than From, is pointed out. You can download the text body, the HTML-as-text and the raw headers, and pull the decoded bytes of any single non-multipart part by its number.
or drop a file here
Choose or drop a .eml file. You can paste the contents instead.
The file is read and parsed in this browser — nothing is uploaded.
Look over what came back, then copy it, download it, or move on.
Want to know how files are handled? Read the privacy notice →
Drop the .eml file onto this page or paste its raw source, and the subject, sender, text body and attachments appear right in your browser. You don't need a mail account, Outlook or any other client. When a message only has an HTML body, you get a text version of it with each link spelled out as its full address, so nothing navigates by accident.
No. The .eml file is parsed by code running in your own browser tab, and none of the remote images, CSS backgrounds or tracking pixels inside the message are requested. Each of those references is listed with its host and path in the Remote resources table instead, so the sender cannot learn from them that the message was opened. Text and attachment downloads are generated locally as well.
Yes — open this page in Safari, Chrome or another current mobile browser and pick the .eml from Files, Downloads or a cloud-drive folder. If the file arrived in a chat app, save it to your files first. Wide tables such as the header list and MIME parts scroll sideways on a small screen, and an extracted attachment is saved to your browser's download location.
Any modern browser on Windows 11, macOS or Linux can open it with this viewer, with nothing to install. Apple Mail on a Mac opens .eml files natively, and Thunderbird can open saved messages on every system. The difference is that this viewer never renders the HTML or runs scripts, which makes it a good way to look at a message's structure without triggering any remote content.
That error means the file contains no empty line marking the end of the header block, so it isn't a complete email message. Typical causes are a copy of only the headers, a truncated download, or a file that isn't EML at all, such as a renamed .msg. Export the message again with “Download original” or “Save as” in your mail service. CRLF, LF and bare CR line endings are all accepted, so Windows vs Mac line breaks are not the cause.
Garbled text usually means the message declared one charset while its bytes use another; this viewer decodes strictly and reports an error instead of guessing. Each text part is decoded with the charset in its Content-Type. With no charset declared the part is read as US-ASCII, so accented or non-Latin bytes then raise a “text does not match its declared charset” error. A label your browser doesn't know only fails that one part, and an undecodable =?…?= word in the Subject is kept as written with a warning.
Files up to 25,000,000 bytes (about 25 MB) are accepted; anything larger is refused before parsing starts. Each text preview shows up to 200,000 characters and says when it was cut, MIME nesting may go 20 levels deep, and up to 2,000 parts and 20,000 header fields are read. Transfer encodings base64, quoted-printable, 7bit, 8bit and binary are handled, and charsets are whatever your browser's decoder supports, including UTF-8, ISO-8859-x, Windows-125x, Shift_JIS, GBK and Big5.
No. Authentication-Results, DKIM-Signature, Received-SPF and ARC headers are statements written into the message, and this viewer performs no cryptographic check on them — it has no network access and no keys. They are listed under Authentication claims with a clear “not verified” label. The Received path is also the route the message records about itself, and hops before your own provider's server can be forged. For a trustworthy answer, rely on your mail provider or administrator.
The viewer does not scan attachments for viruses and never opens them; it only lists the file name, declared type and decoded size. Viewing the .eml here runs no scripts and renders no HTML, but an attachment you extract is the original file, so open it only if you trust the source and check it with your antivirus first. The declared type is simply what the message claims: an attachment named invoice.pdf need not be a PDF.
Find the attachment's number in the Attachments table, enter it in the “Part number to extract” field and run again; a download for that part then appears. It is named after the file name declared in the message, including RFC 2231 continuations and encoded names, or <your file>-part-N.bin when none is given. No attachment is decoded into a file until you ask for that specific part, and a part with damaged base64 data cannot be extracted and shows a decode error instead.
EML is the standard plain-text internet mail format, while MSG is Outlook's own binary format; this viewer reads EML only. An EML file is RFC 5322 headers followed by a MIME body, and most webmail services and mail clients can export it. An .msg file needs Outlook or a conversion to EML first. In webmail, look for “Show original” or “Download message” to get an .eml.
Open the file and look at the Headers table: every field is listed in file order with its raw and decoded values side by side. Folded headers are joined back into one line, and repeated fields are all kept. The Raw headers panel holds the header block exactly as written and can be downloaded as .txt, while Received lines get their own numbered Received path table, hop 1 being the server closest to you.