Base64 encodes arbitrary bytes as a 64-character alphabet (A–Z, a–z, 0–9, +, /) plus = padding. It's the standard way to embed binary data — images, certificates, small files — into text-only formats like JSON, HTML, and email. It is encoding, not encryption: anything you Base64 should be treated as readable.
Base64 encode & decode
Base64 turns binary into URL- and email-safe text. It is encoding, not encryption — anything you Base64 you should consider readable.
Base64 encode & decode
UTF-8 safe — the encoder runs strings through TextEncoder before btoa, so multi-byte characters survive the round-trip.
QmV0dGVyV2ViSHViIOKAlCBwcmFjdGljYWwgZ3VpZGVzIHdpdGhvdXQgbWFya2V0aW5nIGZsdWZmLg==
Common use cases
Inlining a small image
Data URIs in CSS or HTML for icons that aren’t worth a separate HTTP request — chips, status dots, favicons.
Embedding a cert in a JSON payload
Kubernetes secrets, environment variables, configuration management — all want certificates as text.
Decoding a data: URL
Inspect what’s actually inside that base64-encoded SVG or font before deciding whether to inline it.
How to use this tool
- 1 Toggle Encode or Decode.
- 2 Paste input — we update the result live.
- 3 Copy the output.
Frequently asked questions
Is the result UTF-8 safe?
Yes. We run strings through TextEncoder before btoa, so multi-byte characters (emoji, Polish diacritics, CJK) round-trip cleanly. Naive btoa on raw Unicode would throw.
Base64 vs Base64URL?
Base64URL replaces + and / with - and _, and drops padding — necessary for use in URLs and JWTs. The JWT decoder handles this variant; this tool uses standard Base64.
Does Base64 compress data?
No, it expands it. Output is roughly 33% larger than input. Use it for transport compatibility, not size optimization.