# Analyze an Exported WhatsApp Chat

Paste an exported WhatsApp chat to count messages per person, busiest hours and days, and top words and emoji. Fully in-browser — nothing is uploaded.

## Run it

- **CLI:** `gizza tool whatsapp-chat-analyzer "[2024-01-05, 21:07:33] Alice: Hey Bob 😂😂 how are you?
[2024-01-05, 21:08:01] Bob: good thanks! www.example.com
[2024-01-06, 09:16:10] Bob: nice 😂"`
- **Web:** https://gizza.ai/tools/whatsapp-chat-analyzer/
- **Agents:** machine-readable descriptor (parameters JSON Schema) at https://gizza.ai/tools/whatsapp-chat-analyzer/tool.json

## Inputs

- `chat` — Exported chat text _(field)_
- `date_format` — Date format _(field)_
- `top` — Top words / emoji to list _(field)_
- `min_word_length` — Minimum word length _(field)_
- `ignore_stopwords` — Ignore common filler words _(field)_

## Output

- Chat summary (text)

## Query parameters

Open the tool pre-filled and auto-run via URL:

- `chat` — Exported chat text
- `date_format` — Date format
- `top` — Top words / emoji to list
- `min_word_length` — Minimum word length
- `ignore_stopwords` — Ignore common filler words

Example: `https://gizza.ai/tools/whatsapp-chat-analyzer/?chat=%5B2024-01-05%2C%2021%3A07%3A33%5D%20Alice%3A%20Hey%20Bob%20%F0%9F%98%82%F0%9F%98%82%20how%20are%20you%3F%0A%5B2024-01-05%2C%2021%3A08%3A01%5D%20Bob%3A%20good%20thanks%21%20www.example.com%0A%5B2024-01-06%2C%2009%3A16%3A10%5D%20Bob%3A%20nice%20%F0%9F%98%82&date_format=auto&top=10&min_word_length=3&ignore_stopwords=true`

---

## About this tool

Paste the text from an exported WhatsApp chat and get a local, deterministic report: total messages, participants, media and link counts, messages per person, busiest hours and weekdays, and the most-used words and emoji.

The parser handles the common iOS bracketed export format (`[2024-01-05, 21:07:33] Alice: ...`) and the Android dash format (`05/01/2024, 21:07 - Alice: ...`). Multi-line messages are folded into the message above them, system notices are skipped, and media placeholders such as `<Media omitted>` are counted without treating the placeholder as chat text.

Example input:

```text
[2024-01-05, 21:07:33] Alice: Hey Bob 😂😂 how are you?
[2024-01-05, 21:08:01] Bob: good thanks! www.example.com
[2024-01-06, 09:15:00] Alice: image omitted
[2024-01-06, 09:16:10] Bob: nice 😂
```

Useful limits and edge cases:

- Ambiguous numeric dates can be auto-detected, forced to day/month/year, forced to month/day/year, or parsed as year-month-day for ISO exports.
- `Top words / emoji to list` accepts `0` for every ranked entry; very large chats may produce long reports when this is set to `0`.
- Emoji counting groups skin tones, flag pairs, variation selectors, and family-style ZWJ emoji sequences as single emoji tokens.
- This is a text-export analyzer. It counts media placeholders from the export text; it does not inspect a WhatsApp `.zip` attachment bundle or read images, audio, or videos.

## FAQ

<details>
<summary>How do I get the chat text to paste here?</summary>

Use WhatsApp's chat export feature and choose the text export. Open the exported `_chat.txt` or `.txt` file, copy the contents, and paste them into the text box. The tool runs in your browser and does not upload the chat.

</details>

<details>
<summary>Which WhatsApp export formats are supported?</summary>

The analyzer supports iOS-style bracketed lines such as `[2024-01-05, 21:07:33] Alice: ...` and Android-style dash lines such as `05/01/2024, 21:07 - Alice: ...`. It also handles common AM/PM times, invisible direction marks, and continuation lines.

</details>

<details>
<summary>Why can the date format change the busiest day result?</summary>

Dates like `05/01/2024` are ambiguous: they can mean 5 January or May 1. Leave the setting on auto for most exports, or choose day/month/year or month/day/year if you know how the export was written.

</details>

<details>
<summary>Does this read images, videos, or voice notes from a WhatsApp ZIP?</summary>

No. It analyzes the text export only. Media placeholders are counted as media messages, but attachments themselves are not opened or inspected.

</details>

## Related tools

- [Word frequency counter](https://gizza.ai/tools/word-frequency/): Count how often each word appears in your text and rank them by frequency, right in your browser. Skip short words, drop stop words, keep the top N. Free, private.
- [Avro to JSON Converter](https://gizza.ai/tools/avro-to-json/): Decode Apache Avro Object Container Files (.avro / OCF) to JSON, NDJSON, or the embedded schema — no .avsc needed, free and private in your browser.
- [Bencode decoder](https://gizza.ai/tools/bencode-decoder/): Decode bencode (the BitTorrent / .torrent serialization format) into readable JSON, and re-encode JSON back into canonical bencode — in your browser. Nothing is uploaded.
- [CAMT.053 Statement Parser](https://gizza.ai/tools/camt053-parse/): Parse a camt.053 (or camt.052/054) ISO 20022 bank statement XML into JSON or CSV in your browser: balances, dates, counterparties, references. No upload.
- [CSV Cell Diff](https://gizza.ai/tools/csv-cell-diff/): Compare two CSVs column-by-column and highlight every individual cell that changed, plus added and removed rows and columns.
