Base58Check is the encoding behind Bitcoin addresses and WIF private keys. It wraps a raw payload with a built-in error-detecting checksum so that a single mistyped character makes the whole string invalid rather than silently pointing somewhere else. This tool takes a hex payload and produces the exact Base58Check string.
How it works
Encoding happens in two stages. First the checksum:
hash = SHA256(SHA256(payload))
checksum = hash[0..4] (first 4 bytes)
extended = payload || checksum
Then the extended byte array is converted to Base58 using the Bitcoin
alphabet 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz. The
conversion is repeated division of the big integer by 58, and every leading
0x00 byte is emitted as a leading 1.
Example and notes
The payload 00010966776006953d5567439e5e39f86a0d273bee (a version byte plus a
20-byte public-key hash) encodes to 16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM, the
canonical worked example from the Bitcoin wiki. To build a mainnet address,
prefix a RIPEMD160(SHA256(pubkey)) hash with the version byte 0x00; for a
WIF private key use version 0x80. The leading 1 you see in the output comes
directly from that 0x00 version byte.