FileKiln

MSG File Viewer

Open Outlook .msg and .eml email files right in your browser - headers, body, and attachments - without Outlook and without uploading. The email never leaves your machine.

Ready when you aremsg / eml → readable email

Runs on your computer. Nothing gets uploaded.

Your stuff stays yours. Your file is opened with JavaScript inside this page. It is never transmitted, remote tracking images are blocked, and the tool keeps working with the network unplugged.

Someone sends you a .msg file and you don't have Outlook. The search results offer two kinds of help: install something, or upload the email - and an email is exactly the file you shouldn't hand to a stranger's server. It carries addresses, names, whole conversations, attachments. This viewer is the third answer: a .msg file is a Microsoft compound document with a known structure, and this page parses it directly - the sector tables, the property streams, the attachment storages - in JavaScript, in your tab. Unplug the network after the page loads and it keeps opening files, because there was never anything to send.

It reads both of email's file formats: Outlook's .msg and the standard .eml (Thunderbird, Apple Mail, most "export message" buttons), including multipart bodies, encoded subject lines, quoted-printable and base64 parts. HTML bodies render in a sandboxed frame with scripts stripped and remote images blocked - the embedded images the sender attached are shown, the tracking pixels their newsletter tool added are not. Attachments are listed and download straight from browser memory.

How to use the MSG file viewer

  1. Click Choose a .msg or .eml file, or drag the file onto the drop area. The format is detected from the file's contents, so the extension does not have to be right.
  2. Read the header card: subject, From, To, Cc, and Date.
  3. Click any attachment button under the header to save that file. Each button shows the file name and size.
  4. Read the body in the frame below. HTML mail is displayed with its embedded images. Plain-text mail is shown as text.
  5. Expand Raw message headers to see the full transport headers when the file contains them.

What a .msg file looks like inside

A .msg file is a Compound File Binary container, the same "file system inside a file" used by old .doc and .xls files. It starts with the signature bytes D0 CF 11 E0 A1 B1 1A E1, is divided into fixed-size sectors (normally 512 bytes), and uses allocation tables to chain sectors into streams. Streams smaller than 4,096 bytes are packed into a separate mini stream. A directory tree names every storage (folder) and stream (file).

Outlook stores each MAPI property of the message as its own stream. The name encodes the property ID and type: __substg1.0_0037001F is property 0x0037 (the subject) as type 0x001F, a UTF-16 string. Type 0x001E is an 8-bit string and 0x0102 is binary data. Fixed-size values such as timestamps sit together in a stream called __properties_version1.0. Recipients and attachments get their own sub-storages, such as __attach_version1.0_#00000000.

The viewer reads these properties:

  • Subject (0x0037), sender name (0x0C1A), and sender address (0x5D01, or 0x0C1F).
  • Display To (0x0E04) and Display Cc (0x0E03). These are display strings, often names without addresses.
  • Plain body (0x1000), HTML body (0x1013), and transport headers (0x007D).
  • Date from the Date transport header, or else from the submit time (0x0039) or delivery time (0x0E06).
  • For each attachment: the data (0x3701), long or short file name (0x3707 or 0x3704), MIME type (0x370E), and content ID (0x3712).

An .eml file is different: it is plain text, with headers followed by a MIME body.

Worked example

A received invoice email, simplified to its key streams:

__substg1.0_0037001F                 Q3 invoice
__substg1.0_0C1A001F                 Maria Chen
__substg1.0_5D01001F                 maria.chen@example.com
__substg1.0_0E04001F                 Accounts Payable; Tom Reyes
__substg1.0_10130102                 <html>...<img src="cid:logo01">...
__attach_version1.0_#00000000/
    __substg1.0_3707001F             invoice-0931.pdf
    __substg1.0_37010102             (182 KB of PDF data)
__attach_version1.0_#00000001/
    __substg1.0_3707001F             logo.png
    __substg1.0_3712001F             logo01

The viewer shows the subject "Q3 invoice", From "Maria Chen <maria.chen@example.com>", and To "Accounts Payable; Tom Reyes". Two attachment buttons appear, invoice-0931.pdf and logo.png. Because the HTML refers to cid:logo01, the logo is also drawn inside the body.

Common problems and fixes

  • The To line has names but no email addresses. Cause: Outlook's display-To property stores names only. Fix: expand Raw message headers. If the file has them, the original To header lists the addresses.
  • Raw message headers says "(no transport headers in this file)". Cause: the message never passed through a mail server into this mailbox, as with drafts and many items saved from Sent Items. Fix: nothing is missing from the body. The date comes from the stored submit or delivery time instead.
  • An email that was attached to this email does not appear. Cause: Outlook stores an attached message as a nested storage, not a data stream, and the viewer only lists attachments that have a data stream. Fix: open the outer message in Outlook or a mail client and save the inner message as its own file.
  • The body says there is no readable body. Cause: the message carries only a compressed RTF body, which the viewer does not decode. Fix: ask the sender to resend it as HTML, or save it as .eml from a mail client.
  • "This doesn't look like a .msg or .eml email." Cause: the file is a whole mailbox, such as an Outlook .pst or an Outlook for Mac .olm, which use different formats. Fix: export individual messages from the mail app first.

Related tools

A whole exported mailbox opens in the MBOX viewer. Meeting invites saved from a message open in the ICS file viewer.

Questions this tool gets asked

Can I open a .msg file without Outlook?

Yes. A .msg file is a Microsoft compound document, and this page parses that format directly in your browser - sender, recipients, subject, date, body, and attachments - with no Outlook, no plugin, and no upload. Drop the file and read the email.

Is my email uploaded to view it?

No - never. Emails are among the most private files there are, which is exactly why this viewer runs entirely as JavaScript inside your tab. There is no upload endpoint on this site. Load the page, go offline, and it still opens your files.

Why don't remote images load?

By design. Images hosted on a sender's server are how tracking pixels work - loading them would both phone home and break this site's no-network promise. Images embedded inside the email itself are shown normally; remote ones are blocked by the viewer's sandbox.

Can I save the attachments?

Yes - every attachment found in the file is listed with its name and size, and each downloads straight out of your browser's memory. Nothing round-trips through a server.

Does it open .eml files too?

Yes. The .eml format (standard internet mail, used by Thunderbird, Apple Mail, and most export tools) is parsed alongside .msg - including multipart bodies, encoded headers, quoted-printable and base64 parts, and attachments.

What doesn't it handle yet?

Honestly: RTF-only message bodies (rare - most emails carry a plain-text or HTML body, which is shown), winmail.dat / TNEF wrappers. For .mbox mailbox archives use our MBOX viewer. Password-protected or corrupted compound files are reported as unreadable rather than guessed at. Email hello@filekiln.com if one of these matters to you.

How do I open a .msg file on a Mac?

The .msg format is Outlook-for-Windows' own container, which is why double-clicking one on a Mac gets you nothing - even Outlook for Mac stores mail differently. This page is the shortcut: it runs in the browser, so macOS, Windows, Linux, and ChromeOS all open the file the same way, with no install.

Related tools