email-archive-formats

Email archive formats: field notes on PST, OST, OLM, MBOX, EML and MSG

Notes collected while implementing a parser for each of these six formats (for Mailward, a browser-based archive viewer — disclosure: I build it). Most of what is written about these formats online is converter marketing; this file is the technical part, including the parts that are inconvenient.

Corrections welcome — open an issue.

The one-line version of each

Format What it actually is Written by Readable without the original app?
PST Single-file B-tree database ([MS-PST]) Outlook for Windows Yes, with a real parser
OST Same container as PST, used as an offline cache Outlook, automatically Yes — the account lock lives in Outlook, not the file
OLM ZIP of per-message XML Outlook for Mac (File → Export) Yes — unzip and parse the XML
MBOX Plain text, one folder of mail, messages split on From lines Thunderbird, Apple Mail, Google Takeout Yes, trivially
EML One RFC 5322 message with MIME body Nearly every client Yes, it is the standard
MSG CFBF/OLE2 compound file of typed MAPI properties Outlook for Windows (drag out / Save As) Yes, with a CFBF parser

PST: a database, not a mail folder

OST: the same format, locked by the application

OLM: a ZIP of XML that only one app writes

The least-documented format of the five, so in the most detail:

MBOX: deceptively simple text

EML: the format everything else converts to

MSG: one message in a CFBF container

Appendix: parsing archives in a browser

Notes from making the PST parser work on multi-GB files inside a Web Worker, on top of pst-extractor:

And from doing the same for .msg (CFBF) in a Web Worker, on top of @kenjiuno/msgreader:

Measured on public fixtures (2026-09-10)

Numbers from walking the public PST/OST test files with pst-extractor 1.12.0 — the two Outlook.com OSTs in pst-extractor’s repository, java-libpst’s example-2013.ost, and enron.pst. Details, and the maintainer’s independent reproduction, are in Anonify2.0 #90.

Hands-on

Further reading

Longer write-ups of everything above, kept current:


Licensed CC BY 4.0 — reuse freely with attribution.