Skip to content

Generate interactive, beautiful and insightful chat analysis reports

License

Notifications You must be signed in to change notification settings

mlomb/chat-analytics

Repository files navigation

Logo-Dark Logo-Light

Generate interactive, beautiful and insightful chat analysis reports

Open AppView DemoUse CLI

GitHub Workflow Status codecov npm

Donate


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.

💬 MESSAGES 🅰️ LANGUAGE 😃 EMOJI 🔗 LINKS 🌀 INTERACTION 💙 SENTIMENT 📅 TIMELINE
chat analytics messages tab chat analytics language tab chat analytics emoji tab chat analytics links tab chat analytics interaction tab chat analytics sentiment tab chat analytics timeline tab

You can interact with the demo here!

Chat platform support

You can generate reports from the following platforms:

Platform Formats supported Text content Edits & Replies Attachment Types Reactions Profile picture Mentions
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)
WhatsApp 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 🙂

Privacy & Analytics

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.

CLI

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

Docs & Development

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.

Acknowledgements

  • 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 😀

License

AGPLv3. See LICENSE.