What the result contains
What This Tool Provides
Encode UTF-8 text as standard Base64 or decode standard Base64 bytes back to UTF-8. This is a reversible binary-to-text representation for transport and storage—not encryption, hashing, or compression.
- Standard Base64 text using + and /
- UTF-8 decoding for emoji, accented text, and non-Latin scripts
- Validation of the Base64 alphabet and padding
- A copyable plain-text result
How to Use This Tool
- Add textType plain text to encode or paste standard Base64 to decode.
- Choose directionSelect Encode to Base64 or Decode from Base64.
- Check and copyRead any alphabet or UTF-8 error, then copy the successful output.
How It Works
Encoding converts the string to UTF-8 bytes and groups the bits into six-bit Base64 values. Decoding reverses that mapping and then requires the bytes to be valid UTF-8 text. The implementation uses TextEncoder/TextDecoder instead of passing arbitrary Unicode directly to legacy btoa/atob.
Worked Examples
ASCII round trip
- Input
Hello- Output
SGVsbG8=
Decoding the output returns exactly “Hello”.
Unicode round trip
- Input
नमस्ते- Output
4KSo4KSu4KS44KWN4KSk4KWH
The text is encoded as UTF-8 bytes first, preserving the Devanagari characters.
Base64 Is Encoding, Not Security
Anyone holding the encoded string can decode it in a second, so Base64 protects nothing. If the value needs to be secret, generate a strong random one and keep the encoding as a transport detail.
Most Base64 you meet wraps something else. A decoded JWT body is JSON that is unreadable until you format it, its exp field is an epoch timestamp, and values in URLs need percent-encoding rather than Base64 — a distinction that causes a lot of confusion.
Encoding, Encryption, Hashing, and Compression
| Operation | Purpose | Reversible? |
|---|---|---|
| Base64 encoding | Represent bytes as portable text | Yes, without a key |
| Encryption | Hide content from people without a key | Yes, with the key |
| Hashing | Create a one-way digest | Normally no |
| Compression | Reduce storage or transfer size | Yes, with decompression |
Padding and Variants
An equals sign at the end fills the final four-character Base64 block; it is padding, not hidden content. This tool accepts standard Base64. Base64URL uses - and _ in place of + and / and is not treated as the same format here.
Important Edge Cases
- Whitespace in Base64 input is ignored.
- Bytes that are valid Base64 but not valid UTF-8 are rejected because this is a text decoder.
- Base64 output is commonly larger than the original bytes.
Limitations
- This page handles text, not arbitrary file uploads.
- It does not support Base64URL.
- Encoding does not protect secrets from anyone who can read the result.
Input handling
Private Browser Processing
Encoding and decoding happen locally. The input and output are not submitted to Tiny Tiny Tools.
Google Analytics records page visits and whether a tool finished or failed, but these tool implementations do not send field values, generated passwords, QR payloads, uploaded QR images, or camera frames to analytics or a Tiny Tiny Tools processing endpoint.
Safety note: Do not mistake Base64 for secret storage. Credentials and tokens remain readable after decoding.
See the Privacy Policy for site-wide details.
Questions About This Tool
Is Base64 encryption?
No. It is reversible without a password or key, so anyone can decode it.
Why does Base64 sometimes end with = or ==?
Padding completes the final four-character block when the byte count is not divisible by three.
Does this work with emoji and non-Latin text?
Yes. The text is converted to UTF-8 bytes before Base64 encoding and decoded with a strict UTF-8 decoder.
Does it support Base64URL?
No. This page validates the standard + and / alphabet. Base64URL uses - and _.