Story of Us read & kept on your own device

Your iMessage stats, finally visible.

iPhone has no built-in per-conversation message count. The honest way to your iMessage stats is a Mac: the file ~/Library/Messages/chat.db holds every message that Mac has, and one SQLite query groups them per person. For WhatsApp or Messenger, Story of Us’s free on-device counter counts your chat export in seconds. No app can count iMessage history straight from an iPhone.

Somewhere between “we never stop texting” and “we should probably check,” every couple wonders: how many iMessages have we actually sent each other? Here is the honest answer nobody in the forum threads gives you — your iPhone cannot show you that number, but it does exist. It lives on your Mac.

Make our iMessage keepsake one-time · no subscription · your export stays on your device

Why your iPhone can’t tell you

There is no message count anywhere on iPhone — not inside the Messages conversation, not under Settings, not under Screen Time (which shows how long you spend in apps, not who you text). Apple simply doesn’t expose the number. And any iPhone app that promises to count your iMessages for you is bluffing: iOS keeps each app’s data to itself, so no third-party app can reach into your message history. The number exists only where iMessage actually stores its archive — on the Mac signed into the same account.

Route 1: read your stats off your Mac’s chat.db

The Mac that holds your Messages history keeps it all in one SQLite database at ~/Library/Messages/chat.db — every iMessage (and SMS, if that Mac syncs them) the Mac has. To count it:

  1. Quit the Messages app on that Mac first — the database is locked while it runs, so querying it open risks a stale or incomplete read.
  2. Open Finder, press Cmd+Shift+G, paste ~/Library/Messages, and copy chat.db somewhere you can work on it — your Desktop, for instance.
  3. Open Terminal and run one query against the copy: SELECT handle.id, COUNT(*) AS total FROM message LEFT JOIN handle ON message.handle_id = handle.ROWID GROUP BY handle.id ORDER BY total DESC; — the contact with the most messages comes first, and your number is the total beside their address or phone number.

Two honest caveats. If Messages on that Mac is set to keep history for 30 days or one year instead of Forever (Messages → Settings → General), older messages were already deleted from the file before you opened it — the stats only reach as far back as the database does. And macOS may ask for Full Disk Access before anything can read that folder; that’s the standard prompt in System Settings → Privacy & Security, and the file never leaves your machine. The full iMessage export walkthrough →

Route 2: the free counter, for WhatsApp and Messenger

Not all of your texting lives in iMessage — and for WhatsApp and Messenger there’s no Mac detour needed. Export the chat from your phone, drop the file into the free counter, and get your exact total in seconds. It reads WhatsApp .txt or .zip exports and Messenger message_1.json files entirely on your device — nothing uploaded. One clear boundary: the counter does not read iMessage or SMS, so for your iPhone texts, route 1 is the honest way.

What to do with your number

A count is a fun screenshot to send each other. The story behind it is the part worth keeping: the pet name you didn’t notice, the year you talked the most, the hour you’re always up texting each other. Story of Us reads the same export — chat.db for iMessage, a .txt/.zip for WhatsApp, a .json for Messenger — and builds a short keepsake from the patterns inside it, right in your browser, in about a minute. Then you can download it as a PDF to keep or print.

What you get

A short, private keepsake built only from your own history — pet names and inside jokes it noticed on its own, your year-by-year rhythm, your busiest hour, the words you reach for without thinking. You read it on your screen, then you can download it as a PDF to keep or print yourself, no subscription and nothing shipped. It's ready in about a minute.

Privacy, plainly

The export itself never leaves your device — it's read right there in your browser, the same way a photo opens on your computer. To write the handful of captions that need real words (your busiest year, your first exchange, the phrase you didn't know you repeated), we send a much smaller slice to our server: your most-used words and phrases, counts and rhythms (who texts more, your streaks, your busiest hour), and a very small handful of sample messages — your first few texts and your most recent. Not the export file, not your full conversation. Read exactly what we send →

Once you know, do something with it

The couples who count usually do one of two things with the number: they print the record, or they keep the story. For the record, there’s how to print an iMessage conversation and the book routes — iMessage chat book options. For the story, that’s the keepsake.

Make our iMessage keepsake one-time · no subscription · your export stays on your device

The keepsake itself: iMessage chat keepsake →

Start from the export itself: iMessage export guide, step by step →

What is a chat keepsake, exactly? The full explanation →

Got WhatsApp or Messenger chats to count too? Free on-device counter →

Beyond iMessage: Turn any text messages into a book →

Sources

Last verified: September 28, 2026

Questions

Can I see my iMessage stats on my iPhone?

No — iOS has no built-in per-conversation message count, and iPhone apps cannot read each other’s message history, so no app can count your iMessages straight from the phone. Your stats live on the Mac signed into the same iMessage account, in the file ~/Library/Messages/chat.db.

What file holds my iMessage history?

chat.db — the single SQLite database of every Messages conversation on that Mac, at ~/Library/Messages. Copy it off with the Messages app quit, then query the message table grouped by contact for exact per-person totals.

What is the SQL query to count iMessages per person?

SELECT handle.id, COUNT(*) AS total FROM message LEFT JOIN handle ON message.handle_id = handle.ROWID GROUP BY handle.id ORDER BY total DESC; Run it against a copy of chat.db with the Messages app quit, and the contact with the most messages comes first.

Can Story of Us count my iMessage stats directly?

The free counter reads WhatsApp (.txt or .zip) and Messenger (message_1.json) exports only — not iMessage or SMS. For your iMessage stats, the Mac route above is the honest way; the iMessage keepsake then builds its story from the same chat.db file, read in your browser and never uploaded.

Will the count include deleted messages?

No — chat.db reflects what is currently in Messages on that Mac, so anything deleted beforehand is not there to count. If Messages is set to keep history for 30 days or one year instead of Forever, older messages age out of the file automatically.

Is it safe to let a website read my chat.db?

The file is read in your browser, the same way a document opens on your computer — the export itself is never uploaded. macOS’s Full Disk Access prompt is the standard permission for reading that folder; grant it to your browser, then the file stays local.