A web app that takes chat exports from supported platforms and generates a single HTML file containing information, statistics and interactive graphs about them. Privacy is its main concern; chat data never leaves the device when generating reports. Selfhost with Docker!
💬 MESSAGES | 😃 EMOJI | 🔗 LINKS | 📞 CALLS | 🌀 INTERACTION | 💙 SENTIMENT | 📅 TIMELINE | |
---|---|---|---|---|---|---|---|
You can interact with the demo here!
You can generate reports from the following platforms:
Platform | Formats supported | Text content | Edits & Replies | Attachment Types | Reactions | Profile picture | Mentions | Calls |
---|---|---|---|---|---|---|---|---|
Discord | json from DiscordChatExporter |
✅ | ✅ | ✅ | ✅ | ✅ (until link expires) | ✅ (as text) | ✅ |
Messenger | json from Facebook DYI export |
✅ | ❌ | ✅ | ❌ | ❌ | ✅ (as text) | ❌ |
Telegram | json from Telegram Desktop |
✅ | ✅ | ✅ | ❌ (not provided) | ❌ | ✅ (as text) | ✅ |
txt or zip exported from a phone |
✅ | ❌ (not provided) | ✅* (if exported from iOS) 🟦 (generic if exported from Android) |
❌ (not provided) | ❌ | ✅ (as text) | ❌ |
* not all languages are supported, check WhatsApp.ts.
You can't combine exports from different platforms.
The contribution of new platform parsers is always welcomed 🙂
Since all chat data always stays in the browser, there is zero risk of someone reading your chats. Note that the report HTML file contains sensitive information (one may reconstruct message contents for every message), so share your reports with people you trust.
The site does not use cookies either and uses a self-hosted version of Plausible. All events do not contain PII and the information is segmented (e.g. 1MB-10MB, etc.). Since I want full transparency, you can check the site analytics here.
You can generate reports from the command line using npx chat-analytics
:
Usage: chat-analytics -p <platform> -i <input files>
Options:
--help Show help [boolean]
--version Show version number [boolean]
-p, --platform The platform to generate for
[string] [required] [choices: "discord", "messenger", "telegram", "whatsapp"]
-i, --inputs The input file(s) to use (glob) [array] [required]
-o, --output The output HTML filename [string] [default: "report.html"]
--demo Mark the report as a demo [boolean] [default: false]
For example:
npx chat-analytics -p discord -i "exported/*.json" -o report.html
You can read docs/README.md for technical details, and docs/DEV.md for development instructions.
In docs/TODO.md you can find ideas and pending stuff to be implemented.
- FastText, a library by Facebook for efficient sentence classification. MIT licensed.
- lid.176.ftz model, provided by FastText developers for language identification. Distributed under CC BY-SA 3.0.
- multilang-sentiment, for the translated AFINN database. MIT licensed.
- Emoji sentiment data from the work of Kralj Novak, Petra; Smailović, Jasmina; Sluban, Borut and Mozetič, Igor, 2015, Emoji Sentiment Ranking 1.0, Slovenian language resource repository CLARIN.SI, http://hdl.handle.net/11356/1048. Licensed with CC BY-SA 4.0.
- stopwords-iso for a collection of stopwords in a variety of languages. MIT licensed.
- All the libraries and tools that made this project possible 😀
AGPLv3. See LICENSE.