Pull Up Receipts

How the numbers work

File 04 · How the numbers work Updated 07/28/26

Every value on a receipt is counted on your device from the messages you picked. This page says what each one measures. The receipt prints them in the same order they appear below, so you can read the two side by side.

What counts as a message

Tapbacks and reactions are never counted as messages. Photos, files and links are. In a group chat, a message the database can't attribute to anybody still counts toward the chat's totals, but it can't earn a place on the leaderboard or an award.

On every receipt

SINCE
The month and year of the oldest message in your Mac's copy of the conversation. Not when you met, and not necessarily your whole history — see About for why older messages can be missing.
MESSAGES
Every message in the conversation, both directions, counted together. The boxed TOTAL at the bottom of the receipt is the same number.
DAYS TALKED
How many separate calendar days had at least one message on them. Two hundred messages in one day is one day.
LONGEST STREAK
The longest run of consecutive days with no gap. A single quiet day resets it.
PEAK HOUR
The hour of the day holding more messages than any other, in your Mac's local time, counted across the whole conversation.
AVG CONVO
How long a typical back-and-forth runs. A conversation is treated as over once nobody has said anything for 3 hours, and this averages the length of all of them. A message nobody answered is a conversation zero minutes long, and it averages in like any other, which pulls the number down.
TOP WORD
The most-used word in the conversation, counting both people together — not one word each. Very common English filler ("the", "and", "just", "lol" and about eighty more) is skipped, along with single letters, so what surfaces is closer to what you actually talk about. Group receipts also print a per-person version under each name; that one is the ult, and it works differently.
TOP EMOJI
The three most-used emoji in the conversation, both people together, most-used first.
The barcode
Decorative. Its digits come from the message total so that two receipts don't print the same number. They don't encode anything.

One-on-one receipts

Texts sent
What portion of all the messages each of you sent. The MESSAGE SHARE bar higher up the receipt and this row are the same number.
Words
What portion of all the words typed came from each of you. Only letters make a word, so numbers and emoji don't add to anyone's total.
Avg reply
How many minutes each of you takes to answer the other, on average. It only counts as a reply if it lands within 2 hours of the message it answers; overnight gaps and week-long silences would otherwise swamp the average and make everyone look equally slow. A dash means nothing was close enough together to measure.
Dry replies
The share of each person's messages that are two words or shorter.
Double texts
How many times each of you sent a message that followed one of your own with no reply in between. A raw count, not a percentage, and there's no time limit on it: a message sent the next morning after your own still counts. The group receipt's DOUBLE TEXTER award is stricter — see below.
Texts first
Of all the times the conversation started up from silence, the share each of you started. A conversation counts as new when it begins after 6 hours of quiet, so answering an hour later continues the conversation instead of restarting it.
Left on read
How many times a conversation ended on the other person's message. Your column counts the conversations they said the last thing in — the ones you never came back to. Same 6-hour rule.

Group receipts

MEMBERS
The size of the group's current roster, taken from the chat itself rather than from who spoke, so people who never say anything are counted. Two caveats: somebody who has left the group isn't counted even though their messages remain, and anybody in the roster under two handles — a phone number and an email — is counted twice.
WHO DID THE TALKING
Everyone who sent at least one message, ranked by how many. The percentage is their share of the whole chat's messages; the bar's length is relative to the top talker rather than to 100%. A share that rounds to nothing prints <1% instead of 0%. Your own row competes on volume like every other. Handles you gave the same name to on the cast screen are merged into one person.
ult
The phrase somebody overuses compared with everybody else in the chat, printed under their bar with how many times they've said it. It isn't simply their most frequent phrase: raw frequency hands everyone in the group the same words, so a phrase scores higher the less the rest of the chat says it. Phrases run up to five words and are favoured over single words, since a repeated phrase is more distinctive than a repeated word. A one-word ult needs 5 uses to qualify, a two-word one 4, and anything longer 3 — longer phrases clear a lower bar because they simply recur less often.

Each award goes to one person, and only prints when at least two people qualify for it, because an award is a comparison. Qualifying takes at least 10 messages in the chat. Volume itself doesn't win anything: somebody quiet who clears that floor can beat the loudest member in the group.

FASTEST
The shortest average time to jump in after somebody else has spoken. In a group, replying means answering anyone, not one particular person. Counts only within 2 hours, and needs at least 5 measured replies.
NOVELIST
The highest average number of words per message.
DOUBLE TEXTER
The highest share of a person's messages that followed their own. Unlike the one-on-one row, this only counts when the two are within 2 hours of each other; without that limit it drifts to whoever talks in the emptiest room.
DRY
The highest share of messages that are two words or shorter.
(ATTACHMENT) ISSUES
The highest share of messages carrying a link or an attachment. Counted per message, so a pasted link that arrives with a preview image is one share, not two.

Questions

Why isn't my top word one I say constantly? TOP WORD counts both people together and skips very common English filler, so a word only surfaces by beating everything else in the whole conversation. Group receipts print a per-person version — the ult under each name — and that one is deliberately scored on what makes somebody different from the group rather than on what they say most.

Why does my reply time look wrong? Only replies inside a 2-hour window count. If you and somebody mostly text a few times a day, most of your real answers fall outside it and never enter the average — what's left is the fast bursts.

Why do group numbers differ from one-on-one ones? Because some measures can't mean the same thing in a room where anyone can answer anyone. A reply is counted against whoever spoke last rather than one particular person. Double texts are capped at 2 hours in a group and uncapped one-on-one. And awards need 10 messages and two contenders, so a small or lopsided group prints fewer of them, or none.

For everything that isn't a number on the receipt — finding chat.db, missing older messages, reporting a bug — see About.

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