A complete Base58 and Base58Check encoder / decoder that runs entirely in your browser. Base58 is the binary-to-text encoding behind Bitcoin addresses, WIF private keys, IPFS content IDs and many short-link schemes. It keeps data compact like Base64 but throws away the characters that trip humans up — so the result is safe to read aloud, type by hand and double-click to select. This tool converts text or raw hex into Base58, decodes Base58 back to bytes, and can append or verify the 4-byte checksum that makes a string self-validating.
How it works
Base58 treats your input bytes as a single big-endian arbitrary-precision integer and repeatedly divides by 58, mapping each remainder to one of the 58 alphabet characters: the digits 1-9 and the letters, minus 0, O, I and l. Because the whole input is one number, naive encoding would silently drop leading zero bytes — so the standard prepends one 1 for every leading 0x00 byte and encodes the rest. This tool uses JavaScript BigInt, so it stays exact no matter how long the input is, and it preserves leading zeros in both directions.
Enable Base58Check and the encoder first appends a 4-byte checksum — the first four bytes of SHA-256(SHA-256(payload)), computed with the browser’s Web Crypto API — before encoding. On decode it recomputes that checksum and compares: a mismatch means the string was mistyped or corrupted, and the tool tells you the expected versus actual bytes. You can encode from UTF-8 text or raw hex, and every result shows the underlying bytes in hex with its own copy button.
Example
Encoding the text Gera Tools (10 bytes) gives the Base58 string 8Vw9jWiZ4xN5kT (illustrative). Encoding the hex payload 00 00 5a 1b keeps both leading zero bytes as two leading 1 characters in the output, proving the leading-zero rule. With Base58Check on, the same payload is extended by a 4-byte checksum first, so the encoded string is a few characters longer and any later typo is caught on decode.
| Task | Input | Mode |
|---|---|---|
| Encode text | hello | Encode · Text |
| Encode key bytes | 1a2b3c… | Encode · Hex |
| Verify an address-style string | a Base58 string | Decode · Base58Check |
Every byte is computed locally — no addresses, keys or text are ever uploaded.