Advertisement

Base58 Encoder & Decoder (Base58Check)

Encode text or hex to Base58 or decode it, with the Bitcoin, Flickr or Ripple alphabet. Optional Base58Check adds or verifies the 4-byte checksum.

Mode

Base58 writes binary data as a big number in base 58, using digits and letters but leaving out the look-alikes 0, O, I and l and the symbols + and /. That makes the result easy to copy by hand and safe in URLs, which is why Bitcoin addresses, IPFS content IDs and Solana keys use it. This tool encodes text or hex bytes, decodes Base58, and can add or verify the Base58Check checksum used by Bitcoin.

How to use this tool

  1. Choose Encode or Decode.
  2. Paste the input; for encoding raw bytes (keys, hashes), set "Input is" to hex.
  3. Pick the alphabet — Bitcoin's is the default for Bitcoin, IPFS and Solana.
  4. Choose Base58Check to append a checksum, or to verify one when decoding an address.

Formula

value = Σ byteᵢ × 256^(n−1−i); repeatedly divide by 58 and map each remainder (0–57) to the alphabet. Each leading 0x00 byte becomes one leading "1".

Base58Check appends the first 4 bytes of SHA-256(SHA-256(data)) before encoding. On decoding, the same hash is recomputed; a mismatch indicates corruption, the wrong checksum convention, or a typo, since a random error passes with odds of about 1 in 4.3 billion.

Example

The text "Hello World!" (12 bytes) encodes to 2NEpo7TZRRrLZSi2U, a published test vector from the IETF Base58 draft. For a Bitcoin address, the version byte 00 plus the 20-byte key hash 010966776006953D5567439E5E39F86A0D273BEE gets the checksum d61967f6, giving the address 16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM — the leading 1 comes from the 00 version byte.

Frequently asked questions

What is the difference between Base58 and Base64?

Base64 is faster to compute and about 2% shorter, but it uses +, / and = and includes look-alike characters. Base58 drops these, so a double-click selects the whole string and people make fewer copying mistakes.

Can I check whether a Bitcoin address is valid?

A matching Base58Check checksum checks four checksum bytes only. It does not prove ownership, network, payload length, or even that the value is an address. Bech32 addresses beginning bc1 use another encoding.

Why does the output start with several 1s?

Each leading zero byte in the input is written as the first alphabet character, "1" in the Bitcoin alphabet, so zeros are not lost when the bytes are treated as one number.

Is anything sent to a server?

No. Encoding, decoding and SHA-256 run in your browser — but never paste a private key into a web page you do not control.

Sources

Last updated: 2026-10-30

Advertisement