Base64 in 30 seconds
Base64 maps arbitrary bytes to a 64-character ASCII alphabet (A–Z, a–z, 0–9, +, /). The result is roughly 33% larger than the original, but it can travel safely through systems that choke on raw binary — email (MIME), JSON payloads, data URIs, and JWT tokens all rely on it. This tool lets you encode text into Base64 or decode Base64 back into readable text, entirely in your browser.
How it works
- 1Pick a direction: Encode turns plain text into a Base64 string, Decode does the reverse.
- 2Paste your input on the left.
- 3Click Process. The result appears on the right instantly — no round-trip to a server.
- 4Toggle the mode any time to go the other way.
Capabilities
- Two-way conversion — Encode and decode in the same interface — switch with one click.
- Full Unicode / UTF-8 — Handles multi-byte characters, CJK text, emoji, and special symbols without mangling.
- Client-side only — Uses the browser’s native
btoa/atobwith a UTF-8 shim. Your data never hits a network. - No size ceiling — Processing is bounded by your browser’s memory, not by an upload limit. Multi-MB inputs work fine.
Where developers reach for this
- JWT inspection — Split a JWT on the dots and decode the header/payload segments to read the claims without a library.
- API payloads — Some APIs wrap binary attachments or signed blobs in Base64. Decode to see what’s inside.
- Kubernetes secrets — K8s stores secret values as Base64. Decode to audit, encode to write new ones.
- Data URIs — Decode the Base64 portion of a
data:image/png;base64,...string to inspect the raw content. - Email debugging — MIME encodes attachments and sometimes body parts in Base64. Decode to read the original.
Example round-trip
// Plain text input:
{"user": "alice", "role": "admin"}
// After encoding (Base64):
eyJ1c2VyIjogImFsaWNlIiwgInJvbGUiOiAiYWRtaW4ifQ==
// After decoding back:
{"user": "alice", "role": "admin"}Common questions
Does my data leave the browser?
No. Encoding and decoding both use browser-native JavaScript APIs. There are no fetch calls, no server logs, no telemetry on your input.
Why is the encoded output bigger than the input?
Base64 represents every 3 bytes of input as 4 ASCII characters, so the output is always ~33% larger. This is inherent to the encoding, not a bug.
What about URL-safe Base64 (`RFC 4648`)?
This tool uses standard Base64 (+, /). If your string uses the URL-safe variant (-, _), swap those characters before decoding. A future update will handle both automatically.
Can I encode binary files?
This tool handles text input. For raw binary files (images, PDFs), you’d need a file-to-Base64 converter that reads the file bytes directly.