Base64 encode & decode, done right
UTF-8 safe both ways — emoji survive, tokens stay in your tab.
The encoding everyone uses and half the tools get wrong
Base64 hides in plain sight: JWT tokens, data URLs, email internals, Kubernetes secrets. Two things go wrong with casual tools — non-ASCII text gets mangled by naive btoa() calls, and binary payloads get printed as garbage instead of being identified. This tool does the boring things correctly: UTF-8 both directions, honest errors for invalid input and non-text payloads, and — since what you paste is frequently a credential — zero transmission by architecture.
Related text tools
Frequently asked questions
How do I encode or decode Base64?
Paste into the top box: Encode turns text into Base64, Decode turns Base64 back into text. Whitespace and line breaks in pasted Base64 are cleaned up automatically.
Why do other Base64 tools corrupt Turkish, emoji or Chinese text?
Naive tools call btoa() directly, which breaks on anything beyond ASCII. This one routes through UTF-8 (TextEncoder/TextDecoder), so ü, 中文 and 🌍 survive the round trip exactly.
My Base64 decodes to gibberish. Why?
The payload probably isn’t text — Base64 often wraps binary data like images or keys. The tool tells you explicitly when the bytes aren’t valid UTF-8 instead of printing garbage.
What is Base64 actually for?
Representing binary data as safe printable characters: email attachments (this is why they grow ~33%), data: URLs, API tokens, config values. It is encoding, not encryption — anyone can decode it.
Is what I paste sent anywhere?
No — and Base64 payloads are often tokens and credentials, so that matters. Encoding and decoding are pure functions running in this tab.