BIP 39 — Mnemonic Code for Generating Deterministic Keys

BIP 39: Mnemonic Code for Generating Deterministic Keys

Authors: Marek Palatinus (slush), Pavol Rusnak, Aaron Voisine, Sean Bowe Status: Proposed Type: Standards Track Created: 2013-09-10

Abstract

BIP 39 describes the implementation of a mnemonic code (a sequence of common English words) for the generation of deterministic wallets. A mnemonic sentence is easier for humans to write down and remember than raw binary or hexadecimal data.

How It Works

  1. Generate entropy — 128 to 256 bits of random data
  2. Compute checksum — SHA-256 hash, take first few bits
  3. Split into groups — Divide entropy + checksum into 11-bit groups
  4. Map to words — Each 11-bit value maps to one of 2048 words

Entropy to word count:

  • 128 bits → 12 words
  • 160 bits → 15 words
  • 192 bits → 18 words
  • 224 bits → 21 words
  • 256 bits → 24 words

Example

A 12-word mnemonic might look like:

abandon ability able about above absent absorb abstract absurd abuse access accident

From Mnemonic to Seed

The mnemonic sentence is converted to a 512-bit seed using PBKDF2-HMAC-SHA512 with 2048 iterations. An optional passphrase provides additional security. This seed is then used by BIP 32 to derive the HD wallet tree.

Significance

BIP 39 made Bitcoin self-custody practical for ordinary users. The “write down these 12/24 words” onboarding flow became universal across virtually all cryptocurrency wallets. Despite never reaching “Final” status (due to objections from some Bitcoin Core developers about the wordlist coupling), BIP 39 became one of the most widely adopted standards in cryptocurrency.

The authors, Marek Palatinus (known as “slush,” founder of Slush Pool — the first Bitcoin mining pool) and Pavol Rusnak, were also co-founders of SatoshiLabs, the company behind the Trezor hardware wallet.