Base58 Encoder / Decoder
Encode UTF-8 text to Base58 (Bitcoin alphabet) or decode a Base58 value back to text.
- Runs locally in your browser
- No upload required
Try it
Supported formats
Privacy
Runs entirely in your browser. Your input is never uploaded, stored, or sent to a third party.
Encoded 5 character(s) of UTF-8 text to 7 Base58 character(s).
How it works
- Read the input as UTF-8 bytes.
- Converted the byte sequence to a big integer by repeated long division against base 58.
- Mapped the digits to the Bitcoin alphabet and preserved any leading zero bytes as leading '1' characters.
- Base58 is an encoding, not encryption; it provides no confidentiality.
- The Bitcoin alphabet omits 0, O, I and l to avoid transcription mistakes.
- A leading zero byte is encoded as '1'; leading '1's are not decorative.
Methodology
- Encode by interpreting the UTF-8 bytes as a big integer and dividing by 58, mapping each remainder to the Bitcoin alphabet.
- Preserve leading zero bytes as leading alphabet-zero characters so the round trip is exact.
- Decode by reversing the digit mapping and rejecting any character outside the alphabet.
Usage
- Choose encode or decode.
- Paste text to encode, or a Base58 value to decode.
- Read the result; use Copy result to reuse it.
Examples
These are examples, not current values: they use fixed inputs, while the interactive tool computes live results in your browser.
Encode ASCII
{
"mode": "encode",
"value": "hello"
}Encode Unicode
{
"mode": "encode",
"value": "café 🌍"
}Decode a Base58 value
{
"mode": "decode",
"value": "Cn8eVZg"
}Limitations
Where Base58 is used
Base58 is common in Bitcoin and other cryptocurrency systems for addresses and keys. It trades encoding density for a short alphabet that avoids visually ambiguous characters, which matters when a value is copied by hand.
Frequently asked questions
- Why does Base58 omit some letters and digits?
- The alphabet removes 0, O, I and l because they are easy to confuse when copied by hand; Base58 is used for addresses and keys that people transcribe.
- What do the leading '1' characters mean?
- Each leading '1' represents one leading zero byte. They are significant and are reproduced exactly on decode.
Sources
- ECMA-262: ECMAScript Language Specification — TC39
- Base58Check encoding — Bitcoin Wiki — Bitcoin Wiki
Send feedback
Tell us if this tool helped, report a problem, or suggest a tool. Only the message you type is sent — never the input you used in the tool.
Was this tool useful?
Prefer to write to us directly? See the contact page.