Base58 Encoder and Decoder (Bitcoin Alphabet)
Encode text or hex bytes to Base58, decode Base58 strings and verify the Base58Check checksum
Your data stays with you. Conversion happens inside the browser; nothing is sent to a server.
Did this tool do the job?
Thanks, your feedback came through.
How it works
Paste the text to encode or the Base58 string to decode into the left pane and pick Encode or Decode under Direction. The word "hello" becomes Cn8eVZg: five bytes, seven characters. When you work with binary data such as keys, hashes or addresses, set Data format to Hex bytes. Encoding 00 00 01 gives 112, because every leading zero byte is written as a separate 1. To check a legacy Bitcoin address or a WIF private key, set Base58Check to On and choose Decode: the tool splits off the last 4 bytes, computes the double SHA-256 of the rest and reports VALID or INVALID on the result line. An address with a single mistyped character fails this check. If the string contains 0, O, I or l, you are told that the character is not in the Base58 alphabet and at which position it sits. Everything runs in your browser; no address or key is sent to a server.
This tool is also known as base58 decode, base58 encode, base58check decode, base58 to hex, bitcoin address checksum.
What is Base58?
Base58 reads a byte sequence as one large integer and writes it in base 58. Its alphabet is digits and letters without 0, O, I and l, and it has no punctuation. Unlike Base64, which works on bit groups, it is a change of number base, so leading zero bytes would vanish from the number; each one is therefore written as an extra 1. Bitcoin addresses, IPFS identifiers and Solana addresses use this encoding.
What is Base58Check?
Base58Check adds error detection to Base58. A version byte is placed in front of the data, and the first 4 bytes of the data's double SHA-256 hash are appended at the end; the whole thing is then written in Base58. The decoder recomputes the hash and compares it with the last 4 bytes. Legacy Bitcoin addresses (starting with 1 or 3) and WIF private keys are Base58Check.
What is the difference between Base58 and Base58Check?
Base58 is only a way of writing bytes: it uses unambiguous characters, but it cannot notice a mistyped character — a damaged string simply decodes to a different number. Base58Check writes the same way and adds a 4-byte checksum at the end; when decoding, the checksum is recomputed and even a single wrong character is caught. Strings where a typo can cost money, such as Bitcoin addresses and WIF keys, use Base58Check, while IPFS identifiers are plain Base58.
What a Base58Check checksum proves — and what it does not
Base58Check appends 4 bytes taken from the SHA-256 hash of the SHA-256 hash of the data. When an address is mistyped or cut short, those 4 bytes no longer match; the chance that a wrong address passes by accident is about 1 in 4.3 billion. A VALID result therefore tells you, with near certainty, that the string has no typo.
The checksum does not tell you who owns the address or which network it belongs to. The first decoded byte is a version byte (00 for a Bitcoin mainnet address, which is why those start with 1), and another network using the same layout also passes the check. Before sending money, compare the address in your own wallet with what the recipient shows you. Addresses starting with bc1 are Bech32, not Base58; this tool does not decode them.
Text or hex bytes: which data format to pick
Base58 is mostly used for binary data: Bitcoin addresses, private keys, IPFS content identifiers (CIDv0, starting with Qm) and Solana account addresses. Decoding them does not produce readable text, so pick Hex bytes. If Text is selected and the decoded bytes are not valid UTF-8, the tool falls back to hex and says so on the result line.
To turn a short piece of your own text into a compact, unambiguous ID, choose Text (UTF-8). Base58 treats the whole input as one number, so it slows down on long input; for anything above a few kilobytes, Base64 is the better choice.
Frequently asked questions
How do I decode a Base58 string?
Paste the string into the left pane and choose Decode. If you are decoding an address or a key, set Data format to Hex bytes so the bytes are shown one by one. For Base58Check strings, the result line also says whether the checksum is valid.
Why does Base58 leave out 0, O, I and l?
In many fonts zero looks like capital O and capital I looks like lowercase l. Bitcoin addresses were meant to be read and typed by people, so these four characters were removed. There are no symbols like + or / either, so double-clicking selects the whole address.
How can I check whether a Bitcoin address is valid?
Paste the address, choose Decode, Hex bytes and Base58Check On. If the result line shows VALID ✓, the address contains no typo. This works for legacy addresses starting with 1 or 3; addresses starting with bc1 use a different format.
What is the difference between Base58 and Base64?
Base64 cuts data into 6-bit groups, is fast and uses + / and =. Base58 converts the whole input into one number in base 58; it uses no symbols and skips look-alike characters, but it is slower. Base64 suits long data and files, Base58 short IDs that people read.