Skip to main content
BTCRecover supports password recovery for a wide range of Bitcoin and altcoin wallets. Use btcrecover.py for all wallet file password recovery and BIP39 passphrase recovery.
WalletNotes
Bitcoin CoreFull wallet.dat password recovery
MultiBit HDBIP32/39 compliant
MultiBit ClassicLegacy format
Electrum 1.x, 2.x, 3.x, 4.xLegacy and Segwit wallets. Use --bip32-path "m/0'/0" for Segwit; leave blank for Legacy. 2FA wallets are not supported.
mSIGNA (CoinVault)Full password recovery
Blockchain.comMain password and second password
block.ioRecovery of wallet “Secret PIN”
btc.com (blocktrail)Recovery of wallet password to decrypt PDF backup sheets
pywallet —dumpwalletBitcoin Unlimited / Classic / XT / Core wallet dumps
Bitcoin Wallet for Android / BlackBerrySpending PINs and encrypted backups
KnC Wallet for AndroidEncrypted backups
BitherFull password recovery
Hive for OS XBased on bitcoinj
Most bitcoinj-based walletsIncluding Hive for Android and Breadwallet
For Electrum wallets, a single --no-dupchecks flag is often helpful since duplicate checking can decrease CPU efficiency with this wallet type.
WalletNotes
Litecoin CoreFull password recovery
Electrum-LTCLegacy and Segwit. Use --bip32-path "m/0'/0" for Segwit; 2FA not supported.
Electron-Cash 2.x, 3.x, 4.xBitcoin Cash
Litecoin Wallet for AndroidEncrypted backups
Dogecoin CoreFull password recovery
MultiDogeFull password recovery
Dogechain.infoUse extract script for secure offline recovery
Dogecoin Wallet for AndroidEncrypted backups
Yoroi Wallet for Cardanomaster_passwords extracted from wallet data (browser or rooted/jailbroken devices)
Ethereum UTC Keystore FilesUsed by MyEtherWallet, MyCrypto, and ETH-clone wallets such as Theta
Damaged raw ETH private keysIndividual private keys with missing characters
ToastwalletToastwallet passphrase recovery
WalletNotes
Blockchain.comMain password and second password; GPU accelerated
CoinomiOnly supports password-protected wallets
imTokenKeystore file recovery
MetamaskAnd Metamask clones: Binance Chain Wallet, Ronin Wallet, etc.
block.ioRecovery of wallet “Secret PIN”
Dogechain.infoWallet file recovery; extract script available
Bitgo KeyCard User KeyKeycard-based recovery
For Blockchain.com wallets you can use an extract script to run recovery on untrusted hardware without exposing your full wallet data.
BIP39 passphrase recovery works by testing candidate passphrases against a known address derived from your seed. Every valid BIP39 passphrase produces a wallet — there is no “wrong passphrase” error — so you must supply at least one known address via --addrs.Supported hardware wallets
  • Trezor One and T
  • Ledger Nano S and X
  • Keepkey
  • Coldcard
  • Bitbox02
  • Cobo Vault Pro
Supported software wallets (BIP39 passphrase)
  • Wasabi Wallet (calls it “wallet password”)
  • Samourai Wallet
  • Coinomi
  • Mycelium
  • Exodus
  • Electrum (“Extra Word”)
  • Zillet (calls it “password based” wallet)
Example — Bitcoin BIP39 passphrase
python btcrecover.py --bip39 \
  --addrs 1AmugMgC6pBbJGYuYmuRrEpQVB9BBMvCCn \
  --addr-limit 10 \
  --passwordlist ./docs/Usage_Examples/common_passwordlist.txt \
  --mnemonic "certain come keen collect slab gauge photo inside mechanic deny leader drop"
Example — Ethereum BIP39 passphrase
python btcrecover.py --wallet-type ethereum \
  --addrs 0x4daE22510CE2fE1BC81B97b31350Faf07c0A80D2 \
  --addr-limit 10 \
  --passwordlist ./docs/Usage_Examples/common_passwordlist.txt \
  --mnemonic "cable top mango offer mule air lounge refuse stove text cattle opera"
GPU acceleration is available for BIP39 seed recovery but not for BIP39 passphrase recovery. Each passphrase candidate requires a full derivation path traversal, which does not parallelize as efficiently on GPU.
SLIP39 (Shamir’s Secret Sharing) passphrase recovery is supported for most coins available on the Trezor T. You need a quorum of SLIP39 shares to perform passphrase recovery.Syntax — Bitcoin
python btcrecover.py --slip39 \
  --addrs bc1q76szkxz4cta5p5s66muskvads0nhwe5m5w07pq \
  --addr-limit 10 \
  --passwordlist ./docs/Usage_Examples/common_passwordlist.txt \
  --slip39-shares \
    "hearing echo academic acid deny bracelet playoff exact fancy various evidence standard adjust muscle parcel sled crucial amazing mansion losing" \
    "hearing echo academic agency deliver join grant laden index depart deadline starting duration loud crystal bulge gasoline injury tofu together"
Syntax — Ethereum
python btcrecover.py --slip39 --wallet-type ethereum \
  --addrs 0x0Ef61684B1E671dcBee4D51646cA6247487Ef91a \
  --addr-limit 10 \
  --passwordlist ./docs/Usage_Examples/common_passwordlist.txt \
  --slip39-shares \
    "hearing echo academic acid deny bracelet playoff exact fancy various evidence standard adjust muscle parcel sled crucial amazing mansion losing" \
    "hearing echo academic agency deliver join grant laden index depart deadline starting duration loud crystal bulge gasoline injury tofu together"
BIP38 wallets are encrypted with scrypt, making them very slow to brute-force. GPU acceleration is available but provides modest gains unless you have a high-end GPU or multiple GPUs.Supported sources
  • bitaddress.org
  • liteaddress.org
  • paper.dash.org
  • Any standard BIP38-encrypted private key
CommandsBitcoin (no --bip38-currency needed; Bitcoin is the default):
python btcrecover.py \
  --bip38-enc-privkey 6PnM7h9sBC9EMZxLVsKzpafvBN8zjKp8MZj6h9mfvYEQRMkKBTPTyWZHHx \
  --passwordlist ./docs/Usage_Examples/common_passwordlist.txt
Litecoin:
python btcrecover.py \
  --bip38-enc-privkey 6PfVHSTbgRNDaSwddBNgx2vMhMuNdiwRWjFgMGcJPb6J2pCG32SuL3vo6q \
  --bip38-currency litecoin \
  --passwordlist ./docs/Usage_Examples/common_passwordlist.txt
Dash:
python btcrecover.py \
  --bip38-enc-privkey 6PnZC9Snn1DHyvfEq9UKUmZwonqpfaWav6vRiSVNXXLUEDAuikZTxBUTEA \
  --bip38-currency dash \
  --passwordlist ./docs/Usage_Examples/common_passwordlist.txt
Brainwallets are an old and unsafe wallet format. They are documented here only for recovery purposes.
SHA256(Passphrase) brainwalletsSupported sources: bitaddress.org, segwitaddress.org, liteaddress.org, paper.dash.org.
# Bitcoin — checks both compressed and uncompressed addresses
python btcrecover.py --brainwallet \
  --addrs 1BBRWFHjFhEQc1iS6WTQCtPu2GtZvrRcwy \
  --passwordlist ./docs/Usage_Examples/common_passwordlist.txt

# Litecoin (liteaddress.org — uncompressed only)
python btcrecover.py --brainwallet \
  --addrs LfWkecD6Pe9qiymVjYENuYXcYpAWjU3mXw \
  --skip-compressed \
  --passwordlist ./docs/Usage_Examples/common_passwordlist.txt

# Dash (paper.dash.org)
python btcrecover.py --brainwallet \
  --addrs XvyeDeZAGh8Nd7fvRHZJV49eAwNvfCubvB \
  --passwordlist ./docs/Usage_Examples/common_passwordlist.txt
Warpwallet / sCrypt brainwalletsSupported: WarpWallet (keybase.io/warp), Memwallet, Mindwallet. Only Bitcoin and Litecoin are currently supported.
# Bitcoin
python btcrecover.py --warpwallet \
  --warpwallet-salt btcr-test-password \
  --addrs 1FThrDFjhSf8s1Aw2ed5U2sTrMz7HicZun \
  --passwordlist ./docs/Usage_Examples/common_passwordlist.txt

# Litecoin
python btcrecover.py --warpwallet \
  --warpwallet-salt btcr-test-password \
  --crypto litecoin \
  --addrs LeBzGzZFxRUzzRAtm8EB2Dw74jRfQqUZeq \
  --passwordlist ./docs/Usage_Examples/common_passwordlist.txt
BTCRecover can recover wallets where you have a damaged private key with missing or unknown characters. Use %H to substitute hexadecimal characters or %B to substitute base58 characters in your tokenlist.Ethereum
python btcrecover.py --rawprivatekey \
  --addrs 0xB9644424F9E639D1D0F27C4897e696CC324948BB \
  --wallet-type ethereum \
  --tokenlist ./docs/Usage_Examples/eth_privkey_tokenlist.txt
Bitcoin — uncompressed key
python btcrecover.py --rawprivatekey \
  --addrs 1EDrqbJMVwjQ2K5avN3627NcAXyWbkpGBL \
  --wallet-type bitcoin \
  --max-tokens 1 \
  --tokenlist ./docs/Usage_Examples/btc_privkey_tokenlist.txt
Bitcoin — native SegWit key
python btcrecover.py --rawprivatekey \
  --addrs bc1qafy0ftpk5teeayjaqukyd244un8gxvdk8hl5j6 \
  --wallet-type bitcoin \
  --max-tokens 1 \
  --tokenlist ./docs/Usage_Examples/btc_privkey_tokenlist.txt
Using an AddressDB instead of a known address
python btcrecover.py --rawprivatekey \
  --addressdb ./btcrecover/test/test-addressdbs/addresses-BTC-Test.db \
  --wallet-type bitcoin \
  --max-tokens 1 \
  --tokenlist ./docs/Usage_Examples/btc_privkey_tokenlist.txt

Build docs developers (and LLMs) love