Skip to main content

signal-export

PyPI version

[!Note] ⚠️Because the latest versions of Signal Desktop protect the database encryption key, so decrypting involves some extra steps. Good luck.

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 HTML export is styled as a chat view with grouped messages, day dividers, reactions, and an image lightbox. It follows your browser/OS light or dark preference by default, and a switcher in the top bar lets you pin light or dark (remembered per browser).

🐧 Installation

  1. Make sure you have Python installed.

  2. Install this package:

pip install signal-export

# ...if you have the "pipx" command available, you're probably better off installing with "pipx install signal-export"
  1. 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.

Installation nix/nixOS

signal-export is packaged in nixpkgs, so you can run

nix-shell -I nixpkgs=channel:nixpkgs-unstable --packages signal-export --command 'sigexport ~/signal-chats'

If you get an error message about secret-tool not being found, you probably need to install libsecret-tools via your Linux package manager. If you get this on NixOS then just add libsecret in the previous command

nix-shell -I nixpkgs=channel:nixpkgs-unstable --packages signal-export libsecret --command 'sigexport ~/signal-chats'

🚀 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/
  • Linux Flatpak: ~/.var/app/org.signal.Signal/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
uv sync --all-groups

Various dev commands:

uv run poe fmt        # format code with Ruff
uv run poe lint       # lint code with Ruff
uv run poe check      # typecheck with Pyright
uv run poe test       # run tests with pytest
uv run sigexport      # run the signal-export CLI

Similar things

Metadata

Release files for signal-export 3.9.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for signal-export 3.9.2
File Size Uploaded
signal_export-3.9.2.tar.gz 40.9 kB Details

Release files / signal_export-3.9.2.tar.gz

Download URL signal_export-3.9.2.tar.gz
Size 40.9 kB
Tags Source
SHA-256 checksum
How to use checksums
64043fa86a4dce5a6f14c2312820e1b66e6c7b3d2d01363e97e8ef5d668d6c87
BLAKE2b-256 checksum
How to use checksums
47f82e55d60e874178f3dd414df555333b59b92d26ddc1add3ff360509cb1a10
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 19, 2026.

Transparency log

Release history Release notifications | RSS feed

3.9.3

1 release file

This release

3.9.2 This release

1 release file

3.9.1

1 release file

3.9.0

1 release file

3.8.6

1 release file

3.8.5

1 release file

3.8.4

1 release file

3.8.3

1 release file

3.8.2

1 release file

3.8.1

1 release file

3.8.0

1 release file

3.7.1

1 release file

3.7.0

1 release file

3.6.0

1 release file

3.5.1

1 release file

3.5.0

1 release file

3.4.1

1 release file

3.4.0

1 release file

3.3.0

1 release file

3.2.2

1 release file

3.2.1

1 release file

3.2.0

1 release file

3.1.2

1 release file

3.1.1

1 release file

3.1.0

1 release file

3.0.2

1 release file

3.0.1

1 release file

3.0.0

1 release file

2.4.1

2 release files

2.4.0

2 release files

2.3.7

2 release files

2.3.6

2 release files

2.3.5

2 release files

2.3.4

2 release files

2.3.3

2 release files

2.3.2

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.8.2

2 release files

1.8.1

2 release files

1.8.0

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.5

2 release files

1.5.4

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page