Binary-to-text encoding compared: Base64, Base32, Base58, and more

Binary-to-text encodings convert arbitrary bytes into printable characters so they can travel through text-only channels: JSON, XML, email, URLs, and printed QR codes. The main families are Base64 (MIME, data URIs), Base32 (OTP secrets, product keys), Base58 (Bitcoin addresses, IPFS CIDs), and Base85 (PostScript, PDF). Each trades overhead for specific usability properties.

Encoding focus
Binary-to-text encodings
binary-to-text
Category
Format Comparison
Comparing encoding schemes side by side

How this is calculated

Base64 is the workhorse: 33% overhead, no ambiguous characters, supported everywhere. Base32 adds more overhead (60%) but is case-insensitive and avoids visually confusable characters (0/O, 1/I/l), making it ideal for human-typed values like 2FA recovery codes. Base58 omits characters that look similar in many fonts (0, O, I, l) and is used by Bitcoin and IPFS because addresses need to be copyable without ambiguity. Base85 (Ascii85) has only 25% overhead but uses characters that break in many contexts (quotes, backslashes). For most modern use cases, Base64 is the right default.

Verdict

Default to Base64 for binary-in-text. Use Base32 when humans will type or read the encoded value. Use Base58 for blockchain addresses and content identifiers. Avoid Base85 unless you're working with PDF or PostScript internals.

More Encoding scenarios

Frequently asked questions

How do I convert text to Base64?
Paste your string into the Text field and the Base64 output appears instantly. The tool uses standard Base64 (RFC 4648), so the output is identical to Linux's base64 command and every major language's built-in Base64 encoder.
What's the difference between Base64 and hex encoding?
Both represent binary data as text, but with different alphabets. Base64 uses 64 characters and needs roughly 4 chars per 3 bytes (33% overhead). Hex uses 16 characters and needs exactly 2 chars per byte (100% overhead). Base64 is denser, while hex is easier to read byte by byte.
Why does my UTF-8 text break when converted to binary?
UTF-8 encodes non-ASCII characters as multibyte sequences, so a single emoji or accented letter becomes 2-4 bytes. The binary output will be longer than the character count suggests, that's correct behavior, not a bug.
Is it safe to paste sensitive data into the converter?
Yes. The encoding conversion runs entirely in your browser with JavaScript, nothing is sent to our servers, logged, or stored. You can verify this with your browser's Network tab: no requests fire when you type.
What is URL-safe Base64?
A variant that replaces `+` with `-` and `/` with `_` so the result can be safely placed in URLs without percent-encoding. JWT tokens use URL-safe Base64. Standard Base64 is fine for most other uses.
Can I decode Base64 back to the original text?
Yes, the converter is bidirectional. Paste Base64 into the Base64 field and you'll get the original UTF-8 string back. If decoding fails silently, the input isn't valid Base64 (wrong characters, bad padding, or it was double-encoded).