Guides / 12 min read / November 7, 2026

Portraitor vs Unpack My Chat: the rule behind a number

Unpack My Chat publishes the rule behind every number it reports. Portraitor publishes four pages and none of them defines a count. One axis, both sides.

An illustration for Portraitor vs Unpack My Chat: the rule behind a number, showing two chat bubbles from different senders with the gap between them marked off by a dashed measure, beside one rule sheet carrying written lines and one empty sheet drawn in a broken outline.

Unpack My Chat publishes a methodology page that defines its numbers, down to the exact sixty minute rule that decides when a gap counts as a reply. Portraitor publishes four pages and none of them defines a count. If you want a figure you can recompute from your own export, that is the one real difference between these two, and Unpack My Chat is ahead on it.

Both products read an exported conversation and hand back something about it. Only one of them tells you how its numbers were produced. This page follows that single difference, because it decides what you can actually do with the result once you have paid for it.

Sixty minutes and a sender change, a rule you can check by hand

Unpack My Chat’s methodology page carries a section titled “The exact one-hour conversation rule”, and states it in full: “A new conversation session starts when the gap from the previous parsed message is more than 60 minutes. If the next message arrives within 60 minutes and the sender changes, that gap contributes to the new sender’s reply-time statistics. Consecutive messages from the same sender are counted separately as same-sender runs rather than replies.”

That is three separate decisions written down in one place: where one conversation ends and the next begins, what makes a gap count as a reply, and what happens to several messages in a row from the same person. The streak and silence figures are defined the same way. “A messaging streak counts consecutive calendar days with at least one parsed message. The longest silence is the largest timestamp gap between parsed messages in the export.”

The point of writing it down is that you hold the export. With the rule in front of you, you can open the file, find two messages, and work out what the tool should have said about them. The page puts its own case in one line: “Every dramatic-looking result should have a boring, explainable calculation behind it.” It describes the method as “Rules, not mind-reading”, and says statistics “are derived from timestamps, sender changes, text matches and explicit markers”.

It is not buried in a document nobody opens, either. The same rule is summarised on the Unpack My Chat home page under the heading “How the numbers are actually counted”, which is an unusual thing to put on a sales page.

Both tools report reply speed and only one defines it

Portraitor’s home page lists four lenses it reads a conversation through, and one of them, change over time, includes reply speed. The page describes that item as “Reply speed by topic, and whether silence is cooling off, avoidance or pressure”. So a Portraitor portrait does report on reply timing.

None of the four pages Portraitor publishes says what counts as a reply. Not how long a gap can be before it stops being one, not what happens to a run of messages from one person, not whether offline hours are separated out. I read all four today looking for it, and it is not there.

Unpack My Chat’s FAQ anticipates exactly this question. Asked “Why can reply-time numbers differ from another analyzer?”, it answers: “Different tools use different session thresholds and definitions. Unpack My Chat excludes very long offline gaps from ordinary reply timing and requires a sender change for a reply.”

That is the whole axis in one exchange. With Unpack My Chat you can tell which threshold produced your number, so a surprising figure can be checked. With Portraitor you cannot, from anything it has published. On this axis Unpack My Chat is better, and nothing further down this page cancels that. If reply timing is the thing you care about, we have written about what reply speed and turn taking can and cannot show.

Portraitor publishes four pages and none is a methodology page

Portraitor publishes a home page and three dated documents: the privacy policy, the terms of service and the data rights page, all three at version 1.3, last updated 30 September 2026. Those three are the only policy documents the home page links to. The word methodology appears on none of the four.

The home page does describe the shape of its output, lens by lens, under the label “How it is reported”. For relationship context that reads: “One label with a confidence score and a short justification, drawn from topics, terms of address and shared context, alongside an approximate positive / neutral / negative split of the whole conversation.” That tells you what a section of the report will look like. It does not tell you what was counted to produce it.

A gap in a company’s published pages is a finding, not permission to fill it in. There is no Portraitor counting rule to quote in this article, so none is quoted, and none is invented. If you want a rule you can hold a number against, the honest answer today is that Portraitor does not publish one.

That limit runs through the category, not just these two products, which is why we keep a page on what a chat analysis cannot tell you.

What a reading commits to instead of a count

Portraitor’s own copy points away from counting at the exact place a reader would expect a number. On the Big Five lens, the home page says each of the five traits is “reported as a lean, never as a score out of ten”. The sample report on the same page says its “interpretations are probabilistic”. The privacy policy, describing what the analysis produces, says the inferences come “each with an estimate of confidence”, and that the analysis also estimates the language of the conversation.

That is a different kind of claim from a tally, and it is the architecture claim worth making here: a portrait is a reading of the text rather than a count of it, so for the part carrying the value there is no arithmetic underneath to publish. The figures the sample report does show, a confidence of 85% and an approximate split of positive 55 to 65%, are presented as estimates, and the pages do not say how either is arrived at. Consistent, and also less checkable than a sixty minute threshold.

What Portraitor does commit to in writing is narrower and testable. Names, numbers, emails and links are masked on your device, and the home page states that only the masked text is sent. The privacy policy says conversation text is “never written to our database, our backups or our logs”, that a very large conversation is held in a temporary file that is consumed and deleted once the request is assembled, and that an upload abandoned part way “becomes unreadable after fifteen minutes”. The same policy states the limit on all of that: the analysis provider “does retain submitted content for a limited period in order to monitor misuse of its own service, and we are unable to disable that retention”. The home page prices the product at $10 for one portrait with no account and no renewal, or $19 a month for ten, and we set out what a chat analysis costs across the market.

One more difference belongs here, in its place rather than as the spine of this page. Unpack My Chat’s privacy page says the browser reads the file locally, that ZIP exports are opened on the device and the chat text is passed to a local Web Worker, and that the report is calculated in that browser session. Portraitor sends masked text off the device instead. That trade is a page of its own, and we made it one in the comparison with WhatsAnalyze. Our own side of it is set out on the Portraitor home page.

The conversation is split into sections before anything is counted

There is a second place where a counting rule would help, and it is one Portraitor raises itself. The privacy policy says: “A long conversation is analysed in sections, each sent separately in anonymised form, and the results are combined into one portrait.” The same page says a very large conversation arrives in parts.

So any figure describing a whole conversation is assembled from pieces that were read separately. How the combining works, and what it does to a number that is meant to span the full history, is not stated on any of the four pages. We are naming the gap rather than guessing at what fills it.

Unpack My Chat publishes its joining rule for the equivalent problem. When you add older exports, the methodology page says messages “are compared by timestamp, sender and exact message text”, overlapping snapshots are deduplicated while repeated messages inside one source are kept by occurrence count, and “The merged timeline is then sorted chronologically before analysis.”

Their size statements differ in kind too. Unpack My Chat says the analyzer “does not impose a 10,000-message or 100-day ceiling”, that its test suite parses a 120,000-message fixture spanning more than 1,000 days, and it labels that “an engineering stress test, not a promise that every phone or browser can process unlimited file sizes”. Its FAQ puts the file limits at 50 MB for a TXT export and 150 MB for a ZIP. Portraitor’s home page says “There’s no hard limit” and advises keeping a conversation between 100,000 and 200,000 characters for the fastest result. One is a parser limit, the other is guidance about speed, and we cover what happens when you analyse only part of a chat separately.

What neither set of published pages settled for me

A published rule is not accuracy. Knowing the sixty minute threshold tells you what was computed, not whether the result describes the relationship. Unpack My Chat says as much: claims of that sort “require evidence the exported timestamps and text counts cannot provide reliably”, and its methodology page warns that “Missing export history, ambiguous dates and unsupported message formats can affect the result”. A rule makes a number auditable, not true, and it is still worth more than no rule at all.

Both products decline the same ground, in their own words. Unpack My Chat’s FAQ says “Message statistics cannot reliably prove love, cheating, compatibility or another person’s intentions” and that it “reports measurable patterns and leaves interpretation to you”; its methodology page says it does not claim to detect cheating, calculate relationship compatibility or infer a breakup probability from message statistics. Portraitor’s sample report says its interpretations are probabilistic. Neither one is offering a verdict, which is also why a description can feel accurate without being evidence is worth understanding before you read either report.

They also do not always compete. Unpack My Chat accepts WhatsApp ZIP or TXT exports only, does not connect to a WhatsApp account, does not export the chat on your behalf, and says Telegram, Messenger and other platforms are not currently supported. Portraitor’s home page offers WhatsApp, Telegram, Messenger and Instagram, and accepts .txt, .html, .json or .zip files. If your conversation is a Telegram export, this entire axis is moot and the choice is made for you.

The prices are in different currencies and we are not converting them. Unpack My Chat charges R49.99, in rand, as a once off payment for that specific report; its privacy page says the checkout is created by Partner Hub, which sends the hosted transaction to Paystack, and its FAQ says it is not a subscription. Portraitor charges $10 once or $19 a month. Unpack My Chat also describes itself as an independent South African project with its interface in eleven South African languages, which may matter more to you than either rule. On the narrower question of who keeps the least, we compared the most private chat analysers against each other.

Frequently asked questions

Frequently asked questions

Does Portraitor publish how it counts reply speed?

No. Portraitor’s change over time lens reports “Reply speed by topic” according to its home page, but none of the four pages Portraitor publishes, the home page, the privacy policy, the terms or the data rights page, states what gap counts as a reply or how a run of messages from one sender is handled. Unpack My Chat publishes that definition and Portraitor does not.

What is Unpack My Chat’s one hour rule?

A new conversation session starts when the gap from the previous parsed message is more than 60 minutes, according to Unpack My Chat’s methodology page. If the next message arrives inside 60 minutes and the sender changes, that gap counts towards the new sender’s reply-time statistics, and consecutive messages from one sender are counted as same-sender runs rather than replies.

Why do two chat analysers give different reply times for the same chat?

Because they define a reply differently, which is the answer Unpack My Chat’s own FAQ gives: “Different tools use different session thresholds and definitions.” Its own choice is to exclude very long offline gaps from ordinary reply timing and to require a sender change before a gap counts as a reply. A tool that publishes no threshold gives you no way to reconcile the two figures.

Does Unpack My Chat work with Telegram or Messenger?

No. Its FAQ and methodology page both say the product is built for exported WhatsApp chats and that Telegram, Messenger and other messaging platforms are not currently supported. It also does not connect to a WhatsApp account or export the chat for you. Portraitor’s home page offers WhatsApp, Telegram, Messenger and Instagram.

Is Unpack My Chat a subscription?

No. Its FAQ states that R49.99 is a once off payment for that specific report and that it is not a subscription. The amount is in rand. Portraitor sells one portrait for $10 with no account and no renewal, or ten a month for $19, according to its home page.

If a number you can recompute matters more than a reading of the text, read the measurement rules before you pay either of us.

Where we come in

Read the published pages before you pay

Portraitor publishes a home page, a privacy policy, terms and a data rights page, and no methodology page. What it does state in writing is the masking step, what is never retained, what the portrait contains and what it costs.

See how Portraitor works →
Sources
  1. Unpack My Chat. Methodology: how Unpack My Chat counts chat statistics.
  2. Unpack My Chat. Frequently asked questions.
  3. Unpack My Chat. Privacy: how Unpack My Chat handles chat exports.
  4. Unpack My Chat. WhatsApp chat analyzer (home page).
  5. Portraitor. Home page.
  6. Portraitor. Privacy Policy, version 1.3, 30 September 2026.
  7. Portraitor. Terms of Service, version 1.3, 30 September 2026.
  8. Portraitor. Your Data Rights, version 1.3, 30 September 2026.