Base64 Encode & Decode
Convert text to Base64 and back as you type. Full UTF-8 support means emoji and accented characters survive the round trip, and a URL-safe switch swaps in the - and _ alphabet for tokens and query strings.
About this Base64 encoder & decoder
Base64 turns any data into a string of 64 plain ASCII characters (A–Z, a–z, 0–9, plus + and /), so it can travel safely through systems that only expect text — email bodies, JSON fields, data URIs, and HTTP headers. This tool encodes the text you type and decodes Base64 back to readable text, both live. Every character is processed as UTF-8, so emoji, accents, and non-Latin scripts encode and decode without corruption.
How to use it
- Choose Encode to convert plain text to Base64, or Decode to convert Base64 back to text.
- Type or paste into the left panel — the result updates instantly on the right.
- Turn on URL-safe for the variant used in JWTs and query strings:
+becomes-,/becomes_, and padding=is dropped. - Use Swap to feed the output back as the input, or Copy to grab the result.
Is my text private?
Completely. Encoding and decoding use your browser's built-in functions in plain JavaScript. Nothing you paste is uploaded, logged, or stored anywhere — it never leaves the page.
Is Base64 a form of encryption?
No. Base64 is an encoding, not encryption — anyone can decode it back to the original without a key. It's for safe transport of data through text-only channels, not for keeping secrets.
Does it handle emoji and accented characters?
Yes. The text is first encoded to UTF-8 bytes and then to Base64, and decoding reverses that. This avoids the classic btoa error on characters above code point 255, so 😀, é, and 日本語 all round-trip correctly.
What is the URL-safe variant for?
Standard Base64 uses + and /, which have special meaning in URLs. The URL-safe alphabet replaces them with - and _ and omits padding, so the result can sit in a query string, filename, or JWT segment untouched.