Skip to main content
A derivation path describes how a wallet derives individual addresses from a master seed. Different wallet software and different coins use different paths, so using the wrong path during recovery will produce the wrong addresses — causing the tool to miss the correct seed even if it’s tested. seedrecover.py handles this automatically for common wallets, but understanding the path system helps when recovering altcoins, non-standard wallets, or when you need to tune performance.

Default behaviour

By default, seedrecover.py checks the first account of each address type on all common derivation paths for the selected coin. For BIP39 wallets with no coin specified, it defaults to Bitcoin paths. All derivation path lists live in the derivationpath-lists/ folder of the repository. You can edit them to add or remove paths — removing paths you know are irrelevant improves search speed.

Selecting a coin with --wallet-type

Pass --wallet-type to tell seedrecover.py which coin and derivation standard to use:
python seedrecover.py --wallet-type bip39 --addrs bc1q... --mnemonic "..."
python seedrecover.py --wallet-type eth --addrs 0x... --mnemonic "..."
python seedrecover.py --wallet-type cardano --addrs addr1q... --mnemonic "..."
Common --wallet-type values: bip39, electrum2, electrum1, eth, cardano, dash, ltc, xrp, vtc, dgb, grs, zil, tron, xlm, helium, stacks, polkadotsubstrate, elrond, aezeed, ethereumvalidator, hederaed25519, slip39.

Checking multiple paths: --pathlist

Use --pathlist to search several derivation paths at once. Point it at any of the text files in derivationpath-lists/:
python seedrecover.py --wallet-type bip39 \
  --addrs bc1q... \
  --mnemonic "..." \
  --pathlist ./derivationpath-lists/BTC.txt
You can also pass a custom path directly with --bip32-path:
python seedrecover.py --wallet-type bip39 \
  --addrs 1... \
  --mnemonic "..." \
  --bip32-path "m/44'/0'/0'/0"
To use the second account instead of the first, increment the account index. For example, m/44'/0'/1'/0 checks the second Bitcoin Legacy account.

Derivation paths by coin

Bitcoin (--wallet-type bip39)

PathStandardAddress format
m/44'/0'/0'/0BIP44Legacy (1...)
m/49'/0'/0'/0BIP49P2SH SegWit (3...)
m/84'/0'/0'/0BIP84Native SegWit (bc1q...)
m/86'/0'/0'/0BIP86Taproot (bc1p...)
m/0'/0BRD / older walletsLegacy

Electrum (--wallet-type electrum2)

PathNotes
m/0Electrum legacy wallets (BTC and alts)
m/0'/0Electrum SegWit wallets; also Legacy 2FA keystore 1

Bitcoin Cash (--wallet-type bip39 with BCH paths)

PathNotes
m/44'/0'/0'/0BIP44 pre-fork addresses
m/44'/145'/0'/0BIP44 post-fork BCH addresses

Ethereum (--wallet-type eth)

PathNotes
m/44'/60'/0'Coinomi and Ledger Legacy
m/44'/60'/0'/0MEW, Trezor, MetaMask, Binance Smart Chain
m/44'/1'/0'/0Trezor testnets (selectable in MetaMask)

Cardano (--wallet-type cardano)

Cardano derivation differs significantly between wallet vendors. BTCRecover checks all three Shelley derivation types by default, which can have a noticeable performance impact. If you know which wallet generated the seed, disable the other two types in derivationpath-lists/ADA.txt.
Path prefixDerivation typeUsed by
icarus:1852'/1815'/0'IcarusAdalite, Yoroi, Daedalus, Atomic, Ellipal, Trezor T (< 24 words)
ledger:1852'/1815'/0'LedgerAdalite and Yoroi with Ledger Nano
trezor:1852'/1815'/0'TrezorAdalite and Yoroi with Trezor T (24-word seeds only)
Only Shelley-era addresses are supported. Byron-era addresses are not currently supported.

Dash (--wallet-type dash)

PathNotes
m/44'/5'/0'/0Default BIP44 P2PKH

Litecoin (--wallet-type ltc)

PathStandardAddress format
m/44'/2'/0'/0BIP44Legacy (L...)
m/49'/2'/0'/0BIP49P2SH SegWit (M...)
m/84'/2'/0'/0BIP84Native SegWit (ltc1...)
m/44'/60'/0'/0Atomic Wallet non-standard

Ripple (--wallet-type xrp)

PathNotes
m/44'/144'/0'/0BIP44 legacy

Vertcoin (--wallet-type vtc)

PathStandard
m/44'/28'/0'/0BIP44
m/49'/28'/0'/0BIP49
m/84'/28'/0'/0BIP84

DigiByte (--wallet-type dgb)

PathStandard
m/44'/20'/0'/0BIP44
m/49'/20'/0'/0BIP49
m/84'/20'/0'/0BIP84

Groestlcoin (--wallet-type grs)

PathStandard
m/44'/17'/0'/0BIP44
m/49'/17'/0'/0BIP49
m/84'/17'/0'/0BIP84

Monacoin

PathStandard
m/44'/22'/0'/0BIP44
m/49'/22'/0'/0BIP49
m/84'/22'/0'/0BIP84

Zilliqa (--wallet-type zil)

PathNotes
m/44'/313'/0'/0Used by Zillet and Atomic Wallet (not Ledger Nano)

Dogecoin

PathNotes
m/44'/3'/0'/0BIP44 legacy

Hedera Ed25519 (--wallet-type hederaed25519)

PathNotes
m/44'/3030'/0'/0'HIP-32 compliant default

SLIP39 support

SLIP39 (Shamir’s Secret Sharing) is used by the Trezor T. Pass --slip39 to put seedrecover.py in SLIP39 share recovery mode:
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
SLIP39 seed recovery (not just share repair) is supported for: Bitcoin, Bitcoin Cash, Dash, DigiByte, Dogecoin, Ethereum, Litecoin, Ripple, and Vertcoin.

Custom derivation paths for unsupported coins

If your coin shares an address format with a supported coin, you can attempt recovery by specifying a custom path:
python seedrecover.py --wallet-type bip39 \
  --addrs YOUR_ADDRESS \
  --mnemonic "..." \
  --bip32-path "m/44'/COIN_TYPE'/0'/0"
Sharing an address format does not guarantee that a coin uses the same derivation function. Custom path recovery is best-effort for unsupported coins.
If you want full support added for a coin not listed above, test it, then submit a pull request with a unit test and any required address-handling code.

Seed recovery overview

How seedrecover.py works and what you need to start

Address database

Recover seeds without a known address or xpub

Build docs developers (and LLMs) love