Base64 Encode UTF-8 Text and Emoji
Encode Unicode text, accents and emoji to Base64 correctly. Avoid the btoa "Invalid character" error by encoding as UTF-8 first.
Part of the free Base64 Encoder. Runs in your browser — nothing is uploaded.
Base64 Encode UTF-8 Text and Emoji
JavaScript's btoa() throws on characters outside Latin-1, and many online encoders corrupt them. This encoder converts text to UTF-8 bytes first, so every character, including emoji, round-trips safely.
Worked example: Accents and an emoji
Text
Café ☕ naïve
Base64
Q2Fmw6kg4piVIG5hw692ZQ==
Practical tip
In JavaScript, encode with btoa(String.fromCharCode(...new TextEncoder().encode(text))) or use Buffer.from(text, "utf8").toString("base64") in Node.
How to use this Base64 Encoder
- 1Use the live tool above — it runs entirely in your browser and never uploads your data.
- 2Paste the sample from the worked example, or use your own input.
- 3Copy the result, then adapt the same steps in your editor, script, or pipeline.
Base64 Encode UTF-8 Text and Emoji FAQs
Why does btoa fail on emoji?
btoa only accepts characters with code points up to 255. Emoji exceed that, so you must convert to UTF-8 bytes first.
Do I get the same result in Python and Node?
Yes, as long as both encode text as UTF-8 before Base64. The Base64 algorithm itself is identical everywhere.
More Base64 Encoder pages
- Encode a String to Base64Encode any text string to Base64 online. Paste your text and copy the result instantly. Supports UTF-8, free and processed in your browser.
- Base64URL Encoder (URL-Safe Base64)Encode text to URL-safe Base64 (Base64URL) with - and _ instead of + and /, and no padding. The format used in JWTs and URLs.
- HTTP Basic Auth Header GeneratorGenerate an HTTP Basic Authorization header by Base64-encoding username:password. Build the header for curl, fetch and Postman.
- Encode JSON to Base64Encode a JSON object to Base64 for headers, query strings and config values. Paste JSON and copy the encoded string. Free and local.
- Base64 Encode in JavaScriptEncode a string to Base64 in JavaScript with btoa() in the browser or Buffer in Node.js. Check your result with the encoder before shipping.
- Base64 Encode a URLBase64 encode a URL to pass it safely as a parameter, hide it from casual reading or store it in a single token. Use Base64URL for safer links.
- Base64 MIME Encoding With 76-Character LinesMIME Base64 wraps lines at 76 characters. See what wrapped output looks like for email attachments and PEM-style data.
- Base64 Encode in PythonEncode a string to Base64 in Python with base64.b64encode. Remember to encode to bytes first and decode the result. Verify with the online encoder.
- Base64 Encoding Without PaddingEncode to Base64 without = padding characters. See when padding is optional, how to add it back, and why JWTs omit it.