Base64 encoder & decoder
Turn text into Base64 and back, live as you type. Handles emoji and any language, supports URL-safe output, and never sends your data anywhere.
Base64 takes your data 3 bytes (24 bits) at a time and re-cuts it into four 6-bit pieces. Each piece is a number from 0-63, looked up in a 64-character alphabet.
It exists to carry binary data through systems that only accept plain text.
data:image/png;base64,iVBORw0KGgo…Content-Transfer-Encoding: base64eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI0MiJ9Authorization: Basic dXNlcjpwYXNz{ "file": "JVBERi0xLjcK…" }-----BEGIN CERTIFICATE-----Anyone can decode it instantly, there's no key. A password “hidden” in Base64 is effectively in plain sight. For secrets, use real encryption; for storing passwords, use a slow hash like bcrypt or Argon2.
Base64 is one choice on a spectrum. A bigger alphabet means shorter output but more characters that can break in transit. Base32 survives case-insensitive systems and phone dictation, Base58 drops look-alike characters for wallet addresses, Ascii85 squeezes PDF and PostScript streams. Every row below is encoded live.
When the input isn’t a multiple of 3 bytes, the last character carries a few spare bits. RFC 4648 says encoders must set them to zero, but many decoders ignore them, so “SGk=” and “SGl=” both decode to “Hi”. Decoders also differ on missing padding and whitespace. That matters wherever Base64 strings are compared, cached or signed. The browser column uses this page’s own atob().
The full 64-character alphabet with each value, the rules from RFC 4648 and the specifications that use Base64 in their own way.
Different encodings for different places text has to travel.