Open Outlook MSG files
A .msg file is not an email message in the format email actually uses. It is a Microsoft Compound File — a small filesystem inside a single file — holding a bag of MAPI properties. That is why double-clicking one on a Mac does nothing, why renaming it to .eml produces gibberish, and why so many online converters return an empty page: reading one properly means implementing the container format, then the property format on top of it.
This page does both. The Compound File is parsed from its header down: the FAT, the mini-FAT, the directory tree, the mini-stream. The MAPI properties are read from the property stream and the substorage streams, with the right code page applied to non-Unicode text. The HTML body is taken from PidTagHtml when it exists, and recovered losslessly from the compressed RTF stream when it does not — which is the case for a large share of real Outlook mail, and the reason many readers show those messages as blank.
The file is read by code running in this tab. It is not uploaded, not queued on a server and not seen by anyone but you — which also means there is no size limit imposed from outside, only what your own device can hold.
- 1.Drop a .msg file. The Compound File signature is checked before anything else is read.
- 2.Read the message with remote content blocked, and inspect the recipients, dates, attachments and embedded messages.
- 3.Export: to EML, to PDF, or the attachments as a ZIP with SHA-256 hashes.
Drop email files here
Built for .msg. Nothing is uploaded — the file is read by code running in this tab.
What this page cannot do
- A .msg composed in Outlook and never sent has no internet headers stored in it at all. There is then no Received chain, no Message-ID and no authentication result to show, and the sender and recipients shown come from Outlook's own properties. The viewer says which of the two situations you are in rather than presenting reconstruction as fact.
- Some senders and recipients are stored as X.500 directory addresses rather than email addresses — normal inside an Exchange organisation. Those are shown as the directory name, because inventing an email address from one would be a guess.
- When a message's rich body is genuine RTF rather than HTML-encapsulated RTF, there is no original HTML to recover. The text is extracted and labelled as extracted; formatting, tables and embedded images are not represented.
- Multi-valued MAPI properties are listed in the property inspector but not decoded. Nothing this viewer displays depends on one.
- PST and OST files are not supported. They are a different format entirely, and no route claims otherwise.
If it did not work
- The file is refused as not being a .msg.
- Why: It does not begin with the Compound File signature. Files exported by some webmail clients are named .msg but are really EML.
- Try: Drop it anyway — the detector reports what the bytes actually are and parses it as that.
- The body is blank but Outlook shows text.
- Why: The message stores its body only in the compressed RTF stream.
- Try: This viewer decompresses that stream and de-encapsulates the HTML from it, so the body should appear. If it does not, the parse notes will say why — check the property inspector for PidTagRtfCompressed.
- Accented characters are wrong.
- Why: The message stores non-Unicode text and either names no code page or names the wrong one.
- Try: The viewer notes this in the parse notes. The property inspector shows which code page was resolved and from where.
Questions
Is my email actually uploaded anywhere?
No. There is no server here that accepts a file. The page's Content-Security-Policy sets connect-src to 'self', so the browser itself refuses any request to another origin, and form-action is 'none' so nothing can be submitted anywhere. The only network requests this site makes are for its own JavaScript, its own font files, and the Vercel page-view counter — which records that a page was viewed and nothing about what you opened. You can confirm all of it in your browser's network panel with the page open.
How do I open a .msg file on a Mac?
Drop it on this page. macOS has no built-in reader for the format and Outlook for Mac will not open a loose .msg reliably, but the file is entirely self-contained, so a reader implemented in the browser can show everything in it — body, HTML, recipients, dates, attachments and any messages embedded inside it.
Can I get the attachments out of a .msg?
Yes. Every attachment stored by value is extracted with its real filename and a locally computed SHA-256, individually or as a ZIP with a manifest. Attachments stored only as a reference to a network path are listed and marked as such, because the file itself is genuinely not inside the .msg.
Does it handle messages attached inside other messages?
Yes. An attachment stored as an embedded message is parsed as a message in its own right and can be opened, converted to EML or converted to PDF like any other, up to six levels deep.
Why can't I load the remote images in a message?
Because turning them on would mean weakening the site's Content-Security-Policy for every page and every visitor, and a policy broad enough to fetch one sender's images is broad enough to fetch anyone's. Rather than offer a switch that quietly undoes the guarantee, this viewer lists every remote resource the message references — the full URL, the element that referenced it, and which of them look like open-trackers — so you can see what would have been fetched without fetching it. Download the original message and open it in a mail client if you need the images rendered.
Related
- Convert MSG to EML — Convert Outlook .msg files to standard .eml messages that open in Thunderbird, Apple Mail and anything else. Attachments and inline images are preserved. Nothing is uploaded.
- Convert MSG to PDF — Convert Outlook .msg files to PDF with headers, body text and an attachment index with SHA-256 hashes. Runs entirely in your browser; nothing is uploaded.
- Open EML files — Open .eml email files in your browser with remote content blocked, full header analysis, attachment extraction and SHA-256 hashes. Nothing is uploaded.