Base58 Encoder / Decoder
Encode text or hex to Base58 and decode Base58 back to text. Supports Bitcoin (BTC), Ripple (XRP), and Flickr Base58 alphabets. All computation in-browser.
Base58 Variants
| Variant | Alphabet | Missing Chars | Used In |
|---|---|---|---|
| Bitcoin (BTC) | 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz | 0, O, I, l | Bitcoin addresses, WIF private keys |
| Ripple (XRP) | rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxy | 0, O, I, l, +, / | Ripple account IDs, transactions |
| Flickr | 123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ | 0, O, I, l | Flickr short URLs |
Related Tools
- Base64 Encoder/Decoder — Encode/decode Base64 with three variants
- Hash Digest Calculator — MD5, SHA-1, SHA-256, SHA-512, SM3
- CRC Calculator — CRC-8/16/32/64 with 17 variants
- Hex Converter — Hex to decimal, binary, ASCII
What is Base58?
Base58 is a binary-to-text encoding scheme designed for human-readable representation of binary data. It was originally created by Satoshi Nakamoto for Bitcoin addresses to avoid visually ambiguous characters — the zero (0), capital O (O), capital I (I), and lowercase l (l) that are easily confused in many fonts. Base58 also avoids the + and / characters used in Base64, which can cause issues in URLs and file names.
How Base58 Works
Base58 encoding works similarly to Base64 but uses a 58-character alphabet instead of 64. The input bytes are treated as a large big-endian number and repeatedly divided by 58. Each remainder maps to a character in the alphabet. Leading zero bytes in the input are preserved as leading "1" characters (in Bitcoin's alphabet), ensuring that the encoding is reversible. This is similar to how Base64 handles padding but without explicit padding characters.
Base58Check: Adding Error Detection
Bitcoin uses Base58Check, which appends a 4-byte SHA-256 double-hash checksum to the data before encoding. This allows wallets to detect typped addresses with 99.9999999% accuracy — any single-character error or transposition will produce an invalid checksum. The checksum is calculated as SHA256(SHA256(data))[0:4]. When decoding, the tool verifies the checksum and rejects invalid data, preventing users from sending funds to mistyped addresses.
Bitcoin Address Format
A Bitcoin address is a 25-byte payload encoded in Base58Check: a 1-byte version byte (0x00 for mainnet P2PKH, 0x6f for testnet), a 20-byte RIPEMD-160 hash of the SHA-256 hash of the public key, and a 4-byte checksum. The result is a 26-35 character string starting with "1" (mainnet P2PKH), "3" (P2SH), or "bc1" (Bech32, not Base58). For example, 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa is the genesis block address.
Ripple's Base58 Variant
Ripple uses a different Base58 alphabet (starting with "rpshnaf39wB...") for encoding account IDs and transaction hashes. The encoding logic is identical to Bitcoin's Base58, but the character mapping is permuted. Ripple addresses are 25-35 characters and start with "r". The different alphabet was chosen to avoid characters that might be filtered by email systems or URL parsers.
When to Use Base58
Base58 is ideal when you need to display binary data in a compact, human-readable format that is easy to type, read over the phone, or include in URLs. Common use cases include cryptocurrency addresses, API keys, short URL identifiers (Flickr), and seed phrases. Base58 is not recommended for large data encoding — it is about 25% less efficient than Base64 in terms of output size. For large payloads, use Base64 or hexadecimal encoding instead.