HD Wallet Derivation Playground

BIP39 · BIP32 · BIP44 / 49 / 84 / 86 — multi-chain addresses in your browser
Step 1: Seed phrase BIP39

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.

Step 2: Presets
Step 3: Custom path BIP44
Derivation path
m/44'/60'/0'/0/0
Step 4: Results
Address
Run Derive to generate
Private key
Public key

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.

Vanity address miner EVM · fully offline

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).

Attempts: 0

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.

Critical security warning — read this

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.

Brain wallet demo SHA-256 → BIP39 → multi-chain

Adds another layer: the mnemonic is always the same SHA-256 output, but this extra word changes every derived key.

What this toolkit does

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.

Blockchain derivation reference

Each row is a common convention. Your wallet might use a different path for recovery—always check its docs.

BlockchainDerivation pathCoin typeNotes
Ethereumm/44'/60'/0'/0/060MetaMask, Trust Wallet, most EVM “account 0”
Bitcoin (Native SegWit)m/84'/0'/0'/0/00bc1q… addresses (BIP84)
Bitcoin (Wrapped SegWit)m/49'/0'/0'/0/003… nested SegWit (BIP49)
Bitcoin (Legacy)m/44'/0'/0'/0/001… P2PKH (BIP44)
Bitcoin (Taproot)m/86'/0'/0'/0/00bc1p… (BIP86) — experimental on some altcoins
Solanam/44'/501'/0'/0'501Phantom / Solflare-style; Ed25519 not secp256k1
Polygonm/44'/60'/0'/0/060Same as Ethereum (EVM)
BSCm/44'/60'/0'/0/060Same as Ethereum (EVM)
Avalanche C-Chainm/44'/60'/0'/0/060Same as Ethereum (EVM)
Tronm/44'/195'/0'/0/0195TronLink-style; secp256k1, Base58 T… address
Arbitrumm/44'/60'/0'/0/060Same as Ethereum (EVM)
Optimismm/44'/60'/0'/0/060Same as Ethereum (EVM)
Litecoinm/44'/2'/0'/0/02Legacy; use purpose 84/49 for SegWit-style LTC
Dogecoinm/44'/3'/0'/0/03Legacy-style; SegWit less universal on DOGE
Bitcoin Cashm/44'/145'/0'/0/0145Not modeled in this tool — would need BCH params
Cardanom/1852'/1815'/0'/0/01815CIP-1852; different from BIP44-only wallets
Key observations
  • All EVM chains share 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).
  • Bitcoin changes the purpose number (44 / 49 / 84 / 86) to pick address type, not just coin type.
  • Solana uses Ed25519 derivation (SLIP-0010). You cannot get a Solana address by plugging the same path into a raw secp256k1-only helper.
  • Non-standard paths are valid mathematically but wallets may not scan them — backup risk.
Understanding derivation paths

A path is a route through a tree of keys. The usual BIP44 layout:

m / purpose′ / coin_type′ / account′ / change / address_index

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.

Path structure breakdown
LevelSymbolMeaningExample values
MastermRoot of the HD treeAlways m
Purpose44′Which BIP “family”44, 49, 84, 86…
Coin type60′Registered coin index (SLIP-0044)0 BTC, 60 ETH, 501 SOL…
Account0′Separate accounts0, 1, 2…
Change0External (0) vs internal change (1) for UTXO0 or 1 — ignored for Solana in this UI
Address index0Nth address in that chain0, 1, 2… — for SOL, this field is the last hardened index
Hardened vs normal derivation

The apostrophe () means hardened: child keys require the parent private key, not just an xpub.

TypeSecurity / UXTypical use
Hardened ()Higher isolation; cannot derive from watch-only parentpurpose, coin_type, account — and Solana’s last segment here
NormalDerivable from xpub — good for receiving addresseschange + index on Bitcoin-like chains
Common scenarios
MetaMask “Account 1, 2, 3…”

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
Multiple “wallets” from one seed

Bump account for separation:

m/44'/60'/0'/0/0 m/44'/60'/1'/0/0
Same EVM address everywhere

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.

Tron uses the same curve, not the same display

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.

Important notes
  • Same seed + same path ⇒ same keys (deterministic).
  • Losing the path can mean losing access even if you keep the words.
  • Compare any result against a second tool or a test wallet before mainnet use.