Pull Up Receipts

About

File 01 · What this is Runs locally on your Mac

Pull Up Receipts turns a conversation from your Mac's Messages app into an FDA-style nutrition label — how many messages, who sent more, who replies faster, your most-used words and emoji, the longest streak. You pick a conversation, type the other person's name, and download the label as an image.

Everything happens on your device

There is no server. Your messages are read, counted, and drawn entirely inside your browser. You do not have to take that on faith — here are three ways to check, in increasing order of how convincing they are:

  1. Read the source: github.com/stunnercn/pullupreceipts.xyz.
  2. Open your browser's developer tools, switch to the Network tab, and generate a label. Nothing goes out.
  3. Generate one label, then turn off Wi-Fi and pick another conversation. It still works — the network was only ever used to load the app itself, never to send anything.

Questions

How each number on the receipt is worked out — every row, on both the one-on-one and the group label — has its own page: How the numbers work.

Why do I have to find chat.db myself? Because the alternative is worse. macOS protects the Messages folder, and an app that wanted to read it on its own would have to ask for Full Disk Access — permanent, sweeping permission to read everything on your machine. Handing over one file you chose is a much smaller thing to give.

Does this work on iPhone or Windows? No. It reads the Messages database that macOS keeps at ~/Library/Messages, which only exists on a Mac.

Why do I type the other person's name? Pull Up Receipts has no access to your contacts. The name on the label is whatever you type, which also means you can put whatever you like on it.

Is my database changed? No. chat.db is never modified — the app only ever reads the copy of the bytes your browser hands it.

Why did it fail on my database? Everything is held in browser memory, and a browser will not hand any page a single block bigger than about 2 GB — that is the hard ceiling, and it is the browser's limit rather than ours. Databases approaching it can also fail on a Mac with little free memory; closing other tabs helps.

Why don't my older messages show up? chat.db only goes back to the day your Mac started keeping it — usually when you set the machine up or first signed into Messages. It is your Mac's own record, not your whole iMessage history, so anything older than that is still sitting on your iPhone. To bring it down, turn on Messages in iCloud in two places: on the iPhone, Settings → your name → iCloud → Messages in iCloud, and on the Mac, Messages → Settings → iMessage → Enable Messages in iCloud. Leave it on Wi-Fi and power for a few hours, then load chat.db again. One catch: if Settings → Messages → Keep Messages on the iPhone is set to 30 Days or 1 Year, iOS has already deleted the older ones for good and nothing will bring them back.

Where do I report a bug? Open an issue on GitHub, or email liminalcoasts@gmail.com.

Not affiliated with Apple

Pull Up Receipts is not affiliated with, endorsed by, or sponsored by Apple Inc. iMessage, macOS, and Finder are trademarks of Apple Inc., used here only to describe what the app reads.

Source

Open source under the MIT license: github.com/stunnercn/pullupreceipts.xyz.

A personal, non-commercial project by Alex Yang.
Thank you