Base58 Encoder / Decoder

Encode or decode Base58 strings β€” the Bitcoin-style alphabet that skips visually ambiguous characters

Input is

About this tool

The Base58 Encoder / Decoder converts text or raw hex bytes to and from Base58 β€” the alphabet Bitcoin and many other systems use instead of Base64 specifically because it excludes visually ambiguous characters (0, O, I, and l), avoiding the transcription errors those cause in identifiers people read and type by hand. Base58 also skips punctuation characters like + and / that Base64 uses, which means a Base58 string never needs escaping to be safely embedded in a URL or double-clicked to select as one token β€” another reason it's the standard choice for Bitcoin addresses, IPFS content hashes, and short public identifiers. Both text and hex input modes are supported, since Base58 is as often applied to raw binary data (a hash, a public key) as it is to plain strings. Everything runs client-side using BigInt arithmetic for exact precision on inputs of any length.

When to use it

  • β†’Decoding a Bitcoin address or other Base58Check-adjacent identifier to inspect its raw bytes
  • β†’Encoding a hash or binary identifier into a compact, URL-safe, hand-typeable string
  • β†’Understanding why Base58 is used instead of Base64 for certain identifier formats
  • β†’Converting between hex and Base58 representations of the same underlying bytes

Tips

  • β—†Base58 has no padding character and no +, /, or = β€” this is precisely why it's preferred for identifiers a human might need to read aloud or type manually.
  • β—†A leading zero byte in the input becomes a leading '1' in the Base58 output β€” this is the standard convention, not a bug, and the decoder correctly reverses it.
  • β—†This tool implements plain Base58, not Base58Check (which adds a version byte and a checksum on top) β€” a real Bitcoin address additionally has that checksum layer.

Frequently asked questions

Why does Base58 exclude 0, O, I, and l specifically?

Those four characters are the most commonly confused pairs across common fonts β€” the digit zero and capital O, and capital I and lowercase l, often look identical or nearly identical depending on the typeface. Base58 was designed for identifiers people sometimes need to read off a screen and type by hand, so removing the ambiguous characters entirely eliminates that entire class of transcription error.

Is this the same as what a Bitcoin address uses?

A Bitcoin address uses Base58Check, which is plain Base58 encoding applied to a payload that already includes a version byte prefix and a 4-byte checksum suffix (derived from double-SHA256 of the payload). This tool implements plain Base58 β€” the encoding step itself β€” without adding that specific version/checksum wrapper.

Why would I encode hex bytes instead of text?

Base58 is very often applied to raw binary data β€” a public key, a content hash, a random identifier β€” rather than human-readable text. Hex is the standard way to represent arbitrary bytes as typeable text, so the hex mode lets you Base58-encode the same binary data a real system would, rather than only ASCII strings.

Related tools

πŸ₯· ToolNinja