Base64 Encoder & Decoder
Encode and decode Base64 text instantly.
Runs in your browser — your text never leaves your device.
Save this tool
Keep Base64 Encoder & Decoder handy
Use your browser's Share menu, then “Add to Home Screen”.
About this tool
Base64 represents binary data using only 64 printable characters, which is what lets you push arbitrary bytes through channels that expect text: email attachments, JSON payloads, data URLs, HTTP headers and JWTs. This tool converts in both directions and handles Unicode correctly, which matters more than it sounds. The browser's built-in Base64 functions only understand Latin-1, so tools that call them directly mangle accented characters, emoji and anything CJK. This one encodes to UTF-8 first, so text in any language survives the round trip intact. There is also a URL-safe mode that swaps plus and slash for hyphen and underscore and drops the padding, which is the variant used inside JSON Web Tokens and query strings. Decoding accepts either variant automatically. Everything runs locally, so tokens and payloads you paste here are never transmitted.
How to use it
- Paste your text or Base64 into the box
- Choose Encode or Decode
- Copy the result
Frequently asked questions
Does Base64 encrypt my data?
No, and this is a common and dangerous misunderstanding. Base64 is an encoding, not encryption. Anyone can decode it instantly without a key. Never use it to protect passwords, tokens or personal data in transit or at rest.
Why do other Base64 tools break my emoji or accented text?
Because they call the browser's btoa() directly, which only supports Latin-1 characters. Anything outside that range throws an error or is silently corrupted. This tool converts text to UTF-8 bytes first, so any language encodes and decodes correctly.
What is URL-safe Base64?
A variant defined in RFC 4648 that replaces the plus and slash characters with hyphen and underscore, and usually drops the trailing equals padding. It exists because plus and slash have special meaning inside URLs. It is what JWTs use for their segments.
Why is my encoded output about a third longer than the input?
Base64 represents every three bytes as four characters, so output is roughly 133% the size of the input, plus padding. That overhead is the price of making binary data safe to send through text-only channels.
Can I decode a JWT here?
You can decode its individual segments, since they are URL-safe Base64, and this tool accepts that variant automatically. For reading a whole token at once, including its header and expiry, use the dedicated JWT decoder instead.