Base58 Encode / Decode
Encode to Base58 (Bitcoin wallet format) or decode back. Strips ambiguous characters (0, O, I, l) for readability.
How to use the Base58 Encode / Decode
Choose Encode or Decode.
Paste your text or a Base58 string.
Copy the result.
What is Base58, and why did Bitcoin invent yet another encoding?
Base58 was designed by Bitcoin's creator specifically to fix the readability problems of Base64: it drops the digit 0, the letter O, the uppercase I, and the lowercase l (all of which look nearly identical in many fonts), and also drops + and / since those can render oddly or get mangled by double-clicking to select text. What's left is 58 characters — 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz — chosen so a wallet address or private key can be read aloud, written on paper, or typed without a single-character transcription turning into a different valid-looking address. The encoding itself treats the input as one large number and repeatedly divides by 58, which is why leading zero bytes need special handling: each leading 0x00 byte becomes a leading '1' character rather than disappearing, preserving the byte length information a naive big-number encoding would lose. One caveat worth knowing: real Bitcoin addresses use Base58Check, which adds a 4-byte checksum before Base58-encoding — this tool performs plain Base58 encode/decode without checksum validation, so it will happily decode any Base58 string without complaint about whether it's a valid, uncorrupted address.
For a step-by-step walkthrough, read our guide: Base58 Encoding Explained: Bitcoin Addresses, IPFS & Why Ambiguous Characters Are Removed.
Key features
- Encode and decode text to/from Base58
- Uses the standard Bitcoin alphabet (no 0/O/I/l ambiguity)
- Correctly preserves leading zero bytes as leading '1' characters
- Runs locally — nothing is uploaded
Frequently asked questions
Why does Base58 exist when Base64 already works?
Base58 removes characters that are visually ambiguous (0/O, 1/I/l) and symbols that can be mangled by double-click text selection (+, /) — Bitcoin needed addresses that survive being handwritten, read aloud, or retyped without one wrong character producing a different valid-looking address.
Can I decode a real Bitcoin address with this?
It will decode the Base58 layer, but real addresses use Base58Check, which appends a checksum before encoding — this tool doesn't validate that checksum, so it won't tell you whether an address string has been corrupted or mistyped.
Why does a string of all-zero bytes encode to a string of 1's?
Base58 treats the input as a big number and leading zero bytes carry no numeric value, so they'd vanish in a naive encoding — Base58 special-cases them, encoding each leading 0x00 byte as a leading '1' character instead, to preserve the original byte length.
Is my data sent anywhere?
No — encoding and decoding run entirely in your browser.