Base58 Decoder / Encoder

Decode Base58 strings to text or hex bytes, or encode text/hex bytes to Base58 — using the Bitcoin alphabet.

Free online Base58 decoder and Base58 encoder — paste a Base58 string (like a Bitcoin address) to decode it to UTF-8 text or raw hex bytes, or encode your own text/hex into Base58. Uses the standard Bitcoin alphabet (no 0, O, I, or l) and correctly preserves leading zero bytes. No data is sent to a server.

Examples:

Mode

Quick reference

Hello
9Ajdvzr
00 byte
→ leading 1
Alphabet
no 0, O, I, l
58 symbols
digits + letters

Frequently asked questions

Base58 is a binary-to-text encoding using 58 characters — letters and digits, but excluding 0, O, I, and l because they look alike. It was introduced by Bitcoin creator Satoshi Nakamoto for encoding Bitcoin addresses and private keys, and is also used by IPFS, Ripple/XRP, and Flickr short URLs.
The Bitcoin Base58 alphabet is 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz — all letters and digits except the visually ambiguous 0, O, I, and l. That's 62 minus 4 = 58 symbols.
Base58 was designed for values a human reads, copies, or types by hand — like cryptocurrency addresses. Base64 includes 0/O and I/l/1, easy to misread. Base58 also avoids + and /, which can break URL parsing or double-click text selection. The tradeoff is slightly larger output than Base64 for the same input.
Because Base58 treats the input as one big number, leading zero bytes would otherwise vanish. Bitcoin's convention fixes this: each leading 0x00 byte is represented as a leading '1' character in the output, and vice versa on decode. This tool implements that rule with BigInt arithmetic and verifies it on round-trip tests including multi-zero-byte inputs.
No — this tool implements plain Base58 with no checksum. Base58Check, used for real Bitcoin addresses, appends a 4-byte SHA-256d checksum before Base58-encoding. Decoding a real address in hex mode here will include that trailing checksum in the output; this tool doesn't verify or strip it.
No. All encoding and decoding happens locally with JavaScript in your browser using BigInt arithmetic. Nothing is uploaded or stored on a server.