What Bitcoin Base58 encoding does
Base58 represents a byte sequence with fifty-eight alphanumeric symbols. This tool uses the alphabet popularized by Bitcoin: 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz. It removes zero, uppercase O, uppercase I, and lowercase l because those characters are easy to confuse in many fonts. It also avoids punctuation that can be awkward in filenames, plain text, or copied identifiers.
Unlike Base32 and Base64, Base58 is not a fixed-width bit-group encoding. The byte sequence is interpreted as one large unsigned integer and repeatedly divided by fifty-eight. That approach would normally lose zero bytes at the beginning, so the format has a special rule: each leading zero byte is represented by a leading 1 character. A correct implementation must count those bytes before converting the remaining integer.
This page encodes normal text as UTF-8 bytes. During decoding it reverses the Base58 integer into bytes and uses a strict UTF-8 decoder. Base58 itself can carry any binary data, but a random key or transaction payload may not be readable text. The tool reports that boundary rather than replacing invalid byte sequences with the Unicode replacement character.
How to use the Base58 converter
- Select Encode for ordinary text or Decode for an existing Bitcoin-alphabet Base58 string.
- Paste the input exactly. Base58 has no whitespace, separator, or padding rule, and uppercase and lowercase characters are different digits.
- Check the result immediately. An illegal symbol is reported with an error instead of being silently removed or substituted.
- Use the Hello World vector to compare another implementation, or use a Unicode example to verify that both sides agree on UTF-8.
- Swap the result back through the opposite direction. For binary payloads, use the exported byte functions in code rather than assuming every decoded sequence is text.
Bitcoin Base58 examples
The examples show text conversion, Unicode bytes, preserved zero prefixes, and invalid-character boundaries. Base58 has no padding, so the exact leading 1 characters are meaningful data.
| Input | Output | Conversion direction | Notes |
|---|---|---|---|
Hello World |
JxF12TrwUP45BMd |
Encode | Common text vector. This widely used vector demonstrates the Bitcoin alphabet without padding. |
JxF12TrwUP45BMd |
Hello World |
Decode | Decode the vector. Decoding reconstructs bytes first and then validates them as UTF-8 text. |
Base58 |
a4E9kYnK |
Encode | Short ASCII text. Letter case in Base58 is significant because uppercase and lowercase characters have different values. |
你好 |
2xuZUfBKa |
Encode | Unicode UTF-8. The two characters become six UTF-8 bytes before big-integer conversion. |
1112 |
|