User Rating 0.0 โ˜…โ˜…โ˜…โ˜…โ˜…
Total Usage 0 times
Base64 → Base58
0 characters
0 characters
Is this tool helpful?

Your feedback helps us improve.

โ˜… โ˜… โ˜… โ˜… โ˜…

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.

base64 base58 encoding converter bitcoin decoding binary

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).

value = nโˆ’1โˆ‘i=0 bytei โ‹… 256nโˆ’1โˆ’i
while value > 0 : remainder = value mod 58 , char = alphabet[remainder] , value = value58

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

PropertyBase64Base58
Alphabet Size64 characters58 characters
Characters UsedA - Z, a - z, 0-9, +, /1-9, A - H, J - N, P - Z, a - k, m - z
Excluded CharactersNone (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-SafeNo (+ and / need escaping)Yes (all characters are URL-safe)
Human-ReadableModerate (ambiguous chars exist)High (no confusable chars)
Double-Click SelectableNo (/ and + break selection)Yes (alphanumeric only)
Primary Use CaseEmail (MIME), Data URIs, PEM certsBitcoin addresses, IPFS CIDs, Monero
Checksum Built-InNoVariant Base58Check adds 4-byte SHA-256 checksum
Encoding AlgorithmGroup 3 bytes โ†’ 4 chars (lookup)Big-integer division by 58 (iterative)
Decoding AlgorithmGroup 4 chars โ†’ 3 bytes (lookup)Big-integer multiply-and-add (iterative)
Computational CostO(n) - linearO(n2) - quadratic (big-int math)
Standardized InRFC 4648No formal RFC (de facto standard)
Variant: Base58CheckN/AVersion byte + 4-byte checksum (Bitcoin)
Variant: Base64url- and _ replace + and /N/A

Frequently Asked Questions

Base64 encodes 6 bits per character (logโ‚‚(64) = 6), while Base58 encodes approximately 5.858 bits per character (logโ‚‚(58) โ‰ˆ 5.858). For the same payload, Base58 requires about 37% more characters than raw bytes, compared to 33% for Base64. The difference is the cost of removing 6 ambiguous characters from the alphabet.
No. This tool performs raw Base58 encoding and decoding without appending or verifying a 4-byte SHA-256d checksum. If you decode a Bitcoin address, the output bytes will include the version prefix and checksum bytes as raw data. To validate a Base58Check address, you would need to separate the payload, recompute the double-SHA-256 hash, and compare the last 4 bytes.
This converter expects standard Base64 (RFC 4648 Section 4) using + and /. If your input uses Base64url encoding (- and _), replace those characters before converting: substitute - with + and _ with / . Padding with = may also be absent in Base64url; add it to make the string length a multiple of 4.
In Base58 encoding, each leading 0x00 byte in the input maps to the character "1" (alphabet index 0). For example, 3 leading zero bytes produce "111" prefixed to the Base58 output. This is critical for Bitcoin addresses where the version byte 0x00 must survive round-trip encoding. The converter counts leading zeros before performing the big-integer division.
The Base58 algorithm has O(nยฒ) time complexity because it performs big-integer arithmetic on the full byte array. For inputs under 10 KB of decoded data (roughly 13 KB Base64), conversion is near-instant. Inputs above 100 KB may cause noticeable delay. For megabyte-scale data, Base58 is not the appropriate encoding; consider Base64url or hex instead.
No. These four characters are excluded by design. If you see any of them in a supposedly Base58-encoded string, the string is invalid or uses a non-standard alphabet. This converter will reject such input with a validation error during Base58-to-Base64 decoding.