01 · Product name
sigtop
Export messages and attachments from a local Signal Desktop install.
Published by Tim van der Molen.
In short
sigtop is a free command-line utility by Tim van der Molen that exports messages, attachments, and other data from Signal Desktop. It reads the local data directory of an installation you can already open. It does not connect to Signal’s servers and it does not recover an account you cannot open. Builds exist for Linux, macOS, and Windows. Use it when the investigation already has lawful access to that desktop, and keep the export inside the case file.
Product pricing strategy
02
Free
sigtop is free. You do not buy a seat to use what the project publishes.
Yes. It is a free and open-source command-line program. You need Go to build it, or you can use the Windows binary the project publishes.
Utility and features
03
sigtop, by Tim van der Molen at github.com/tbvdm/sigtop, reads Signal Desktop’s files on the machine where that app is installed and writes them out in a form you can file. The manual describes exports of messages and attachments, plus avatars, a database integrity check, a database export, and a query command. It is a local converter. It does not speak to Signal’s servers, it does not register a device, and it does not defeat an account you cannot already open on that computer.
- What it reads. The local Signal Desktop data directory on a computer where that app is installed. Not Signal’s servers, and not an account you cannot open.
- What it writes. Messages, attachments, and avatars, plus a database check and a database export. The README’s first examples are export-messages and export-attachments.
- Where it runs. Linux, macOS, and Windows. Go 1.21 or newer to build. A Homebrew tap on macOS. A release binary on Windows if you choose not to build.
- The limit. You need to be allowed to read that desktop. The tool does not unlock a phone, link a new device, or recover a passphrase you do not have.
Signal Desktop keeps an encrypted database and the key material for that installation. sigtop uses what is already there. On Linux, other than OpenBSD, the build expects libsecret so it can read that key the same way the desktop app does. The README also documents a no_libsecret build tag when you do not want that dependency. Default data directories are the ordinary ones: %AppData%\Signal on Windows, ~/Library/Application Support/Signal on macOS, and the XDG config path on Unix, with extra defaults for the Snap and Flatpak packages. A -d flag points at a different directory. A -B flag targets Signal Desktop Beta. Those are switches for an install you are allowed to read. They are not a method for opening someone else’s phone.
Install paths match the platforms. The project is Go, and it needs a C compiler. The README’s Unix instructions are go install of github.com/tbvdm/sigtop/cmd/sigtop, after Go 1.21 or newer and, where required, libsecret. On macOS the documented route is a Homebrew tap, tbvdm/tap/sigtop. On Windows there is a prebuilt sigtop.exe on the GitHub releases, with the author’s warning that some antivirus tools flag Go binaries, plus instructions to build it yourself if you do not want the binary. The program is a command in a terminal. There is no website to log into.
The two commands the README leads with are export-messages and export-attachments, each writing into a directory you name. The manual adds narrower options: one conversation, a time window, an incremental attachment export that skips files already written, and a choice of how filenames are sanitized. check-database runs SQLite integrity checks against the encrypted database. Use the check when an export fails, before you assume the chat is gone. This listing does not reproduce the query syntax. If you are not already comfortable reading a database you are allowed to hold, export the messages and stop.
Lawful access is the whole gate. The right subject is your own Signal Desktop, a machine your organization administers and is allowed to export, or a device already in an investigation where you have the legal right to the local app data. sigtop does not create that right. An export of someone else’s conversations, taken because you found the tool, is not a research step. When an export is authorized, treat the output as the contents of those chats: store it with the case, restrict who can open it, and do not paste threads into a report that a wider audience will read.
ExifTool is the neighbor for a different local job, files and photos. sigtop is only Signal Desktop. A phone that has never been linked to a desktop has nothing for this tool to read.
- 1
Confirm you are allowed to export that Signal Desktop installation. Your own, or a device already in lawful custody.
- 2
Install from the README for the operating system in front of you. Prefer a build you can read if you do not want the Windows release binary.
- 3
Run check-database if you need to know the local database opens, then export messages and attachments into a directory you control.
- 4
Store the export with the case and limit who can read it. Do not paste conversations into a wider report.
Caveats
04
sigtop reads a Signal Desktop database you can already open on a machine you are allowed to use. It does not bypass Signal’s device linking, it does not decrypt a backup you cannot decrypt, and it does not pull messages from Signal’s servers.
Exporting someone else’s desktop without authority is not a feature this listing will discuss. Messages you export are still private communications. Store them under the same rules as the rest of the case. The tool’s own README is the compatibility source.
Potential use cases
06
- You need a reviewable copy of Signal Desktop history on a machine you are allowed to examine, typically your own or an organization’s under a policy that already covers it. Point sigtop at that local database. The output is the exported messages and attachments the tool can read from that copy. It does not unlock a phone, link a new device, or recover a passphrase you do not have. This page does not describe extracting keys.
- Attachments have to come out of a desktop you are already allowed to examine. Export them to the case folder and hash the files. The output is ordinary files plus the export log. Pivot a phone number or a username you find in the export to the relevant lookup only if your authority covers that next step. The export is not a wiretap. It is a copy of what the desktop already held.
- You want to know whether a local Signal database opens before you spend time on a manual copy. Run the tool’s check, and if it fails, the output is the error. Do not ‘fix’ a locked database. The README is the source for which desktop versions the build supports. A failure means this tool could not read this file, not that the messages are gone.
Hard cases
The case where the first result is easy to over-read.
The phone is locked and the desktop is not logged in
There is nothing for sigtop to read. Do not turn the request into a keypad, a backup password, or a linked-device procedure. Those are not on this page. If a logged-in desktop exists and you are allowed to use it, export from that database and say so in the notes. If it does not exist, the finding is that this tool does not apply.
Questions
Does sigtop read Signal from the network?
No. It reads the Signal Desktop data directory on a machine you can access. It does not contact Signal’s servers and it does not pull messages off a phone that was never linked to that desktop.
Is sigtop free?
Yes. It is a free and open-source command-line program. You need Go to build it, or you can use the Windows binary the project publishes.
Citations
07
Titled sources. These public pages are what the quotes on this listing come from.
Product
sigtop repository
https://github.com/tbvdm/sigtopDocumentation
sigtop manual
https://www.kariliq.nl/man/sigtop.1.html