Base64 Encoder / Decoder

Encode text into Base64 or decode Base64 back to readable text. Full UTF-8 support for emoji, Chinese, and any Unicode input. Everything runs in your browser — your data never leaves your device.

Plain Text Input 0 chars
Base64 Output 0 chars

About Base64 Encoding

Base64 is a binary-to-text encoding scheme that represents arbitrary binary data using a 64-character alphabet: A-Z, a-z, 0-9, +, and /. It was originally designed so binary content could be transmitted through protocols that only reliably handle ASCII text — email (MIME), HTTP headers, JSON payloads, XML, and data URIs.

Common use cases

Standard vs. URL-safe variant

Standard Base64 uses + and /, which have special meaning in URLs and filenames. The URL-safe variant (RFC 4648 §5) replaces them with - and _, and typically omits the = padding. Toggle the option above when working with URLs, JWT tokens, or file names.

Not encryption

Base64 is fully reversible with no secret key. Anyone can decode a Base64 string back to its original content. Never use Base64 to protect passwords, API secrets, or personal data — use proper cryptographic hashing or encryption instead.

Frequently Asked Questions

Is my input sent to a server?
No. The encoding and decoding happens entirely in your browser using native JavaScript. Nothing is uploaded or logged.
Does it support emoji and non-Latin characters?
Yes. Input is encoded as UTF-8 first, so emoji, Chinese, Japanese, Arabic, Cyrillic, and all other Unicode text are handled correctly on both encode and decode.
Why did I get a decode error?
The input contains characters outside the Base64 alphabet, has incorrect padding, or is corrupted. If the string came from a URL or JWT, try enabling the URL-safe variant option before decoding.
What is the = padding at the end?
Standard Base64 encodes input in groups of 3 bytes into 4 characters. When the input length is not a multiple of 3, one or two = characters are added to pad the output to a multiple of 4.
Is there a size limit?
There is no hard limit imposed by this tool, but very large inputs (tens of MB) may make your browser sluggish since all processing happens client-side.