Base58 Encoder / Decoder

Encode bytes to Base58 (the variant used in Bitcoin addresses and IPFS CIDs). Base58 omits the visually-confusing characters 0/O/I/l from the Base64 alphabet — a wallet address you have to type doesn't get misread.

How to use the Base58 Encoder / Decoder

Type to encode, or paste a Base58 string to decode. The alphabet used is the Bitcoin convention: 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz — no 0, no O, no I, no l. Padding from a leading zero byte becomes a leading '1'.

Why Bitcoin uses Base58

Base58 encodes data with 58 symbols — the digits and letters of Base62 minus four that are easy to confuse: 0 (zero), O (capital o), I (capital i), and l (lower-case L). It also drops the + and / that base64 uses. The result is a string a person can copy, read, or even transcribe with far less risk of error, which matters when the value is a wallet address rather than machine-only data.

Unlike base64, Base58 is not a simple bit-regrouping; it treats the input as one big number and repeatedly divides by 58, so output length is not a neat multiple of the input. Leading zero bytes are encoded specially as leading 1 characters to preserve them. Bitcoin addresses and IPFS content identifiers are the best-known users of this scheme.

Common use cases

  • Reading crypto identifiers — decode a Bitcoin-style address or IPFS CID to its underlying bytes.
  • Typo-resistant codes — produce identifiers people copy by hand without confusing 0 and O.
  • Compact tokens — encode bytes more tightly than hex while staying alphanumeric.
  • Learning the encoding — see how big-number division differs from base64 bit-grouping.
  • Debugging — check what a Base58 string decodes to when integrating a wallet or storage system.

Frequently asked questions

Which characters does Base58 leave out, and why?

It omits 0, O, I, and l because they look alike in many fonts, plus the + and / of base64. The aim is an alphabet a human can transcribe accurately.

Why is Base58 output not a fixed multiple of the input length?

Because it encodes the data as a single large number in base 58 rather than regrouping bits in fixed blocks. The length depends on the numeric value, not just the byte count.

How are leading zero bytes handled?

A leading zero byte would otherwise vanish in the big-number conversion, so Base58 represents each one as a leading 1 (the first symbol in its alphabet). That keeps the byte count reversible.

Is Base58 the same as the Base58Check used in Bitcoin addresses?

Not quite. Base58Check wraps Base58 with a version byte and a four-byte checksum to catch errors. This tool does plain Base58; the checksum layer is an addition on top.
Embed this tool on your site

Free to embed, no attribution required (but appreciated). Paste this where you want the tool to appear: