How-To

How to Export iMessage Conversations for Court Evidence

WhatsApp and Telegram both have a button that says "export chat." Apple's Messages app doesn't. Getting a real, complete iMessage record means going after the file the app actually stores everything in — chat.db — which sounds more technical than it needs to be. Here's the realistic path to it.

What chat.db actually is

chat.db (sometimes named sms.db, depending on iOS version) is a SQLite database — a small, self-contained file format used to store structured data — and it's where Apple's Messages app keeps every conversation: the message text, exact send timestamps, who sent it, and whether it was iMessage or SMS. On a Mac it normally lives at ~/Library/Messages/chat.db. On an iPhone, the same data exists on the device but isn't reachable directly — it only becomes accessible once the phone is backed up to a computer.

There's no Apple-provided "export this conversation" feature that hands you a clean text file the way WhatsApp or Telegram do. That's a real gap for anyone trying to preserve a conversation for a case, and it's the reason this deserves its own walkthrough rather than a single line in a general export guide.

Where to actually find the file

1.If the messages are already on a Mac

Press Command-Shift-G in Finder, type ~/Library/Messages, and press Return — chat.db is sitting right there. This only works if Messages in iCloud is turned on and synced, or if the conversation happened on that Mac directly. If the exchange only ever happened on an iPhone, this file won't have it and you'll need the backup route below.

2.From an iPhone backup (Mac or Windows)

Connect the iPhone to a computer and back it up locally — Finder on a current Mac, iTunes on Windows or an older Mac. That backup contains chat.db, but Apple buries it inside a folder of hashed, unlabeled filenames that aren't practical to search by hand. A backup-extraction tool built for this — iMazing is the one most people land on, available for both Mac and Windows — reads the backup and lets you pull out the Messages database (or export the conversation to PDF/text) without digging through raw backup files yourself. If the backup is password-protected, the tool will ask for that backup password before it can read anything.

3.Upload the file as-is

Don't open chat.db in another app, convert it, or retype anything out of it first — upload the file exactly as extracted. Verity reads the .db directly in your browser and pulls out the message text, real timestamps, and who sent what.

Why chat.db beats a screenshot

A screenshot shows whatever fits on one screen, in whatever order someone chose to capture it, and it's trivial to crop or stage. chat.db has none of that ambiguity — every message carries the timestamp Apple's own database stored at the moment it was sent or received, in full conversation order, with no manual step where content could be altered. Verity also separates real message text from tapbacks ("Loved an image") and system events (name changes, members added), rather than guessing at what a garbled row might have said — anything it can't confidently read is counted as skipped, not silently invented.

How this stays private

chat.db can run into the hundreds of megabytes for a long-running account, and it never gets uploaded anywhere to make this work. Verity reads the file entirely inside your browser using sql.js, a version of SQLite compiled to run client-side, so the parsing happens on your own machine. If you're using the free consumer flow, only the resulting parsed messages — the much smaller output — are held temporarily in your browser's session storage to hand off to the analysis page; the raw .db file itself is never transmitted anywhere. The same client-side approach is used in Verity's attorney portal.

This is general information, not legal advice. Verity is not a law firm, and requirements for authenticating a digital record vary by court — talk to an attorney about what your case specifically needs.

Already have a chat.db file?

Upload it and get a free health score in minutes — parsing happens in your browser, and the raw file never leaves your device.

Analyze your export →