👤 Pro — remove adsPro
// text ↔ base64

Base64 encode & decode

Paste text to encode it as Base64, or paste Base64 to read what's inside — converted live as you type, fully UTF-8 safe.

Free — unlimited use.

Where Base64 turns up in the wild

Once you can recognise it, Base64 is everywhere: the src of an image embedded straight into HTML or CSS as a data URI, the attachment blocks of a raw e-mail, the value after Basic in an Authorization header, half the API keys and webhook secrets in a config file, and each of the three dot-separated segments of a JWT. The tell is a long run of letters and digits with the odd plus or slash, often ending in one or two equals signs. Whenever a system that only speaks plain text needs to carry something that is not plain text, Base64 is the envelope it gets posted in — and this page is the letter opener.

The price: a third bigger, and sometimes not text at all

The envelope is not free. Base64 turns every 3 bytes into 4 characters, so anything you encode grows by roughly a third, with equals signs padding out the final group. For a small icon or a short secret that is a fine trade; for large files it is why attachments inflate e-mails so noticeably. The other honest limit sits on the decode side: this tool decodes to text. If the Base64 you paste holds an image, a ZIP or other binary data, the strict UTF-8 check refuses and says so, rather than printing a screenful of garbled symbols and letting you think the data is broken. The data is usually fine — it simply is not text, and needs to be saved as a file by whatever produced it.

A debugging companion

In practice this page gets used less for encoding and more for answering the question: what did that system actually send? Paste the payload from a log line, a data URI from a stylesheet, or a suspicious blob from an API response, and you know in a second whether it is readable configuration or opaque binary. Going the other way, encoding a test string here is the fastest way to hand-craft a payload for an API that expects Base64 fields. Everything runs in your browser, free and unlimited. Two natural companions: when Base64 travels inside a link it often wears a layer of percent-encoding on top — peel that off first with the URL encoder — and for tokens, the JWT decoder splits and decodes all three parts in one go.

What Base64 actually is

Base64 is not encryption — it's a way to write any data using only 64 safe characters (A-Z, a-z, 0-9, + and /), so it survives systems that only handle plain text, like email attachments or data embedded in web pages. Anyone can decode it, which is exactly the point.

Does this handle accents, emoji and non-Latin text?

Yes — text is encoded as UTF-8 bytes first, which is what virtually every modern system expects. Naive converters that skip this step corrupt anything beyond basic ASCII.

What about URL-safe Base64 (with - and _)?

Decoding accepts it automatically — the URL-safe variant just replaces + with - and / with _ so the result can live inside a URL. Missing = padding at the end is tolerated too.

Is my text sent anywhere?

No — this runs entirely in your browser with plain JavaScript. Nothing is uploaded.

Convertburda — universal conversions