Base64 to Base58 Converter
Convert Base64 to Base58 and Base58 to Base64 online. Uses Bitcoin Base58 alphabet with full big-integer encoding. Fast, accurate, client-side.
About
Base64 and Base58 are both binary-to-text encoding schemes, but they solve different problems. Base64 uses 64 characters including +, /, and = padding. These characters cause issues in URLs, filenames, and human transcription. Base58, designed by Satoshi Nakamoto for Bitcoin addresses, removes ambiguous characters: zero (0), uppercase O (O), uppercase I (I), and lowercase L (l). This eliminates visual confusion in printed or handwritten strings. The tradeoff is a ~37% size increase over Base64 for equivalent data, since log(256) รท log(58) ≈ 1.365. This tool performs real byte-level conversion: it decodes your Base64 input to raw bytes, then re-encodes those bytes using the full big-integer division algorithm against the Base58 alphabet. It does not perform naive character substitution. Malformed Base64 input (wrong padding, illegal characters) will be rejected with a diagnostic error.
Formulas
Base58 encoding treats the input byte array as a single big-endian unsigned integer and performs repeated division by 58. Each remainder maps to a character in the alphabet. Leading zero bytes (0x00) are encoded as the character 1 (index 0).
Where bytei is the i-th byte of the decoded binary data, n is the total number of bytes, and alphabet is the 58-character Bitcoin Base58 string: 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz. For every leading 0x00 byte in the input, a 1 character is prepended to the output. The reverse (Base58 to bytes) accumulates value = value ร 58 + indexOf(char), then extracts bytes from the resulting big integer.
Reference Data
| Property | Base64 | Base58 |
|---|---|---|
| Alphabet Size | 64 characters | 58 characters |
| Characters Used | A - Z, a - z, 0-9, +, / | 1-9, A - H, J - N, P - Z, a - k, m - z |
| Excluded Characters | None (uses all alphanumeric + two symbols) | 0, O, I, l (ambiguous glyphs) |
| Padding | = (up to 2) | None (leading 1s encode leading zero bytes) |
| Efficiency (bytes per char) | 0.75 bytes/char (6 bits/char) | 0.732 bytes/char (5.858 bits/char) |
| Size Overhead vs Raw | ≈ 33% | ≈ 37% |
| URL-Safe | No (+ and / need escaping) | Yes (all characters are URL-safe) |
| Human-Readable | Moderate (ambiguous chars exist) | High (no confusable chars) |
| Double-Click Selectable | No (/ and + break selection) | Yes (alphanumeric only) |
| Primary Use Case | Email (MIME), Data URIs, PEM certs | Bitcoin addresses, IPFS CIDs, Monero |
| Checksum Built-In | No | Variant Base58Check adds 4-byte SHA-256 checksum |
| Encoding Algorithm | Group 3 bytes โ 4 chars (lookup) | Big-integer division by 58 (iterative) |
| Decoding Algorithm | Group 4 chars โ 3 bytes (lookup) | Big-integer multiply-and-add (iterative) |
| Computational Cost | O(n) - linear | O(n2) - quadratic (big-int math) |
| Standardized In | RFC 4648 | No formal RFC (de facto standard) |
| Variant: Base58Check | N/A | Version byte + 4-byte checksum (Bitcoin) |
| Variant: Base64url | - and _ replace + and / | N/A |