Skip to content

Base58 Encode / Decode

Encode to Base58 (Bitcoin wallet format) or decode back. Strips ambiguous characters (0, O, I, l) for readability.

Output

How to use the Base58 Encode / Decode

  1. Choose Encode or Decode.

  2. Paste your text or a Base58 string.

  3. 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.