Chat Wrapped

Your chat, in numbers

Drop a WhatsApp, Telegram or Zoom chat export. See who talks most, when you talk, how fast everyone replies, the words and emoji each person leans on, and get a card to share.

Your chat never leaves this tab. It is read and counted in your browser. No upload, no sign-in, nothing saved.

Load a chat

Drop your chat export here or choose a file
WhatsApp .txt or .zip · Telegram result.json · Zoom chat .txt
How do I export a chat?

WhatsApp on iPhone

Open the chat, tap the name at the top, scroll down and tap Export Chat, choose Without Media, then save to Files or AirDrop it to your computer. Drop the .zip here as it is.

WhatsApp on Android

Open the chat, tap the three dots, then More and Export chat, choose Without media. Email or save the .txt file and drop it here.

Telegram

In Telegram Desktop open the chat, use the three-dot menu, Export chat history, untick photos and files, and set the format to Machine-readable JSON. Drop result.json here. A full account export works too; pick the chat afterwards.

Zoom

During a meeting open Chat and use Save chat, or turn on automatic chat saving. The file is in your Zoom folder as meeting_saved_chat.txt. Zoom does not write the date, so set it after loading.

No export handy? Open a made-up example:

How it works

Private by design
The page loads once and then works on its own. Your file is opened with the browser's file reader and counted in memory. Close the tab and it is gone. You can even switch off Wi-Fi after the page loads.
Reading the export
WhatsApp lines are matched in both the iPhone layout [date, time] Name: text and the Android layout date, time - Name: text. Whether 03/04 means 3 April or March 4 is decided from days above 12 and, failing that, from which reading keeps the messages in time order. Group notices (joins, encryption banners) are skipped. Media, deleted messages, edits, calls and polls are counted separately in English, Spanish, German, French, Portuguese, Italian and Dutch exports.
Reply speed
When someone answers a message from someone else before the chat has gone quiet for the conversation gap, the wait counts as their reply time. The median is shown. A message after a longer silence starts a new conversation, credited to whoever broke the silence.
Streaks and busiest day
A streak is a run of calendar days with at least one message. Times are shown in your device's time zone for Telegram, and exactly as written for WhatsApp and Zoom.
Words and emoji
Words are split on letters in any script; links and very common function words are dropped. Emoji are counted as whole characters, so skin tones, flags and combined emoji count once.

Questions

Is my chat uploaded anywhere?
No. The file is read by JavaScript inside your browser tab and every number is computed there. The page sends no request containing your chat, needs no sign-in, and keeps nothing after you close the tab.
How do I export a WhatsApp chat?
Open the chat, tap the name at the top (iPhone) or the three-dot menu then More (Android), choose Export chat and pick Without media. Save or send the file to yourself and drop the .txt or .zip here.
Which date formats work?
Day-first, month-first and year-first dates with slashes, dots or dashes, two- or four-digit years, and 12- or 24-hour clocks, including the invisible spacing characters newer phones add. The order is detected from the file and can be overridden.
How is reply time measured?
When a message follows one from someone else within the conversation gap (6 hours by default), the time between them counts as a reply by the second person. The median of those gaps is shown, so one slow answer does not distort it.