Base64 Encoder & Decoder

Encode text or files to Base64, or decode Base64 instantly in your browser.

Encoded Payload (Base64 String)

UTF-8 · RFC 4648 Compliant
132 chars·132 B

Decoded Plaintext Result

97 chars·97 B·0.00ms·-26.5% size change
  • Local Processing
    Text and files are processed entirely in your browser. Sensitive data never touches a remote server.
  • Text & File Support
    Encode text, images, documents, and other files directly from local memory into standard Base64.
  • Standard & URL-Safe Base64
    Switch between standard Base64 and URL-safe output with automatic padding management.

Technical Foundation

Understanding Base64 Encoding

Base64 maps arbitrary 8-bit byte sequences into a constrained 64-character ASCII alphabet to ensure integrity across systems that only reliably transmit plain text.

Base64 is encoding, not encryption. It makes binary data safe to represent as text, but it does not provide confidentiality or cryptographic protection. Any recipient can decode it without a password or key.

Bit Transformation Matrix (3 Bytes → 4 Base64 Characters)+33.3% Overhead (24 bits → 32 bits)
Byte 1
'M'
01001101 (8 bits)
Byte 2
'a'
01100001 (8 bits)
Byte 3
'n'
01101110 (8 bits)
Regrouped into 4 chunks of 6 bits each
6 bits: 010011 (19)
'T'
6 bits: 010110 (22)
'W'
6 bits: 000101 (5)
'F'
6 bits: 101110 (46)
'u'

Common Production Use Cases:

Data URIs in CSS / HTMLHTTP Basic AuthJSON PayloadsEmail Attachments (MIME)Binary Data Transfer

Confused about whether Base64 protects passwords or API tokens?

Read the Complete Security Guide
Code Reference

Developer Implementation Guides

Compact native snippets for encoding and decoding in major runtimes.

// Modern Browser (handles multi-byte UTF-8 safely)
const encodeUTF8 = (str) => {
  const bytes = new TextEncoder().encode(str);
  const bin = Array.from(bytes, (b) => String.fromCharCode(b)).join("");
  return btoa(bin);
};

// Node.js Buffer API
const encoded = Buffer.from("developer tools & utilities", "utf-8").toString("base64");
const decoded = Buffer.from(encoded, "base64").toString("utf-8");

Knowledge Base

Frequently Asked Questions

Encryption requires a secret key or cipher to make plaintext unreadable to unauthorized parties. Base64 is merely a deterministic encoding transformation defined by a standardized public lookup table. Anyone who encounters a Base64 string can immediately decode it back to its original bytes without needing any secret key.
Standard Base64 (RFC 4648 §4) uses '+' and '/' as characters 62 and 63. In web URLs and filenames, these characters can cause conflicts or require percent-encoding. URL-safe Base64 (RFC 4648 §5) swaps them for '-' and '_' respectively, and often omits trailing '=' padding.
Base64 maps binary data 6 bits at a time, whereas a standard byte is 8 bits. It takes 4 Base64 characters (each carrying 6 bits = 24 bits total) to represent 3 binary bytes (24 bits). Because 4 characters take 4 bytes in standard ASCII or UTF-8 storage, the overhead ratio is 4/3 = 1.333×, representing an increase of roughly 33.3% plus padding bytes.
Yes. You can switch to the File tab and select binary files (such as PNG, JPEG, PDF, SVG, WebP) up to 50MB. Because the conversion is executed natively in your browser via the HTML5 FileReader and typed arrays, your files are processed in fractions of a second without leaving your device.
Legacy JavaScript btoa() throws an exception for characters outside the Latin-1 range. ToolPorta uses the browser's native TextEncoder API, which safely breaks multi-byte UTF-8 sequences and emojis into their component bytes before encoding them into valid Base64.
View all tools (15)