Encode bytes with Bitcoin-alphabet Base58 or Base58Check, or decode them back. Supports optional Base58Check version-byte validation.
Runs in your browser — your input is processed on this device and never uploaded.
Enter text or upload a file to encode. To decode, enter the encoded text.
Results appear here.
Base58 writes bytes with a 58-character alphabet that leaves out the characters people confuse: zero, capital O, capital I and lowercase l. Base58Check adds a version byte and a four-byte checksum, which is how Bitcoin addresses catch typing mistakes before money moves.
The alphabet is 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz. Satoshi Nakamoto chose it for Bitcoin, and a comment in the original Bitcoin source gives the reasons: 0, O, I and l look alike in some fonts, a string with no punctuation is more readily accepted as an account number, email will not break the line inside it, and a double-click selects the whole string as one word.
Base58Check adds protection against typing mistakes. Its last four bytes are the start of a double SHA-256 hash of the version byte and payload, so a mistyped character almost always fails the check instead of producing a different, valid value.
Base64 and Base32 are block-based standards from RFC 4648 and handle large data well. Base58 is not block-based: it converts the whole input as one large number, which is why this tool caps it at 1 MiB.
Bech32 and Bech32m is the newer Bitcoin address format, with a stronger checksum and a single-case alphabet. Multibase does not accept its Base58 form (prefix z), so decode the part after the z here instead.
Leading zero bytes become leading 1 characters, one per byte, so the bytes 00 00 01 encode as 112. That is why Bitcoin addresses with version byte 0 start with a 1.
Warning
A valid checksum catches accidental changes. It does not prove who made the value, and neither format encrypts anything.
Find similar tools by category or tag.