1. Home
  2. Developer tools
  3. Base58 Encoder

Base58 Encoder

Base58 drops the characters 0, O, I and l so that addresses are harder to misread. Encode and decode bytes, or use Base58Check to add and verify the four-byte checksum used by Bitcoin addresses and WIF keys.

Free, no sign-up. Runs in your browser: nothing is uploaded.

How to use Base58 Encoder

  1. Choose encode or decode, and plain or Base58Check.
  2. Paste text, hex or a Base58 string.
  3. Read the result and the checksum verdict.

Features

  • Bitcoin alphabet without 0, O, I and l
  • Base58Check with a chosen version byte
  • Verifies and reports a bad checksum
  • Leading zero bytes preserved as leading 1 characters
  • Input as text or hex bytes
  • Exact for long inputs

Supported formats

Input

  • Typed or pasted text

You get

  • Base58
  • Base58Check

Private by design

Everything you enter is processed by your browser on this device. Nothing is sent to openWorkstand or anyone else, so the Base58 Encoder is safe for private and work data. After you have used it once while online, it also works without an internet connection. How local processing works

Good to know

  • The Bitcoin alphabet is used; other alphabets such as Flickr or Ripple are not offered.
  • A valid checksum shows a typo-free copy, not that an address exists or who owns it.

Guide

Base58 and Base58Check: readable identifiers with a checksum

Long identifiers are copied by hand more often than anyone likes: written on paper, read down a phone line, retyped from a screenshot. Base58 was designed for that world. It drops the characters that look alike in common fonts, 0 and O, I and l, and also removes the symbols + and / so that the whole string is selected by a double click. The Base58Check variant adds a checksum so that a typing error is noticed before it does harm.

The encoding

Unlike Base64, Base58 does not work on groups of bits. It reads the bytes as a single big number, repeatedly divides it by 58, and uses the remainders as indexes into the alphabet. The result is read in reverse. Because the number has no memory of leading zero bytes, each leading zero byte is written as one leading 1, the first character in the alphabet, and is restored on decoding. The sample “Hello World!”, twelve bytes, gives the 17 characters 2NEpo7TZRRrLZSi2U.

Base58Check

Base58Check wraps a payload in a safety layer. A version byte goes first, then the payload, then four checksum bytes taken from the start of SHA-256(SHA-256(version + payload)). The whole thing is then encoded in Base58. On decoding, the page recomputes the checksum and reports a mismatch. The version byte identifies the kind of data: 0x00 for a legacy Bitcoin address, 0x05 for a script address and 0x80 for an uncompressed private key in wallet import format.

Using the page

Pick encode or decode, choose text or hex as the input type, and tick Base58Check if you want a version byte and a checksum. The version byte is entered in hexadecimal. The output shows the number of bytes read and characters produced. For a Bitcoin-style address, enter the 20-byte hash as hex, set the version to 00, and the page produces the address; to verify an address, paste it and decode it, and the page reports whether the checksum holds and what the version and payload are.

A worked example

The well-known example from the Bitcoin documentation uses the hash 751e76e8199196d454941c45d1b3a323f1433bd6 with version 00. Base58Check turns it into 1BgGZ9tcN4rm9KBzDn7KprQz87SZ26SAMH. The leading 1 is the encoded version byte, a zero byte. If you change a single character of that address and decode it, the checksum fails, and the page says so instead of giving a payload.

Edge cases

An input that starts with zero bytes gives output that starts with 1s, one for each zero byte, and an empty input gives an empty output. A character outside the alphabet is rejected with its position, and the usual culprits are 0, O, I and l from retyping. Other Base58 alphabets exist, such as the ones used by Flickr and Ripple, which order the characters differently; this page uses the Bitcoin alphabet only.

Limits

Base58 is quadratic in the length of the input, so the page is meant for short values, not whole files. The checksum guards against accidents, not attackers: anyone can compute a valid one. A valid address also does not mean anyone controls it or that it has ever been used, and the page does not contact any network or blockchain service. Nothing you type leaves the browser.

Checked against the current version of the Base58 Encoder on .

Frequently asked questions

Why is Base58 not just Base64 with some letters removed?

Base64 packs bits in 6-bit groups, so any block of bytes maps to characters directly. Base58 treats the whole input as one large number and repeatedly divides by 58, because 58 is not a power of two. That makes it slower on long data, which is why it is used only for short values like keys and addresses.

What does a failed checksum tell me?

That the string is not exactly what was produced by the encoder: a character was mistyped, dropped or swapped. With a 4-byte checksum, a random error slips through about once in 4.3 billion times, so a pass means the copy is almost certainly intact.

What does Base58Check add?

A version byte in front and a four-byte checksum at the end, taken from the first bytes of SHA-256 applied twice. A single mistyped character almost always breaks the checksum.

Why do Bitcoin addresses start with 1?

Version byte 0 is a zero byte, and each leading zero byte is written as the character 1, the first symbol in the alphabet. That gives the leading 1 of legacy P2PKH addresses.

Keep working with the result

openWorkstand also includes a free workspace with documents, spreadsheets, tasks, projects and a calendar that save to a folder on your computer.