seedrecover.py recovers BIP39, SLIP39, and Electrum seed phrases where words are missing, incorrect, or reordered. It can also be launched with no arguments to display a simple graphical interface.
Minimum invocation (GUI):
Wallet selection
Wallet selection
| Flag | Argument | Description |
|---|---|---|
--wallet-type | TYPE | Specify the wallet/coin type when not using a wallet file. Common values: bip39, ethereum, litecoin, cardano, dogecoin, bch, ripple, tron, solana, xlm, dash, digibyte, vertcoin, monacoin, groestlecoin, polkadotsubstrate, stacks, zilliqa, helium, elrond, tezos, aezeed, electrum1, electrum2, ethereumvalidator, hederaed25519. |
--wallet | FILE | The wallet file to use (autodetects wallet type). |
--mpk | XPUB-OR-HEX | Master public key (xpub, ypub, or zpub) instead of individual addresses. |
--pathlist | FILE | A file containing a list of BIP32 derivation paths to search simultaneously. |
--bip32-path | PATH [PATH ...] | One or more BIP32 derivation paths (e.g., m/44'/0'/0'/0). Default: BIP44, BIP49, and BIP84 account 0. |
--substrate-path | PATH [PATH ...] | Substrate derivation path(s) for Polkadot (e.g., //hard/soft). |
--language | LANG-CODE | BIP39 wordlist language (default: auto-detected from mnemonic). |
--force-p2sh | — | Force checking P2SH SegWit addresses on all derivation paths (required for CoolWallet S with P2SH accounts). |
--force-p2tr | — | Force checking Taproot (P2TR) addresses on all paths. |
--force-bip44 | — | Force checking BIP44 legacy addresses even if they do not match the supplied address. |
--force-bip84 | — | Force checking BIP84 native SegWit addresses even if they do not match the supplied address. |
--disable-p2sh | — | Disable P2SH SegWit address checking. |
--disable-p2tr | — | Disable Taproot address checking. |
--disable-bip44 | — | Disable BIP44 legacy address checking. |
--disable-bip84 | — | Disable BIP84 native SegWit address checking. |
--checksinglexpubaddress | — | Check non-standard single-address wallets (e.g., Atomic Wallet, MyBitcoinWallet). |
Address input
Address input
| Flag | Argument | Description |
|---|---|---|
--addrs | ADDRESS [...] | One or more known addresses in the wallet. Used to verify candidate seeds. |
--addr-limit | COUNT | How many addresses to generate and check per derivation path. Higher values are slower but necessary if the target address is not account index 0. |
--addr-start-index | COUNT | The index at which --addr-limit starts counting (useful for wallets like Wasabi that may not start at index 0). |
--addressdb | FILE | Path to an address database file. Use instead of --addrs when you do not have a specific known address. |
Seed / mnemonic input
Seed / mnemonic input
| Flag | Argument | Description |
|---|---|---|
--mnemonic | MNEMONIC | Your best guess of the mnemonic. If omitted you will be prompted (GUI or terminal). |
--mnemonic-prompt | — | Prompt for the mnemonic via the terminal instead of the GUI. |
--mnemonic-length | COUNT | Expected word count of the correct mnemonic (default: auto-detected). |
--tokenlist | FILE | BIP39 word list formatted as a tokenlist, for descrambling or recovering seeds with unknown words. |
--keep-tokens-order | — | Do not permute token order; use tokens in file order. |
--max-tokens | COUNT | Maximum number of tokens to combine per seed candidate. |
--min-tokens | COUNT | Minimum number of tokens to combine per seed candidate. |
--seedlist | FILE or - | File of complete seed phrases to test, one per line. Use - for stdin. |
--multi-file-seedlist | — | Load a seedlist split across multiple files with the suffix _XXXX.txt. |
--listseeds | — | Print all seed combinations that would be tried, then exit. |
--savevalidseeds | FILE | Save all seeds that pass checksum validation to this file. |
--savevalidseeds-filesize | COUNT | Maximum number of valid seeds per output file; additional files are auto-incremented. |
Typo and search settings
Typo and search settings
seedrecover.py automatically runs four phases searching for single and double typos (including completely wrong words). You can override these defaults.| Flag | Argument | Description |
|---|---|---|
--typos | COUNT | Maximum number of word-level mistakes to try. |
--big-typos | COUNT | Maximum number of “big” mistakes — substituting an entirely different BIP39 word. Default: 0 (auto). |
--min-typos | COUNT | Enforce a minimum number of mistakes per guess. |
--close-match | CUTOFF | Similarity threshold for close-word matching (0.0–1.0, default: 0.65). Lower values cast a wider net. |
--passphrase | — | The mnemonic is augmented with a BIP39 or Electrum 2.x passphrase that you know. Prompts interactively. |
--passphrase-arg | PASSPHRASE [...] | Supply the known passphrase directly as an argument. |
--passphrase-list | FILE | File containing a list of passphrases to test alongside each seed candidate. |
--passphrase-prompt | — | Prompt for the passphrase via the terminal. |
--transform-wordswaps | COUNT | Test swapping this many pairs of words within the mnemonic. |
--seed-transform-trezor-common-mistakes | COUNT | Apply common Trezor-specific seed transcription mistakes. |
--skip | COUNT | Skip this many initial seed candidates (to resume a search without autosave). |
--max-eta | HOURS | Refuse to start if estimated completion exceeds this value (default: 168 hours). |
--no-eta | — | Disable ETA calculation. |
--no-dupchecks / -d | — | Disable duplicate seed checking to save memory. Specify multiple times for additional effect. |
SLIP39 options
SLIP39 options
| Flag | Argument | Description |
|---|---|---|
--slip39 | — | Recover a SLIP39 seed share (Shamir’s Secret Sharing). |
--share-length | COUNT | Override the auto-detected share length (20 or 33 words). |
Multi-device and performance
Multi-device and performance
| Flag | Argument | Description |
|---|---|---|
--threads | COUNT | Number of worker threads (default: logical CPU cores for CPU mode; physical cores for GPU mode). |
--worker | ID/TOTAL | Split the search across multiple machines. Example: --worker 2/4 runs the second quarter of the search. Supports multi-slice assignment: --worker 1,2/4. |
--autosave | FILE | Save progress every 5 minutes. Restores from the file if it already exists. |
--restore | FILE | Restore progress from an autosave file. Must be the only argument. |
--performance | — | Run a continuous performance benchmark (Ctrl-C to exit). |
--skip-worker-checksum | — | Skip per-worker seed checksum validation (reduces accuracy, increases speed in some distributed setups). |
OpenCL / GPU acceleration
OpenCL / GPU acceleration
GPU acceleration in
Example — GPU-accelerated BIP39 recovery
seedrecover.py supports BIP39 seeds and Electrum seeds.| Flag | Argument | Description |
|---|---|---|
--enable-opencl | — | Enable OpenCL-based GPU acceleration. |
--opencl-info | — | List available GPU platforms and devices, then exit. |
--opencl-platform | ID [ID ...] | OpenCL platform ID(s) to use (default: auto). |
--opencl-devices | ID1 ID2 ... | Space-separated device IDs within the chosen platform (default: all). |
--opencl-workgroup-size | COUNT [ID ...] | Batch size for OpenCL work groups. |
--force-checksum-in-generator | — | Move seed checksum calculation to the main thread (can improve performance for 24-word seeds). |
Output and GUI options
Output and GUI options
| Flag | Argument | Description |
|---|---|---|
--no-gui | — | Force disable GUI elements; use terminal-only mode. |
--no-progress | — | Disable the progress bar. |
--no-pause | — | Never pause before exiting (default: auto). |
--version / -v | — | Show full version information and exit. |
--disablesecuritywarnings / --dsw | — | Disable security warning messages. |
--beep-on-find | — | Play an audible alert when a seed is found. |