Same mnemonic + different passphrase → completely different wallet. Any string is valid — there is no wrong passphrase, only wrong remembering. If you lose it, you lose the wallet permanently.
Security: This page runs locally in your browser. Never paste a real seed on a networked device you do not trust. For experimentation only.
How encoding works here: All BIP32 keys via ethers.js (loaded once as UMD). EVM / Tron: ethers Wallet + Keccak-256. Bitcoin-family (0/2/3): pure JS using only ethers primitives — sha256, ripemd160, computePublicKey + inline Bech32 — no bitcoinjs-lib, no CDN class bugs. Solana (501): SLIP-0010 via ed25519-hd-key + TweetNaCl global. Brain Wallet uses crypto.subtle, which works on any HTTPS page — Cloudflare Pages provides HTTPS automatically. Only fails when opened as a local file:// URL.
Brute-forces random secp256k1 keypairs until an address matches your pattern. Runs on the main thread in small batches — UI stays responsive, works 100% offline (no CDN needed).
Difficulty grows exponentially: Each extra hex character takes ~16× longer. A 4-char prefix like 0xcafe averages ~65,000 tries; a 6-char prefix averages ~16 million. The key is cryptographically random — as secure as any other key.
Brain wallets are always unsafe for real money. Attackers precompute hashes of billions of phrases: quotes, lyrics, passwords, Bible verses, Wikipedia sentences. Funds on brain wallets are routinely stolen within hours. Even a "strong" passphrase has far less entropy than 12 random BIP39 words.
Use the Derive Keys tab for real wallets. This tab exists solely to demonstrate cryptographic concepts.
Adds another layer: the mnemonic is always the same SHA-256 output, but this extra word changes every derived key.
This is a single static page you can drop on Cloudflare Pages or any HTTPS host. Everything runs in the visitor’s browser: mnemonics never leave the device unless you copy them. The Derive tab turns a BIP39 phrase + path into addresses using known standards; Vanity searches for EVM prefixes in a worker; Brain wallet demonstrates why human-chosen entropy is unsafe.
Stack (CDN): ethers v5 (UMD — all BIP32 + UTXO crypto); ed25519-hd-key + tweetnacl (Solana); qrcode. UTXO chains use zero extra libraries — pure inline Bech32 + ethers primitives. Theme stored in localStorage. Download button saves the full page for offline / air-gapped use.
Each row is a common convention. Your wallet might use a different path for recovery—always check its docs.
| Blockchain | Derivation path | Coin type | Notes |
|---|---|---|---|
| Ethereum | m/44'/60'/0'/0/0 | 60 | MetaMask, Trust Wallet, most EVM “account 0” |
| Bitcoin (Native SegWit) | m/84'/0'/0'/0/0 | 0 | bc1q… addresses (BIP84) |
| Bitcoin (Wrapped SegWit) | m/49'/0'/0'/0/0 | 0 | 3… nested SegWit (BIP49) |
| Bitcoin (Legacy) | m/44'/0'/0'/0/0 | 0 | 1… P2PKH (BIP44) |
| Bitcoin (Taproot) | m/86'/0'/0'/0/0 | 0 | bc1p… (BIP86) — experimental on some altcoins |
| Solana | m/44'/501'/0'/0' | 501 | Phantom / Solflare-style; Ed25519 not secp256k1 |
| Polygon | m/44'/60'/0'/0/0 | 60 | Same as Ethereum (EVM) |
| BSC | m/44'/60'/0'/0/0 | 60 | Same as Ethereum (EVM) |
| Avalanche C-Chain | m/44'/60'/0'/0/0 | 60 | Same as Ethereum (EVM) |
| Tron | m/44'/195'/0'/0/0 | 195 | TronLink-style; secp256k1, Base58 T… address |
| Arbitrum | m/44'/60'/0'/0/0 | 60 | Same as Ethereum (EVM) |
| Optimism | m/44'/60'/0'/0/0 | 60 | Same as Ethereum (EVM) |
| Litecoin | m/44'/2'/0'/0/0 | 2 | Legacy; use purpose 84/49 for SegWit-style LTC |
| Dogecoin | m/44'/3'/0'/0/0 | 3 | Legacy-style; SegWit less universal on DOGE |
| Bitcoin Cash | m/44'/145'/0'/0/0 | 145 | Not modeled in this tool — would need BCH params |
| Cardano | m/1852'/1815'/0'/0/0 | 1815 | CIP-1852; different from BIP44-only wallets |
coin_type = 60 — the same key yields the same 0x… address on Ethereum, Polygon, BSC, etc. (you still pay gas on the chain you use).A path is a route through a tree of keys. The usual BIP44 layout:
Solana in this tool: m / purpose′ / 501′ / account′ / index′ — the extra hardened level replaces “change / index” so Phantom’s first account matches account=0, index=0 in the form.
| Level | Symbol | Meaning | Example values |
|---|---|---|---|
| Master | m | Root of the HD tree | Always m |
| Purpose | 44′ | Which BIP “family” | 44, 49, 84, 86… |
| Coin type | 60′ | Registered coin index (SLIP-0044) | 0 BTC, 60 ETH, 501 SOL… |
| Account | 0′ | Separate accounts | 0, 1, 2… |
| Change | 0 | External (0) vs internal change (1) for UTXO | 0 or 1 — ignored for Solana in this UI |
| Address index | 0 | Nth address in that chain | 0, 1, 2… — for SOL, this field is the last hardened index |
The apostrophe (′) means hardened: child keys require the parent private key, not just an xpub.
| Type | Security / UX | Typical use |
|---|---|---|
Hardened (′) | Higher isolation; cannot derive from watch-only parent | purpose, coin_type, account — and Solana’s last segment here |
| Normal | Derivable from xpub — good for receiving addresses | change + index on Bitcoin-like chains |
Often increments the final address_index (not account):
m/44'/60'/0'/0/0
m/44'/60'/0'/0/1
m/44'/60'/0'/0/2
Bump account for separation:
m/44'/60'/0'/0/0
m/44'/60'/1'/0/0
Because EVM chains use coin type 60, the same path gives the same 0x address on many networks — but balances and contracts differ per chain.
Coin type 195 and path like m/44'/195'/0'/0/0 give a secp256k1 key. The Keccak-256 of the uncompressed public key (same idea as Ethereum) becomes the 20-byte payload, but Tron shows it as a Base58Check string starting with T, not 0x.