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.

Quick load:
Encode to Base58
Enter text to encode...
Decode from Base58
Enter Base58 to decode...

Base58 Variants

VariantAlphabetMissing CharsUsed In
Bitcoin (BTC)123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz0, O, I, lBitcoin addresses, WIF private keys
Ripple (XRP)rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxy0, O, I, l, +, /Ripple account IDs, transactions
Flickr123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ0, O, I, lFlickr short URLs

Related Tools

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.