This project lets you see all the statistics of your Signal chats.
- Get insights on your chats: How many messages have you written? At what daytime? Which words do you use the most?
- Privacy friendly: no data is sent to a server, everything happens on your device
You can try the hosted version on signalstats.duskflower.dev or run the code on your own machine. This project was created as an alternative to WhatsAnalyze for the Signal messenger.
Since Signal doesn't let you export chats as unencrypted text or zip files like WhatsApp, the only way to get Signal chat data is to use the backup function. Sadly, local backups are to my knowledge currently only available on Android devices.
A backup contains the database (the database statements needed to create the database) with all the messages, recipients, groups and much more, and also attachments, stickers and avatars.
Since that is quite a big amount of encrypted data (easily multiple GBs), I chose to implement the decryption in WebAssembly using Rust and tried to optimize the code for performance. The code for the decryption can be found at signal-decrypt-backup-wasm and is based on signal_for_android_decryption.
After the decryption, all the database statements are executed on a WebAssembly database using @sqlite.org/sqlite-wasm and after that it is possible to execute queries on the database to obtain the data needed for statistics.
Please report bugs in the Github issues.
This project is built as an Single-page application using SolidJS.
# clone the repository
git clone https://git.duskflower.dev/duskflower/signalstats.git
# go to the project directory
cd signalstats
# install the dependencies
pnpm install # or npm install or yarn install
# to run the development version
pnpm dev
# or
pnpm start
# to build the project
pnpm build
# you can preview the build by running
pnpm serve
pnpm build
will create the dist
folder which you can serve as a static site.