Base64 Encoder & Decoder

Convert strings, special characters, and binaries into RFC 4648 compliant Base64 representations securely.

Understanding Base64 Encoding: Fundamentals, Use Cases, and UTF-8 Hazards

Base64 is a binary-to-text encoding scheme designed to represent binary data in an ASCII string format. Defined in RFC 4648, it translates arbitrary sequence of bytes into 64 printable characters (A-Z, a-z, 0-9, +, and /).

When Should You Use Base64 Encoding?

The Critical UTF-8 Character Encoding Trap in Base64

A frequent error developers encounter when decoding Base64 in JavaScript is the handling of non-ASCII characters (such as emojis, accented characters, or Asian scripts). The default browser btoa() and atob() functions fail when encountering UTF-8 code points above 0x00FF, throwing an InvalidCharacterError exception.

How to Safely Handle UTF-8 Strings in JavaScript:

// Safe UTF-8 Base64 Encoding
function utf8_to_b64(str) {
    return window.btoa(unescape(encodeURIComponent(str)));
}

// Safe UTF-8 Base64 Decoding
function b64_to_utf8(str) {
    return decodeURIComponent(escape(window.atob(str)));
}

console.log(utf8_to_b64("Hello World 🌍")); // Successfully encoded

Base64 vs Encryption: A Common Security Misconception

Crucial Note: Base64 is encoding, NOT encryption. It provides zero data confidentiality or privacy. Anyone who intercepts a Base64 string can decode it instantly without a key. Never use Base64 alone to protect passwords or secret tokens.

Frequently Asked Questions

Why does Base64 output end with '=' signs?

The = character serves as padding. Base64 operates on 3-byte blocks (24 bits). If the input byte length is not divisible by 3, trailing = or == padding characters are appended to complete the final block.