Base58 Encoder/Decoder
Convert between plain text and Base58 encoded strings with this simple tool. Essential for working with blockchain addresses and other applications requiring compact, human-readable encoded data.
Base58 Encoder/Decoder
Operation Mode
Text to encode to Base58
Base58 encoded result
Typical Use Cases
- Bitcoin and cryptocurrency addresses
- Encoding data where similar-looking characters need to be avoided
- IPFS content identifiers (CIDs)
- Creating human-readable identifiers that are shorter than Base64
- Blockchain and distributed systems data encoding
About Base58
- Base58 Encoding: Similar to Base64 but omits similar-looking characters (0, O, I, l) and non-alphanumeric characters
- Character Set: 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
- Benefits: Human-readable, eliminates visual ambiguity, avoids special characters that may cause issues in URLs or file systems
- Common Implementations: Bitcoin addresses, IPFS CIDs, Flickr short URLs
Base58 vs Other Encodings
Base58 vs Base64:
- Base58 omits 6 characters: 0, O, I, l, +, /
- Base58 is more compact for certain data types
- Base58 is more human-readable and error-resistant
- Base64 is more widespread and standardized
Base58 vs Hexadecimal:
- Base58 produces shorter output (33% more compact)
- Hex is simpler to implement and more widely supported
- Base58 avoids visual ambiguity between characters
Base58 in Cryptocurrencies
Base58 encoding is commonly used in cryptocurrencies for creating human-readable addresses and identifiers:
Bitcoin (Base58Check)
Bitcoin uses an extension called Base58Check which includes checksum verification to prevent typos:
1. Add version byte prefix to data
2. Calculate double SHA-256 checksum
3. Append 4 bytes of checksum
4. Encode resulting bytes with Base58
Example: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
(first Bitcoin address ever)
Other Implementations
- Ripple: Addresses begin with 'r'
- Monero: Uses Base58 for addresses
- IPFS: Content identifiers use multibase prefixed Base58
- Flickr: Short URLs for photo identifiers
Code Example
JavaScript (with bs58 library)
// npm install bs58
const bs58 = require('bs58')
// Encoding to Base58
const bytes = Buffer.from('Hello World')
const encoded = bs58.encode(bytes)
console.log(encoded)
// Outputs: 'JxF12TrwUP45BMd'
// Decoding from Base58
const decoded = bs58.decode('JxF12TrwUP45BMd')
console.log(decoded.toString())
// Outputs: 'Hello World'
Python (with base58 library)
# pip install base58
import base58
# Encoding to Base58
encoded = base58.b58encode(b'Hello World')
print(encoded.decode())
# Outputs: 'JxF12TrwUP45BMd'
# Decoding from Base58
decoded = base58.b58decode(b'JxF12TrwUP45BMd')
print(decoded.decode())
# Outputs: 'Hello World'