Export Signal conversations to Markdown and HTML
Project description
signal-export
⚠️ WARNING: Because the latest versions of Signal Desktop protect the database encryption key, this tool currently only works on macOS and Linux. Solutions for Windows will hopefully come soon from the community. Discussion happening in this thread.
Export chats from the Signal Desktop app to Markdown and HTML files with attachments. Each chat is exported as an individual .md/.html file and the attachments for each are stored in a separate folder. Attachments are linked from the Markdown files and displayed in the HTML (pictures, videos, voice notes).
Currently this seems to be the only way to get chat history out of Signal!
Adapted from mattsta/signal-backup, which I suspect will be hard to get working now.
Example
An export for a group conversation looks as follows:
[2019-05-29, 15:04] Me: How is everyone?
[2019-05-29, 15:10] Aya: We're great!
[2019-05-29, 15:20] Jim: I'm not.
Images are attached inline with ![name](path)
while other attachments (voice notes, videos, documents) are included as links like [name](path)
so a click will take you to the file.
This is converted to HTML at the end so it can be opened with any web browser. The stylesheet .css
is still very basic but I'll get to it sooner or later.
🐧 Installation
-
Make sure you have Python installed.
-
Install this package:
pip install signal-export
- Then run the script!
sigexport ~/signal-chats
# or for Windows:
python -m sigexport C:\Temp\SignalExport
🪟 Installation: Windows
If you need step-by-step instructions on things like enabling WSL2, please see the dedicated Windows Installation instructions.
🚀 Usage
Please fully exit your Signal app before proceeding, otherwise you will likely encounter an I/O disk
error, due to the message database being made read-only, as it was being accessed by the app.
See the full help info:
sigexport --help
Disable pagination on HTML:
sigexport --paginate=0 ~/signal-chats
List available chats and exit:
sigexport --list-chats
Export only the selected chats:
sigexport --chats=Jim,Aya ~/signal-chats
You can add --source /path/to/source/dir/
if the script doesn't manage to find the Signal config location.
Default locations per OS are below.
The directory should contain a folder called sql
with db.sqlite
inside it.
- Linux:
~/.config/Signal/
- macOS:
~/Library/Application Support/Signal/
- Windows:
~/AppData/Roaming/Signal/
You can also use --old /previously/exported/dir/
to merge the new export with a previous one.
Nothing will be overwritten!
It will put the combined results in whatever output directory you specified and leave your previos export untouched.
Exercise is left to the reader to verify that all went well before deleting the previous one.
Development
git clone https://github.com/carderne/signal-export.git
cd signal-export
rye sync --no-lock
Various dev commands:
rye fmt # format
rye lint # lint
rye run check # typecheck
rye run test # test
rye run sig # run signal-export
Similar things
- signal-backup-decode might be easier if you use Android!
- signal2html also Android only
- sigtop
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file signal_export-3.2.2.tar.gz
.
File metadata
- Download URL: signal_export-3.2.2.tar.gz
- Upload date:
- Size: 55.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4074e2c79ea176e8f15abfa98c283aceed79b4207b6280d2ce63695b058e1cdd |
|
MD5 | 0d81291c6766a7fa6f64700edfa82219 |
|
BLAKE2b-256 | 2d97628badfed8ba6ab4bc2195ea9ddf0a04df928500b06a7128745f6c90f78e |
Provenance
The following attestation bundles were made for signal_export-3.2.2.tar.gz
:
Publisher:
release.yml
on carderne/signal-export
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
signal_export-3.2.2.tar.gz
- Subject digest:
4074e2c79ea176e8f15abfa98c283aceed79b4207b6280d2ce63695b058e1cdd
- Sigstore transparency entry: 147410896
- Sigstore integration time:
- Predicate type: