Base58

Base58Check, legacy addresses

The text encoding Bitcoin uses for legacy addresses, WIF keys, and extended keys. Base58Check adds version bytes and a checksum.

Base58 is the compact text encoding Bitcoin uses for older address and key formats. It avoids visually similar characters such as 0, O, I, and l, which makes long strings easier to read, copy, and transcribe.

Bitcoin rarely uses plain Base58 on its own. Most user-facing strings use Base58Check, which prepends a version byte, appends a four-byte checksum, and then encodes the result in Base58. That extra structure lets software distinguish between different payloads and catch many typing mistakes before funds move.

Legacy P2PKH and P2SH addresses are Base58Check strings, which is why they often start with 1 or 3 on mainnet. WIF private keys also use Base58Check, and BIP 32 extended keys such as xpubs and xprvs use the same family of encodings with different version bytes.

Newer output types use different address encodings. Native SegWit and Taproot addresses use Bech32 or Bech32m instead, which were designed specifically for witness outputs.

References