FileToolHub

Encode and decode Base64 online

Base64 shows up everywhere — API tokens, data URIs, email attachments. Switch between encode and decode mode, paste your text, and see the result instantly. This tool correctly handles Unicode text (emoji, non-Latin scripts), unlike naive btoa/atob usage, by encoding through UTF-8 bytes first. Everything runs in your browser; nothing you paste is sent anywhere.

What Base64 is for

Base64 represents binary data using only 64 safe text characters, which lets it travel through systems that expect text — email bodies, JSON fields, data URIs embedded in CSS, HTTP headers. It is an encoding, not encryption: anyone can decode it instantly, and it provides no security whatsoever. Base64 in a URL or a token is there to make binary data survive transport, not to hide it.

Unicode handled correctly

The browser's built-in btoa function fails outright on characters above the basic Latin range, which is why so many Base64 tools mangle emoji, Devanagari, and accented text. This tool encodes through UTF-8 bytes first, so any text round-trips exactly — encode 'नमस्ते 🎉' and decoding returns it unchanged rather than throwing an error or producing replacement characters.

The size cost

Base64 expands data by roughly a third, because it stores three bytes of input in four characters of output. That is worth knowing when embedding images as data URIs: a 100KB image becomes about 133KB of text in your HTML or CSS, and unlike a linked file it cannot be cached separately by the browser. Data URIs suit small icons; for anything substantial, a normal file reference is faster.

Frequently asked questions

Does this handle non-English text and emoji?
Yes, text is encoded as UTF-8 bytes before base64 encoding, so accented characters, non-Latin scripts, and emoji round-trip correctly.
What happens if I paste invalid Base64 in decode mode?
You'll see a clear error instead of garbled output or a crash.
Is my text sent anywhere?
No, encoding and decoding happen locally in your browser using JavaScript. Nothing is transmitted.
Is Base64 a form of encryption?
No, and treating it as one is a genuine security mistake. It is trivially reversible by anyone — it exists to make binary data survive text-only channels.
Why did another tool break my emoji?
Most use btoa directly, which cannot handle characters outside Latin-1. Encoding via UTF-8 bytes first, as this tool does, handles any text.

Related tools