WhatsApp Chat Analyzer

Export the chat from WhatsApp (without media is fine), then drop the .txt file or the zip below. You get message counts, a weekday and hour heatmap, median reply times and top words for every person, plus CSV downloads. Nothing is uploaded.

WhatsApp Chat Analyzer

Drop in an exported WhatsApp chat and see who sends the most, when the chat is busiest, how fast each person replies, and their favourite words and emojis. The chat never leaves your browser.

Drop your file here or click to browse

The .txt or .zip you get from Export chat

Your data never leaves your browser. All processing happens locally.

Getting the chat out of WhatsApp

Open the chat, tap the contact or group name at the top (on Android you can also use the three-dot menu, then More), and choose Export chat. WhatsApp asks whether to include media. Say no unless you have a reason not to. Without media you get a single .txt file that's usually a few megabytes even for years of messages. With media you get a zip stuffed with every photo and voice note, and that can run into gigabytes. Both work here, but the text file is the only part that matters. Send it to yourself by email, save it to Files or Drive, whatever's easiest, then drop it on the box above.

On an iPhone the text file inside the zip is called _chat.txt. On Android it's named after the chat, something like WhatsApp Chat with Maria.txt. If you drop the zip, the tool finds the text file on its own and ignores the pictures.

What you get back

If you'd rather have a proper .xlsx file with the columns already set up, run the messages CSV through the CSV to Excel converter.

The top row is the headline stuff: total messages, how many people wrote something, total words, photos and files, deleted messages, how many separate days had at least one message, the date range, and the single busiest day. That last one is usually a surprise. People expect a birthday or New Year's Eve and find it was the day the group argued about splitting a restaurant bill.

Under that, a table breaks everything down by person: messages, their share of the chat, words, average words per message, media sent, and median reply time. Average words per message tells you more than it looks like it should. One friend sends three long paragraphs, another sends eleven one-word messages to say the same thing, and a plain message count makes the second one look far chattier than they really are.

  • Messages per month as a bar chart, from the first month to the last, with empty months left in so you can see when things went quiet.
  • A weekday by hour heatmap. Each square is one hour of one weekday, and the stronger the green, the busier it was. Night owls show up fast.
  • Top 20 words and top 15 emojis, for the whole chat or for one person. Common filler words in English, Spanish, Portuguese, German and French are skipped, so what's left actually belongs to your chat.
  • The first message in the export, with who sent it and when.

Two CSV downloads sit at the bottom. The stats file has one row per person. The messages file has every message with date, time, sender, text and type, which is far easier to sort and filter in a spreadsheet than the raw export ever will be.

How reply time is worked out

This is the number people ask about most, so here's exactly what it does. Every time the sender changes, the gap between the previous person's last message and the new person's first message counts as one reply for the new person. If you send four messages in a row and your friend answers ten minutes after the fourth, that's a ten-minute reply. The tool then takes the median of all those gaps, not the average. One reply that took nine hours would drag an average way up and tell you nothing about a normal day. The median shrugs that kind of outlier off.

Gaps longer than 24 hours are left out completely. If nobody wrote for three days and then someone said hi, that isn't a slow reply, it's a new conversation. In a group, a reply just means the next person to speak, which is rough, but it's the only honest thing you can measure from a text file. And Android exports only record the time to the minute, so anything quicker than that shows as under 1 min.

The date format problem

WhatsApp writes dates in whatever format your phone uses. An American phone writes 3/4/24, a British one 04/03/2024, a German one 04.03.24, a Japanese one 2024/03/04, and iPhones wrap the whole thing in square brackets. The tool looks at every date in the file. If any first number is above 12, that number has to be the day. If any second number is above 12, the month comes first. When a chat is short and every single date is ambiguous, it tries both readings and keeps the one where time moves forward instead of jumping backwards. It gets this right nearly every time, and it tells you which format it used. If it's wrong, pick the format from the dropdown and run it again.

12-hour times work too, including the Spanish p. m. style, the invisible narrow space that newer iPhones put before AM and PM, and the 上午 and 下午 markers on Chinese phones.

Your chat stays on your computer

Chat exports are about as private as files get. They're full of addresses, arguments, health stuff, and things people said at 2am. So nothing here is uploaded. JavaScript inside this tab reads the file and builds the results right there. There's no account and no server copy that could leak. You can check it yourself: load the page, turn off your Wi-Fi, and run an analysis. It works exactly the same. Close the tab and it's gone.

Honestly, that's the main reason this page exists. Several popular analyzers want the chat on their server first, and one of the better known ones sends it to an AI model and then charges per analysis. I didn't want to do either.

Things it can get wrong

WhatsApp's export format isn't documented anywhere, and it shifts with every language and phone. The rough edges I know about:

  • System notices like someone joining, a group rename, or a security code change are dropped. The number dropped is shown above the stats, so if it looks far too high, the format probably confused the parser.
  • Media placeholders are recognised in the common languages. On an iPhone set to a language the tool doesn't know yet, image omitted might get counted as a text message.
  • A name that contains a colon followed by a space gets cut short at the colon.
  • WhatsApp caps exports itself. Its help pages mention roughly 40,000 messages without media and 10,000 with media, so for a very long chat you're looking at the most recent stretch, not the whole history.

If a file won't parse at all, the usual cause is that it isn't a chat export. Backup files like msgstore.db.crypt14 are encrypted, and nothing in a browser can open them.

What people use it for

And when one message in there reads colder than you think it was meant, paste it into the text tone analyzer and see how it actually comes across.

Couples checking who texts first and who replies faster, usually to settle a bet. Group admins wanting to know who actually talks and who only posts memes. Small shops that take orders over WhatsApp and want to see which hours they really need to be on their phone. Students pulling a chat into a spreadsheet for a project. And a lot of people who just want to see a year of a friendship laid out on one page. The month chart in particular gets people. You can see the move abroad, the new job, the baby, all as dips and spikes.

Your ChatGPT history comes out as a zip file too, and the ChatGPT export viewer opens it the same way, inside the browser with nothing uploaded.

Frequently Asked Questions About the WhatsApp Chat Analyzer