BITCOIN MAINNETLive explorer status
OWNERSHIP

Base58Check encoding

Base58Check writes data using 58 easy-to-read characters plus a 4-byte checksum that catches typos. Learn how legacy addresses and WIF keys are built.

Why 58 characters?

Satoshi took the 62 letters and digits and removed four that look alike: 0 (zero), O (capital o), I (capital i) and l (lowercase L). What's left is 58 characters that are hard to misread.

The steps

Building a Base58Check addressVersion byte00 = P2PKH+ payload20-byte hashChecksumfirst 4 bytesof HASH256Base58encode it all
Building a Base58Check address
  1. Start with a version byte (00 for P2PKH, 05 for P2SH, 80 for private keys in WIF).
  2. Add the payload, for example a 20-byte HASH160.
  3. Compute HASH256 of that and append its first 4 bytes as a checksum.
  4. Convert the whole thing to base 58. Each leading 00 byte becomes a leading 1.

Why the checksum matters

Mistype one character and the checksum won't match, so a wallet refuses to send. The chance that a random typo passes is about 1 in 4 billion.

The alphabet

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

Notice what's missing: 0, O, I and l.

Version bytes and prefixes

Version byteStarts withUsed for
0x001P2PKH addresses
0x053P2SH addresses
0x805, K or LWIF private keys
0x0488B21ExpubExtended public keys
Share this guide
Share on X ↗

Key takeaways

  • Base58 removes look-alike characters 0, O, I and l.
  • A version byte sets the type; a 4-byte checksum catches typos.
  • Leading zero bytes become leading 1s, which is why P2PKH addresses start with 1.

Common questions

Why do legacy addresses start with 1?

Their version byte is 00, and each leading zero byte encodes as the character 1.

Is Base58 still used?

For legacy and P2SH addresses, WIF keys and extended keys (xpub, xprv).

Are Base58 addresses case sensitive?

Yes. Changing the case of a letter changes the address and breaks the checksum.

Why didn't Satoshi use Base64?

Base64 includes look-alike characters and symbols like + and / that break when double-clicking or in URLs.