Base58 Converter
Encode and decode Base58 and Base58Check strings. Verify Bitcoin address checksums and inspect version bytes and payloads.
Encode
Decode
Bitcoin Address Decoder
Paste a Bitcoin P2PKH or P2SH address to inspect version byte, hash160 payload, and checksum.
Base58 vs Base64 vs Base32
| Encoding | Alphabet size | Padding | Use Case |
|---|---|---|---|
| Base58 | 58 chars | No (leading 1s for zeros) | Bitcoin addresses, private keys, IPFS CIDv0 |
| Base58Check | 58 chars | No | Bitcoin addresses with checksum verification |
| Base64 | 64 chars (+, /, =) | Yes (= padding) | Email (MIME), HTTP Basic Auth, data URIs |
| Base32 | 32 chars (A-Z, 2-7) | Yes (= padding) | TOTP secrets, Tor hidden services, case-insensitive |
How Base58 Encoding Works
Base58 treats the input bytes as a large big-endian integer, then repeatedly divides by 58, using the remainder as an index into the 58-character alphabet (123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz). Leading zero bytes in the input are preserved as leading '1' characters (the first character of the alphabet). The result is a compact, visually unambiguous string with no padding characters.
Base58Check Structure
Base58Check adds integrity checking to Base58. The full encoding is: Base58( version_byte + payload + checksum ), where checksum = first 4 bytes of SHA256(SHA256(version_byte + payload)). For a Bitcoin P2PKH address, the payload is the 20-byte hash160 of the public key. The version byte identifies the network and address type. Decoding a Base58Check string means verifying the checksum matches before using the address.
Bitcoin Address Types and Version Bytes
Bitcoin has several address formats that all use Base58Check. P2PKH addresses (legacy '1' addresses) have version byte 0x00 and contain a 20-byte public key hash. P2SH addresses ('3' addresses, version 0x05) contain a 20-byte script hash enabling multi-sig and complex scripts. WIF (Wallet Import Format) private keys use version 0x80 for mainnet. Modern Bitcoin also supports Bech32 (bc1) addresses for SegWit, which use a different encoding entirely — not Base58.
Frequently Asked Questions
What is Base58 and why does Bitcoin use it?
Base58 is an encoding scheme that uses 58 alphanumeric characters, specifically excluding 0 (zero), O (capital o), I (capital i), and l (lowercase L) to avoid visual ambiguity when reading or transcribing. Bitcoin uses Base58 for addresses and private keys because users often need to copy them manually, and avoiding confusable characters reduces errors.
What is Base58Check?
Base58Check is Base58 with an error-detection checksum appended. The checksum is the first 4 bytes of SHA256(SHA256(payload)). This means if you mistype even one character of a Bitcoin address, the checksum will not match and a wallet will reject it before sending funds. This prevents accidental fund loss from typos.
How do I decode a Bitcoin address to get the public key hash?
Use the Bitcoin Address Decoder section. Paste the address and click Decode. The tool strips the Base58Check encoding, verifies the checksum, and shows you the version byte (which identifies the network and address type) and the 20-byte payload (hash160 = RIPEMD-160(SHA-256(public key))).
What is the version byte in a Bitcoin address?
The version byte is the first byte of the decoded address payload. 0x00 indicates a P2PKH mainnet address (starts with '1'). 0x05 indicates a P2SH mainnet address (starts with '3'). Testnet P2PKH addresses use 0x6f (start with 'm' or 'n'). WIF private keys use 0x80. This version byte tells software how to interpret the remaining payload bytes.
What is the difference between Base58 and Base64?
Base64 uses 64 characters (A-Z, a-z, 0-9, +, /) with = padding and is optimized for efficient binary-to-text encoding in systems like email (MIME) and HTTP. Base58 uses 58 characters (no padding, no ambiguous chars) and is optimized for human-readable identifiers. Base64 is more space-efficient (~33% overhead vs ~37% for Base58), while Base58 is more human-friendly.