Skip to main content

Generator · Free

Base64 encode / decode

Base64 is a way of packaging text or binary data into a string of safe characters — used in email headers, API payloads, data: URLs, and basic-auth headers. Encode text to base64 or decode it back to plain text. Unicode-safe. Runs in your browser — no signup, no data sent anywhere.

Mode
Result

Type or paste input above to see the result here.

About this base64 encoder / decoder

Base64 packages binary data or text into a string of 64 safe characters (A-Z, a-z, 0-9, plus + and /), so it survives transport through systems that only handle ASCII — email headers, JSON payloads, URL parameters, HTTP basic-auth headers, data: URLs that embed images directly in HTML. It is not encryption: anyone can decode base64. It is just a packaging format.

This tool encodes and decodes in your browser using native btoa / atob plus TextEncoder for full Unicode support (so emoji and non-Latin scripts work correctly — the naive btoa(str) approach fails on anything outside Latin-1). Nothing leaves your device. No signup. Click try with a sample if you want to see it work instantly.

Common questions

Is base64 encryption?
No. Base64 is a packaging format — anyone can decode it instantly. Don't use base64 to hide passwords or secrets. Use it when you need to safely transport binary data through a text-only channel (email, JSON, URL).
Why is this tool needed if Python/Node have base64 built in?
Because most everyday encoding/decoding happens outside a script — you're debugging an API response, decoding a JWT header, checking what an auth token contains, embedding a small image in HTML. Opening a terminal and writing a one-liner for that is friction; pasting into a textarea is not.
Why does my emoji or non-English text break in other base64 tools?
Because they use the naive btoa(str) approach which only handles Latin-1 characters. This tool uses TextEncoder first to convert text to UTF-8 bytes, then base64-encodes the bytes — which is the correct Unicode-safe pattern. Decoding reverses it with TextDecoder.
What's the deal with the = signs at the end?
Base64 pads the output to a multiple of 4 characters using =. The padding tells the decoder how many bytes the original input was (1, 2, or 3 mod 3). Some systems strip the padding; this tool always includes it because most decoders expect it.
Is base64 the same as base64url?
Almost. Base64url replaces + with - and / with _ so the result is safe to use in URLs without encoding. This tool emits standard base64; if you need base64url (common in JWTs), you'll need to swap those characters manually.

Tools that support the system

The tool is the starting point. Moonshot is where you carry the work forward.

The tool is the starting point. Moonshot is the software that keeps the issue, next move, and follow-through visible over time.

Free Base64 Encode / Decode — Unicode-safe | Moonshot Tools