Base58 Encoder / Decoder
Encode or decode Base58 strings β the Bitcoin-style alphabet that skips visually ambiguous characters
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.