Files to chronology

Turns an Outlook PST, or a bundle of emails and documents, into one chronology spreadsheet, with every item numbered and extracted. Files are read in your browser and never uploaded.

Drop a PST, a folder or files here
Emails (.pst, .eml, .msg), PDFs, Office files, photos and zips
⌘ O
Time zone
Email times are converted to this zone, daylight saving included. Document and photo times stored without a zone are read as this zone.
Sort emails by
Falls back to the other date, then start or created. Documents sort by their created date, then modified. Attachments stay with their email.
Doc ID prefix
Items run PST-000001, attachments PST-000001.0001. One run across every file.
Leave out inline images
Images embedded in the body, such as signature logos. Leaves them out of the spreadsheet and natives folder; email natives still contain them.
Email natives from PSTs
Each PST email as an .eml with its attachments, linked from the Native column. Loose .eml and .msg files are always kept as supplied.
Text files
The full text of each email, and of documents Parser can read, as a .txt linked from the spreadsheet.

Emails from a PST are rebuilt as .eml files, so they are not byte-identical to the original messages; every other file is kept exactly as supplied. Zips are opened and their contents listed; system files such as .DS_Store are left out. The package is assembled in the browser, so very large exports are limited by browser storage.

Output format

What the package contains, and what each column of the chronology means.

index.html
The chronology in your browser: search, filter by type, read each email’s body, preview PDFs and images, and open or copy the path to any native. It works offline from the extracted folder, and avoids the security prompt Excel shows when a link opens a file.
<name>_chronology.xlsx
Chronology, Summary and, where anything failed, Exceptions sheets.
natives/
Each PST email as PST-000002.eml. Every other file by Doc ID and original file name, exactly as supplied: attachments, documents and loose emails, for example DOC-000002.0001_report.pdf.
text/
The full text of each email, and of documents whose text Parser can read (Word, text and HTML files), with a header of its metadata. Included unless switched off.

“Spreadsheet only” is the same workbook without the Native and Text link columns.

PSTs and OSTs
Every item in every folder, with attachments and embedded emails.
.eml and .msg
Each is an email, with its attachments and embedded emails listed under it. The file itself is the native, unchanged.
Zips
Opened, and their contents read as if they were in a folder of that name. Zips inside zips are opened three levels deep. Password-protected entries are listed as exceptions.
Everything else
A document. Title, author and dates are read from PDFs, Word, Excel and PowerPoint files, OpenDocument files and photos (EXIF) where present.
Left out
System files that come along with a copied folder: .DS_Store, Thumbs.db, desktop.ini, __MACOSX and Office lock files (~$…). The Summary sheet counts them.
What’s inside
The plain-text and HTML bodies, inline images by content ID, every attachment, and embedded emails nested as attached messages. An embedded email also gets its own .eml under its Doc ID.
Headers
Where the PST stored the original internet headers (Received, Message-ID, routing), they are kept as they were. Otherwise headers are rebuilt from the sender, recipients, dates and subject. The X-Parser-Headers header in each file says which.
Bodies stored as RTF
Some Exchange mail has only an RTF body. Parser extracts its text, so those emails carry a plain-text body only, without the RTF formatting.
Fidelity
Rebuilt files are not byte-identical to the original messages, and their hashes will not match those from other forensic tools. The spreadsheet’s MD5 for emails is Parser’s own de-duplication hash, not a hash of the .eml.
Not exported
Calendar items, contacts, tasks and notes are listed in the spreadsheet but have no native.
Order
One chronology across every file. Emails sort by sent date, or received date if chosen; missing dates fall back to the other date, then start (calendar items), created and modified. Documents sort by the created date in their own metadata (for photos, when it was taken), then modified, then the file’s modified date. Undated items go last.
Families
Attachments sit directly under their email and take its date. Attachments of an embedded email point to that email in Parent ID.
Doc IDs
PST-000001 for each top-level item; PST-000001.0001 onwards for everything in its family. The prefix is PST for a single PST and DOC for anything else, unless you set your own.
Dates
Converted to the chosen time zone and written as Excel dates (dd/mm/yyyy hh:mm:ss). The zone is named in each date column’s header. Dates stored without a zone, such as photo capture times and some document metadata, are read as that zone.
File modified
The date the file system or zip gives a file. It changes when a file is copied by some tools, so it is used only when a document has no date of its own, and Date basis says so.
Doc ID, Parent ID, Family ID
Control numbers for the row, its immediate parent and its family.
Type
Email, Document, Attachment, Embedded email, Calendar, Meeting request, Contact, Task, Note, Delivery report or Item.
Date, Date basis
The sort date and which field it came from: Sent, Received, Created, Taken (EXIF), Modified or File modified. Attachments show “(family)”.
From, To, CC, BCC
Name and SMTP address where known. Exchange-encoded IMCEA addresses are decoded; legacy Exchange DNs are left out.
Author
For documents, the author in the file’s own metadata.
Subject or title, File name, File type, Size
The email subject, or the document’s title from its metadata. Size is the message size for PST emails and the file size otherwise, in bytes.
Attachments, Attachment names
Count and names of the item’s direct attachments.
Folder
Where the item came from: the folder within the PST, or the file’s folder within what you chose, with zips shown as folders.
Sent, Received, Created, Modified
The underlying dates, in the chosen zone.
Message-ID, Conversation
Internet Message-ID and conversation topic, for threading.
Inline image
“Yes” where an image is referenced from the email body by content ID.
MD5
Files, attachments and loose emails: hash of the file bytes. Emails from a PST: hash of sender, recipients, subject, sent date and body, for de-duplication, not comparable with hashes from other review platforms.
Native, Text
Relative links into the package: the native file and the text file.
Body
The first 32,000 characters, the most an Excel cell holds. The text file has the rest.

Privacy

Parser is built so that the files you give it stay on your computer.

Where your files go

Parser reads your files inside this browser tab, in a Web Worker. No file, email or attachment is sent to a server. The spreadsheet and package are assembled in the same tab and saved through your browser’s normal download.

What the page stores

Your browser keeps two small preferences for this site: the theme, and the options you last chose. No content from any file is stored. Exports listed under “This session” are held in memory and cleared when you close or reload the tab.

Network requests

The page loads only its own code, and uses your computer’s system font. Nothing else is requested, before or while a file is processed.

Questions

Write to hello@libram.ai.

Terms

Parser is an early release, provided as is.

Check the output against the source before relying on it in a matter. Items that cannot be read are listed on the Exceptions sheet rather than left out silently.

Full terms are to follow. Write to hello@libram.ai in the meantime.