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

Processed entirely in your browser; nothing is uploaded.

Result
Cn8eVZg

Supported formats

Input
text
Output
text

Privacy

Runs entirely in your browser. Your input is never uploaded, stored, or sent to a third party.

Processing
In your browser
Privacy level
Browser only

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

  1. Encode by interpreting the UTF-8 bytes as a big integer and dividing by 58, mapping each remainder to the Bitcoin alphabet.
  2. Preserve leading zero bytes as leading alphabet-zero characters so the round trip is exact.
  3. Decode by reversing the digit mapping and rejecting any character outside the alphabet.

Usage

  1. Choose encode or decode.
  2. Paste text to encode, or a Base58 value to decode.
  3. 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

jsonSelect to copy
{
  "mode": "encode",
  "value": "hello"
}

Encode Unicode

jsonSelect to copy
{
  "mode": "encode",
  "value": "café 🌍"
}

Decode a Base58 value

jsonSelect to copy
{
  "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

  1. ECMA-262: ECMAScript Language Specification — TC39
  2. Base58Check encoding — Bitcoin Wiki — Bitcoin Wiki