About the Base58 Encode/Decode
Base58 writes binary data with 58 characters: the digits and letters without 0, O, I and l, which look alike, and without + and /, so that a double click selects the whole value. Unlike Base64 it does not work on groups of bits: the bytes are read as one big number that is written in base 58, and every leading zero byte becomes the first character of the alphabet (1 for Bitcoin). Hello World! encodes to 2NEpo7TZRRrLZSi2U.
The three alphabets hold the same characters in a different order, so a value must be decoded with the alphabet that encoded it. Bitcoin (123…ABC…abc…) is also used by IPFS CIDv0, Solana and most other projects. Ripple starts with r, which is why XRP Ledger addresses do. Flickr puts the lower-case letters before the upper-case ones, for its short photo URLs.
Base58Check protects a value against typing errors: the first 4 bytes of SHA-256(SHA-256(data)) are appended before encoding. The data starts with a version byte that tells what it is — 0x00 for a Bitcoin P2PKH address, 0x05 for P2SH, 0x80 for a WIF private key. When decoding, the tool recomputes the checksum with the Web Crypto API and shows the version byte and the payload in hexadecimal. Never paste a private key that holds real funds into an online tool.
How to use it
- Choose Encode or Decode, and the alphabet.
- Set “Data is” to UTF-8 text or Hex bytes.
- Tick Base58Check to append (encode) or verify and strip (decode) the checksum.
- Read the version byte and the payload in the Details box, and copy the result.
Frequently asked questions
Why is there no fixed ratio between input and output length?
The checksum does not match. What does that mean?
Can I decode a Bitcoin address starting with bc1?
bc1 are SegWit addresses in Bech32 or Bech32m, a different encoding. Base58Check addresses start with 1 or 3.