Local browser utility · Examples and limits included

Base64 Encoder/Decoder

Convert UTF-8 text to Base64 and decode Base64 back to readable text, including emoji and non-Latin characters.

Your text is processed locally in your browser. We don't store or send your data anywhere.

0 characters

ResultEnter text above, then choose Encode or Decode.

Your encoded or decoded text will appear here.

Base64 is an encoding, not encryption — anyone can decode it. Text is handled as UTF-8, so accented characters and emoji survive the round trip.

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

  1. Add textType plain text to encode or paste standard Base64 to decode.
  2. Choose directionSelect Encode to Base64 or Decode from Base64.
  3. 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

Why these operations are not interchangeable
OperationPurposeReversible?
Base64 encodingRepresent bytes as portable textYes, without a key
EncryptionHide content from people without a keyYes, with the key
HashingCreate a one-way digestNormally no
CompressionReduce storage or transfer sizeYes, 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 _.