OpenPST parsed on your device · mail never uploads

That .pst or .ost archive
opens right here.

No Outlook, no install, no upload. A whole Outlook mailbox opens in this tab — searchable, filed by folder, attachments and all — with tracking pixels blocked. Single .eml, .msg, .mbox and winmail.dat files open the same way.

Drop .eml, .msg, .mbox, .pst, .ost or winmail.dat files anywhere on this page — or pick them. A whole Gmail Takeout mbox or an Outlook archive becomes a browsable list.

Why the mailroom exists: after my father-in-law retired, his old firm sent him a farewell USB stick with fifteen years of his correspondence on it — hundreds of .msg files, each one a letter he'd written or received, none of which would open on his home laptop because Outlook costs money he saw no reason to spend. The "free MSG viewers" we found wanted installs from companies with names like alphabet soup, and the online ones wanted his letters uploaded. His letters. To read his own mail. The format underneath is just a container — documented, parseable, thirty years old — so I wrote the parser and put it on a page. He read the whole stick in an afternoon and printed four of them for a drawer.

— the four in the drawer are from people who are gone now. worth the parser on their own

What the counter handles

three formats, one desk

  1. .eml — single messages in the internet's native format. The parser reads the real thing: folded headers, encoded subjects in any language, multipart bodies, base64, quoted-printable, the lot.
  2. .msg — Outlook's own container, a binary mini-filesystem. This page walks it sector by sector, no Outlook anywhere in the building.
  3. .mbox — a whole mailbox in a file, which is what Google Takeout gives you for Gmail. It opens as a list; click through your old mail like it never left.
  4. winmail.dat — the mystery attachment Outlook staples to mail when it assumes the world runs Outlook too. Inside is the real message and its real attachments; this desk unpacks the wrapper and hands them over.
  5. .pst and .ost — Outlook's whole-mailbox archive and its offline cache: the same database-in-a-file underneath, with two B-trees, a light built-in cipher, and every message stored as rows of properties. The desk walks the trees directly, undoes the encryption, and lays the messages out with a clickable folder rack — search works across all of them.

The tracking-pixel policy

the quiet feature that earns its keep

Commercial email watches you read it: images load from the sender's servers, and every load files a report — opened, when, roughly where. This viewer blocks remote images by default and shows the count, which doubles as a little x-ray of how watched the message was. One press loads them if you want the pictures. Images that travel inside the mail file — real attachments, inline photos — show normally, because they report to no one. Reading correspondence shouldn't be a two-way mirror, especially correspondence old enough to live in a file.

Honest gaps in the pigeonholes

what this desk won't pretend to do

Asked at the counter window

frequent, in the proper sense

Court asked me to submit an email as PDF. Is this acceptable?

The print output includes the headers (from, to, date, subject) with the body, which is what's usually wanted. For anything evidentiary, keep the original .eml/.msg file too — the file is the record; the PDF is the readable copy.

My .eml shows gibberish where names should be.

That's usually a message that lied about its character set. The parser tries the declared one, then sensible fallbacks. If something still looks wrong, the counter would like to see the header block (not the body) — charset bugs are collector's items here.

Can I search across an mbox?

Yes, properly: the search box above the list looks through subjects, senders and message bodies — type any phrase you remember writing and the list narrows to the messages that contain it. Within an opened message, your browser's find-in-page still works for jumping to the exact line.

Can it really open a .pst or .ost without Outlook?

Yes — the archive is a database in a file, and the desk walks its two B-trees, undoes the built-in cipher (both the permute and cyclic kinds), and reads each message's property rows directly. A .ost, Outlook's offline cache, is the same format inside and opens the same way. Messages arrive as one searchable list, each labelled with the folder it was filed in ("Inbox / Projects") — and a clickable folder rack above the list shows every folder with its count, one press to see just that pigeonhole, with the search box narrowing inside it. Unicode archives from Outlook 2003 to 2010 open; the Outlook 2013+ format (4 KB pages, compressed blocks) and ANSI-era files are refused with the reason named. And because it's your correspondence in bulk, the airplane-mode test matters most here of all: nothing leaves the tab.

Are winmail.dat files openable?

Yes. That file is TNEF — Outlook's habit of wrapping the real message, formatting and all its attachments into one opaque blob when it writes to a non-Outlook address. Drop it here and the desk reads the attribute stream directly: the message text comes out, the recipients come out of TNEF's own recipient table with their real addresses, and so do the attachments people thought they'd lost.

Why did my renamed .txt open as mail?

Because it genuinely was mail — the desk sniffs file signatures rather than trusting extensions in either direction. A .msg renamed .eml is caught the same way, and handled as what it is.

Air letters

longer reads, par avion

What lives inside an .eml Folded headers, boundary fences and base64 cargo — a guided tour of mail's native format. The .msg file is a tiny filesystem Outlook's compound file format: sectors, FAT chains and a directory tree, in a single email. Your email watches you read it Tracking pixels: how open-tracking works, who uses it, and what blocking actually blocks.

Sorting-office record

what changed, newest first

v2.0
the cache joins the archive: .ost files — Outlook's offline cache, the same database format as a .pst underneath — now open just like archives do, folder rack and all. The cyclic cipher those files often use is decoded (which also retired the last .pst refusal), so both of Outlook's built-in ciphers are handled. The 2013-era 4 KB-page variant, with its deflate-compressed blocks, is still refused honestly by name.
v1.9
the pigeonhole rack: archives now get a clickable folder list above the messages — every folder with its count, indented the way it was nested, one press to see just that folder and another to let it go. The search box narrows inside the chosen pigeonhole, and "all mail" is always one click away.
v1.8
the filing comes back: .pst messages now carry their folder — the desk reads each folder's name from its own property rows and chains them into a path, so a message shows "filed: Inbox / Projects" in the reading pane and its folder in the list. The search box filters by folder name as a side effect, which is most of what a folder tree is for.
v1.7
the archive bench opens: Unicode .pst files (Outlook 2003 onwards) now parse in full — the node and block B-trees walked page by page, the built-in "permute" cipher undone, message properties read from their heaps, big bodies reassembled from block trees, attachments lifted out of subnodes. Messages land as one flat searchable list. ANSI archives, .ost caches and the rare cyclic cipher are refused by name; unreadable messages are skipped with an honest count.
v1.6
the last two pigeonholes fill: a message forwarded inside a .msg (Outlook nests them as tiny filesystems within the filesystem) now comes out as a proper .eml — saveable, and openable by dropping it straight back on this page, nested attachments included. And winmail.dat recipients are read from TNEF's own recipient table, real addresses and all, instead of a bland display string.
v1.5
formatted bodies come home: when a .msg or winmail.dat carries its message as "encapsulated HTML" inside compressed RTF — Outlook's usual arrangement — the reader now unpicks the encapsulation and shows the original HTML, bold text and all, instead of a flattened plain-text rendering. Genuinely-plain RTF still reduces to clean text, and smart quotes and dashes in either path now come out as themselves.
v1.4
winmail.dat opens: a hand-written TNEF reader walks Outlook's attribute stream and the MAPI property lists inside it — message text (including compressed-RTF bodies), HTML where present, and every attachment with its proper long filename and type. The old honest refusal is retired because the honest yes arrived.
v1.3
the search and the slices: the box above the list now searches full text — subjects, senders and message bodies, as you type. And mailboxes are read slice by slice at their "From " fences rather than loaded whole, so a big Takeout archive streams through memory instead of occupying it, with an honest percentage on the sorting line.
v1.2
the back room opens: parsing moved to a background thread, so a large Takeout mbox sorts while the page stays usable — messages appear in the list in batches as they're read, with a little "sorting…" count on the desk. Browsers without workers (or plain file:// viewing) fall back to the old single-thread path automatically.
v1.1
the counter learns more Outlook: compressed-RTF bodies now decompress and read (the commonest "why is my .msg empty"), dates come from the message's own binary properties, recipients resolve to real names and addresses, attachments keep their long filenames, declared types and inline images. Accented and non-Latin text in 8-bit messages now survives intact. The message list gained a filter box; printing captures the whole message rather than the first screenful; .pst/.ost and winmail.dat are refused by signature with an honest note.
v1.0
counter opens: hand-written MIME parser (folded headers, encoded words, multipart, QP/base64, RFC 2231 names), compound-file .msg reader (FAT, ministream, property streams, attachments), mbox splitting with escaping handled, inline cid images, remote-image blocking with counts, attachment saves, print-to-PDF layout, signature-based format detection, offline PWA.