Base64 Encoder

Convert text — including emoji and accents — into a Base64 string.

Type or paste text and this tool converts it to a Base64 string. Base64 rewrites data using a 64-character alphabet so it can travel safely through systems that only handle plain text — data URIs, email attachments, JSON fields and HTTP headers. This encoder is UTF-8 safe, so emoji and accented characters convert correctly rather than breaking. It runs entirely in your browser.

Why UTF-8 handling matters

The browser's built-in btoa() function only accepts characters in the Latin-1 range and throws an error on anything else — paste an emoji or an é and a naive encoder falls over. This tool first encodes your text as UTF-8 (via encodeURIComponent) before applying Base64, so the full range of Unicode round-trips cleanly. Decode the result with a matching UTF-8-aware decoder and you'll get your original text back exactly.

Encoding is not encryption

It's worth being clear: Base64 is an encoding, not encryption. It doesn't hide or protect your data — anyone can paste the string into a decoder and read it instantly. Use it to make data safe to transport or embed, never to keep a secret. If you need confidentiality, encrypt the data first and Base64-encode the ciphertext if you then need it in text form.

Frequently Asked Questions

Does it handle emoji and accented characters?

Yes. It encodes your text as UTF-8 before applying Base64, so emoji, accents and other Unicode characters convert correctly instead of causing an error.

Is Base64 a way to secure or hide my data?

No. Base64 is reversible encoding, not encryption — anyone can decode it. Use it for safe transport or embedding, and encrypt separately if you need real confidentiality.

What is Base64 actually used for?

Common uses include embedding images in CSS or HTML as data URIs, encoding binary in JSON or XML, email (MIME) attachments, and Basic Auth headers — anywhere binary data must pass through a text-only channel.

Why is the encoded output longer than my text?

Base64 represents every 3 bytes as 4 characters, so the output is roughly 33% larger than the input. That size increase is the trade-off for text-safe transport.