Base58 Encode / Decode
Encode UTF-8 text with the Bitcoin Base58 alphabet or decode raw Base58 into exact hexadecimal bytes and a UTF-8 interpretation.
Privacy: your files never leave your device. All processing happens locally in your browser.
How to use
- 1.Choose UTF-8 text to Base58, enter text, and run the encoder; inspect both the Base58 result and source hex bytes.
- 2.Copy the exact case-sensitive result without adding spaces or punctuation.
- 3.Choose Base58 to bytes and text, paste a raw Bitcoin-alphabet value, and verify the hexadecimal bytes; use the text interpretation only when it is valid UTF-8.
About Base58 Encode / Decode
Base58 Encode and Decode converts UTF-8 text into raw Bitcoin-style Base58 and reverses a valid Base58 string into bytes. The encoder shows the compact alphabet output together with the source bytes in lowercase hexadecimal. The decoder always shows the recovered hexadecimal bytes and also attempts a strict UTF-8 interpretation. All conversion runs in the browser and no input is uploaded.
The alphabet is 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz. It contains 58 symbols and deliberately excludes zero, uppercase O, uppercase I, and lowercase l because those characters are visually easy to confuse. Input containing an excluded character, whitespace, punctuation, or any symbol outside this alphabet is rejected instead of being silently cleaned or guessed. Letter case remains significant.
Encoding treats the UTF-8 input as a big-endian sequence of bytes and repeatedly converts its numeric value from base 256 to base 58. Each leading zero byte is preserved as a leading 1 symbol. This rule matters because ordinary integer conversion would otherwise lose leading zeros. Decoding performs the inverse base conversion and restores one zero byte for every leading 1 before the significant digits.
The text interface is convenient for readable data, but Base58 is fundamentally a binary encoding. A decoded byte sequence may not be valid UTF-8. In that case the page retains the exact hexadecimal result and clearly says that a text interpretation is unavailable. It does not insert Unicode replacement characters because doing so would hide byte-level information and make a round trip look successful when it was not exact.
This tool implements raw Base58 only. It does not add or verify the version byte and double-SHA-256 checksum used by Bitcoin Base58Check addresses and private-key formats. A syntactically valid result is therefore not proof that a Bitcoin address, extended key, WIF value, or other application-specific object is valid. Use a format-aware wallet or reviewed library when application semantics and checksums matter.
Base58 is reversible encoding, not encryption, hashing, signing, compression, authentication, or secrecy. Anyone with the alphabet can recover the bytes. It is useful where an alphanumeric representation without visually ambiguous characters is convenient, but it does not protect API keys, passwords, seed phrases, private keys, tokens, or personal data. Never paste a live wallet secret into an online utility, even one that processes locally.
The implementation limits input to 4,096 decoded bytes because arbitrary-base conversion grows quadratically with long inputs and can otherwise block the browser. Base58 strings are limited proportionally, output is never silently truncated, and empty programmatic vectors remain defined even though the user interface asks for non-empty input. For large binary payloads, use a streaming format such as Base64 with tooling designed for files.
Compatibility is checked against eight vectors from Bitcoin Core's official base58_encode_decode data, including simple ASCII bytes, a longer phrase, arbitrary binary data, and a leading-zero case. The independent Bitcoin libbase58 project confirms the raw encoding and Base58Check boundary. These fixtures lock the alphabet order, numeric conversion, and leading-zero behavior rather than relying only on encode-then-decode self-consistency.
To use the encoder, enter ordinary text and copy the Base58 result. To inspect an existing value, switch to decode, paste the exact string, and compare both the UTF-8 interpretation and hex bytes with the expected application format. If the source calls the value Base58Check, a Bitcoin address, or a versioned key, remember that this page only proves the raw byte conversion and does not validate the surrounding protocol.
Methodology & sources
Bytes are converted between base 256 and the 58-symbol Bitcoin alphabet with explicit preservation of leading zero bytes as leading 1 symbols. Decoded bytes use fatal UTF-8 interpretation and always expose lowercase hex.
Frequently asked questions
Related tools
- Base64 Encode / DecodeEncode or decode Base64 instantly with full UTF-8 support β emoji and accents work, all in your browser.
- Base32 Encode / DecodeEncode UTF-8 text to canonical RFC 4648 Base32 or decode padded and unpadded Base32 back to strict UTF-8.
- Text To HEXEncode text into exact UTF-8 hexadecimal with continuous, spaced, or 0x-prefixed output and explicit Unicode replacement warnings.
- UTF-8 Encoder / DecoderConvert Unicode text to well-formed UTF-8 bytes or strictly decode byte sequences without silent replacement.
- AES Encryption OnlineEncrypt text into a portable authenticated AES-256-GCM JSON package or decrypt a package with its password entirely in your browser.
- ASCII ConverterConvert standard 7-bit ASCII text to decimal codes or decode decimal codes back to exact ASCII characters locally.