Skip to main content
seedrecover.py is BTCRecover’s seed phrase recovery tool. It takes your best guess at a seed — one with missing words, typos, or wrong words — and systematically searches for the correct version. It runs automatically through multiple search phases and handles BIP39, SLIP39, and Electrum v1/v2 seeds.

Supported seed types

Seed typeNotes
BIP3912 or 24 words. Used by Ledger, Trezor, Keepkey, Coldcard, and most software wallets. Default when --wallet-type bip39 is used.
SLIP39Shamir’s Secret Sharing shares used by Trezor T. Can also recover damaged shares with --slip39.
Electrum v1Legacy 12-word seeds used by early Electrum releases.
Electrum v2Modern Electrum seeds (v2.x+), including Segwit variants.

What you need before starting

You need a good estimate of your seed and one of the following (in order of preference):
  1. Your Electrum wallet file (for Electrum v1/v2 wallets only)
  2. Your master public key (xpub / ypub / zpub)
  3. A receiving address generated by the wallet, plus a rough count of how many addresses you created before it
  4. An address database — see Address database if you have none of the above
If you have neither an address nor an xpub, an address database is required. Building or downloading one takes more setup, but the actual seed search runs at roughly the same speed regardless.

Fully supported wallets

Hardware wallets

  • Ledger Nano X and S
  • Trezor One and T
  • Keepkey
  • Safepal
  • Coldcard
  • Bitbox02
  • Keystone
  • Cobo Vault
  • Ellipal
  • CoolWallet S (requires converting seed numbers to BIP39 words; use --force-p2sh for Bitcoin and Litecoin)

Software wallets

  • Electrum (v1 and v2 seeds, including Electrum-LTC and Electron-Cash forks)
  • Coinomi
  • Wasabi
  • Edge Wallet
  • Mycelium
  • Exodus
  • Trust Wallet
  • Metamask (including Binance Chain Wallet and other clones)
Some wallets have compatibility issues due to non-standard derivation. Atomic Wallet uses a non-standard ETH derivation path and requires --checksinglexpubaddress. Abra Wallet uses a non-standard seed format that cannot be reproduced.

Automatic search phases

When you run seedrecover.py without overriding the search depth, it automatically runs through four phases. Each phase finds a larger fraction of possible errors at the cost of more search time.
PhaseDescription
1Single typo
2Two typos, including one completely wrong BIP39 word
3Three typos, including one completely wrong BIP39 word
4Two typos, both of which could be completely wrong words
The four phases together should take at most a few hours for a typical 12-word seed on a modern computer.

GUI walkthrough

On most systems you can run seedrecover.py without a terminal by double-clicking it. On macOS, first rename the file to seedrecover.command.
1

Open your wallet file (Electrum only)

If you have an Electrum wallet file, open it now. All remaining steps will be skipped. Otherwise click Cancel to continue.
2

Select your wallet type

Choose the wallet software or coin type that generated your seed. If unsure, BIP39 covers most hardware and modern software wallets.
3

Enter your master public key

If you have your xpub (or ypub/zpub), enter it here. Otherwise click Cancel.
4

Enter receiving addresses

Enter as many of your wallet’s receiving addresses as you can find, separated by spaces. Earlier addresses are better. Only use addresses from your first account.
5

Set the address generation limit

Enter how many addresses to generate per seed candidate. If your entered addresses were all within the first 10 you ever created, use 10. More addresses means a slower but safer search.
6

Enter your best seed guess

Type your best guess at the seed phrase. Leave out words you’re unsure of — seedrecover.py will try replacements automatically.

Basic CLI examples

Recover a Bitcoin native SegWit address with one missing word:
python seedrecover.py --wallet-type bip39 \
  --addrs bc1qv87qf7prhjf2ld8vgm7l0mj59jggm6ae5jdkx2 \
  --mnemonic "element entire sniff tired miracle solve shadow scatter hello never tank side sight isolate sister uniform advice pen praise soap lizard festival connect" \
  --addr-limit 5
Recover a P2SH SegWit address with one missing word:
python seedrecover.py --wallet-type bip39 \
  --addrs 3NiRFNztVLMZF21gx6eE1nL3Q57GMGuunG \
  --mnemonic "element entire sniff tired miracle solve shadow scatter hello never tank side sight isolate sister uniform advice pen praise soap lizard festival connect" \
  --addr-limit 5
Recover an Electrum v1 seed with one wrong word:
python seedrecover.py --wallet-type electrum1 \
  --addrs 1Pw1yjF5smzg6eWbE2LbFm7fr1zq7WUYc7 \
  --mnemonic "milk hungry group sound Lift Connect throw rabbit gift leg new lady pie government swear flat dove imagination sometime prepare lot trembl alone bus" \
  --addr-limit 2
Recover a SLIP39 share with two typos:
python seedrecover.py --slip39 \
  --mnemonic "hearing echo academic acid deny bracelet playoff exact fancy various evidence standard adjust muscle parcel sled crucial amazing mansion losing" \
  --typos 2

Explore further

BIP39 seed descrambling

Recover a seed when you have all the words but don’t know the order

Derivation paths and altcoins

Choose the right wallet type and derivation path for your coin

Address database

Recover seeds without a known address or xpub

Build docs developers (and LLMs) love