BIP39 Generator
Generate BIP39 mnemonic seed phrases for cryptocurrency wallets
BIP39 Generator
Generate BIP39 mnemonic seed phrases for cryptocurrency wallets
SECURITY WARNING
Never share your seed phrase with anyone. Store it securely offline. Anyone with access to your seed phrase can control your crypto assets.
Generate a new seed phrase to get started
About BIP39 Mnemonic Generator
Generate cryptographically secure BIP39 mnemonic seed phrases for cryptocurrency wallets and blockchain applications. BIP39 (Bitcoin Improvement Proposal 39) defines how mnemonic phrases are generated and converted into binary seeds for deterministic wallets.
- Generate 12, 15, 18, 21, or 24-word mnemonic phrases
- Cryptographically secure entropy generation
- BIP39 standard compliant word lists
- Checksum validation for generated phrases
- Multiple language support (English, Japanese, Chinese, etc.)
How to Use BIP39 Generator
- Select Entropy - Choose your desired mnemonic length (128-256 bits)
- Choose Language - Select from available BIP39 word lists
- Generate - Create a cryptographically secure mnemonic phrase
- Verify Checksum - Validate the generated phrase integrity
- Store Securely - Save your mnemonic in a safe location
Frequently Asked Questions
How to generate BIP39 seed phrases?
Generate 128-256 bits of cryptographically secure random entropy, compute a SHA-256 checksum, append the first ENT/32 bits to the entropy, split the combined bits into 11-bit groups, and map each group to a word from the 2048-word BIP39 list. utilAZ does this client-side using the Web Crypto API.
How many words in a BIP39 seed?
BIP39 supports 12 words (128-bit entropy), 15 words (160-bit), 18 words (192-bit), 21 words (224-bit), or 24 words (256-bit). 12 words is the most common for consumer wallets while 24 words provides maximum security for high-value holdings.
BIP39 vs BIP32 explained?
BIP39 defines how to generate a human-readable mnemonic and derive a 512-bit seed from it using PBKDF2. BIP32 defines how to derive a tree of cryptographic keys from that seed using hierarchical deterministic (HD) derivation. BIP44 adds a standard path structure (m/44'/coin'/account'/change/index) on top of BIP32.
How to recover a wallet with seed phrases?
Enter your 12 or 24 words into a compatible wallet app (MetaMask, Ledger, Trezor, etc.), optionally provide your BIP39 passphrase, and the wallet re-derives all keys using PBKDF2 + BIP32 derivation. All addresses and balances are restored deterministically from the seed.
Is a 12-word seed safe?
Yes. A 12-word BIP39 mnemonic has 128 bits of entropy, meaning an attacker would need to try 2^128 (≈3.4 × 10^38) combinations. Even at 1 trillion guesses per second it would take billions of years. For most users 12 words is more than sufficient; 24 words adds margin against future quantum computing threats.
Common Use Cases
- Cryptocurrency wallet development
- Blockchain application testing
- Educational cryptocurrency projects
- Multi-signature wallet setup
- Paper wallet generation
- Deterministic key derivation
- Wallet recovery testing
- Security research and analysis
Technical Details
BIP39 Specification:
- Entropy: 128-256 bits of randomness
- Checksum: First entropy_length/32 bits of SHA256(entropy)
- Mnemonic Length: (entropy + checksum) / 11 bits per word
- Word List: 2048 unique words per language
- Seed Generation: PBKDF2 with 2048 iterations
Entropy and Security Levels
| Words | Entropy (bits) | Checksum (bits) | Security Level |
|---|---|---|---|
| 12 | 128 | 4 | 128-bit (Standard) |
| 15 | 160 | 5 | 160-bit (Enhanced) |
| 18 | 192 | 6 | 192-bit (High) |
| 21 | 224 | 7 | 224-bit (Very High) |
| 24 | 256 | 8 | 256-bit (Maximum) |
Programming Examples
Python (using mnemonic library):
from mnemonic import Mnemonic
import hashlib
import hmac
def generate_bip39_mnemonic(strength=128):
# strength can be 128, 160, 192, 224, or 256 bits
mnemo = Mnemonic("english")
mnemonic = mnemo.generate(strength=strength)
return mnemonic
def mnemonic_to_seed(mnemonic, passphrase=""):
mnemo = Mnemonic("english")
seed = mnemo.to_seed(mnemonic, passphrase)
return seed.hex()
def validate_mnemonic(mnemonic):
mnemo = Mnemonic("english")
return mnemo.check(mnemonic)
# Example usage
mnemonic = generate_bip39_mnemonic(128) # 12 words
print(f"Mnemonic: {mnemonic}")
print(f"Valid: {validate_mnemonic(mnemonic)}")
seed = mnemonic_to_seed(mnemonic)
print(f"Seed: {seed[:64]}...")
JavaScript (using bip39 library):
const bip39 = require('bip39');
function generateMnemonic(strength = 128) {
// Generate mnemonic with specified entropy strength
const mnemonic = bip39.generateMnemonic(strength);
return mnemonic;
}
function mnemonicToSeed(mnemonic, password = '') {
// Convert mnemonic to seed
const seed = bip39.mnemonicToSeedSync(mnemonic, password);
return seed.toString('hex');
}
function validateMnemonic(mnemonic) {
// Validate BIP39 mnemonic
return bip39.validateMnemonic(mnemonic);
}
// Example usage
const mnemonic = generateMnemonic(256); // 24 words
console.log('Mnemonic:', mnemonic);
console.log('Valid:', validateMnemonic(mnemonic));
const seed = mnemonicToSeed(mnemonic);
console.log('Seed:', seed.substring(0, 64) + '...');
