Skip to content
LegacyFile
← Learn

How to Convert MBOX to CSV (Without Thunderbird)

By LegacyFile ·

You have an .mbox file — from Google Takeout, a Thunderbird profile, an Apple Mail export, or a departed employee's archived mailbox — and you need to know what's in it: how many messages, from whom, when, with which attachments. Importing the whole thing into a mail client just to find out is slow and heavy. Here's the faster way: turn the mailbox into a CSV index you can sort and filter in Excel or Google Sheets.

First, get your .mbox file

If you already have one, skip ahead. If you're starting from Gmail:

  1. Go to takeout.google.com, click Deselect all, then check only Mail.
  2. Optionally click "All Mail data included" to narrow the export to specific labels — otherwise you get everything, spam and trash included.
  3. Export, wait for the email from Google, and download the archive. Inside the .zip you'll find one or more .mbox files (typically All mail Including Spam and Trash.mbox).

Thunderbird users: your folders already are mbox files, sitting extension-less in your profile directory (an add-on like ImportExportTools NG exports them cleanly). Apple Mail: select a mailbox and use Mailbox → Export Mailbox….

Why you can't just open .mbox in Excel

An MBOX file isn't rows and columns — it's every raw message in the folder concatenated together, each starting with a From separator line, followed by headers, MIME part boundaries, and base64-encoded attachments. Renaming it to .csv just dumps that wall of text into column A. And the parts you actually want are booby-trapped for naive scripts: header lines fold across multiple physical lines, quoted >From lines inside bodies look almost like message boundaries, and international subjects are encoded as =?UTF-8?B?...?= gibberish. (For a tour of what's inside the format, see What is an MBOX file?)

Convert MBOX to CSV in your browser

The free MBOX to CSV converter on LegacyFile handles all of that:

  1. Drop your .mbox file into the converter (.mbx and .txt extensions work too). Parsing happens entirely on your device — your email is never uploaded anywhere, which matters more for a mailbox than for almost any other file you own.
  2. It splits the mailbox on real From_ separators, treating quoted >From body lines as the body text they are instead of falsely starting a new message there.
  3. It decodes the headers — folded lines are rejoined, and RFC 2047 encoded-words in subjects and names are decoded from both their base64 (?B?) and quoted-printable (?Q?) forms, so you see "Résumé adjunto 🎉" instead of the raw encoding.
  4. Check the summary — total messages, date range, unique senders, and how many messages carry attachments — then preview the full index free.
  5. Export CSV, XLSX, or JSON. The spreadsheet opens directly in Excel, Google Sheets, or Numbers.

What ends up in each column

One row per message:

| Column | What it holds | | ------------------------------ | ---------------------------------------------------------------------- | | Date | The Date header, normalized to YYYY-MM-DD HH:MM (UTC) when it parses | | From / To / Cc | Sender and recipients, with encoded names decoded | | Subject | Decoded subject line | | Message-ID | The unique ID reply chains and dedupe scripts key on | | Attachments / Attachment Names | Count of attachment parts, and their filename= values | | Size (KB) | Size of each raw message block inside the mailbox |

Note what's not there: message bodies. This is deliberate — the output is an index of the mailbox, not a full export. Bodies are multi-part MIME soup (HTML plus base64 attachments) that would make the CSV unusable in a spreadsheet, and they stay safely in your .mbox file. The index is the thing a spreadsheet is actually good at: sort by sender to see who fills your archive, filter a date range for a records request, or search attachment names for that one invoice.

When something looks off

The converter never fails silently. An unparseable date (some ancient mailers wrote whatever they liked in the Date header) is kept as raw text and flagged in a warnings list; a subject in a character set the converter doesn't decode (KOI8-R, say) passes through as-is with a warning instead of being mangled into mojibake. If the file has no From_ separators at all, you'll get a clear error — a single-message .eml file or an Outlook .pst archive is a different format, not a broken mbox.