Free Base64 Encoder/Decoder Online

Encode text or files to Base64 format, or decode Base64 strings back to their original content.

Last updated

Base64 is the duct tape of the web. It is the encoding that lets you stuff binary data — images, fonts, certificates, file attachments — into places that only accept plain text, like JSON payloads, HTML attributes, CSS files, email MIME bodies, and URL query strings. Our free online Base64 Encoder / Decoder gives you a fast, no-fuss way to convert in either direction. Paste a string into the input box, pick Encode or Decode, and the result appears instantly in the output panel ready to copy. The conversion runs locally in your browser tab, which means even sensitive payloads (API tokens, signed JWTs, credential blobs, snippets of an OAuth response) never leave your device. There is no server round-trip, no logging, and no rate limit. The tool handles plain ASCII as well as full Unicode — UTF-8 multibyte characters like accented letters, emoji, Chinese, Cyrillic, and Arabic round-trip cleanly because the encoder converts text to UTF-8 bytes first and then to Base64, which is the standard most modern systems expect. For decoding, the tool accepts both standard Base64 and URL-safe Base64 (the variant that swaps `+` and `/` for `-` and `_`, used in JWT headers and S3 presigned URLs), and it tolerates input with or without padding `=` characters. Common scenarios this tool covers: turning a small image into a `data:image/png;base64,...` URI for embedding in CSS without an HTTP request; decoding the middle segment of a JWT to read the claims while debugging an auth bug; converting a credential string from a config file back to its plaintext form; preparing a binary blob for inclusion in a JSON request body; and round-tripping a Unicode string to make sure your encoding pipeline preserves it correctly. The output panel includes a length counter so you can see at a glance whether your encoded string fits inside a length-limited field (URL parameters and DNS labels both have limits). For developers debugging an API integration, this is the kind of tool you keep open in a tab next to your terminal. For students learning how data moves between systems, it is a quick way to see exactly what Base64 looks like at the character level — the alphabet of 64 ASCII characters, the padding rules, and how four output characters represent every three input bytes.

Three concrete examples this tool handles in seconds. (1) **Embedding a small icon in a CSS file**: convert the SVG/PNG to Base64, prefix with `data:image/png;base64,`, and paste into a `background-image` rule — one fewer HTTP request on page load. (2) **Debugging a JWT in a failing OAuth flow**: copy the middle segment from your auth header, paste it here, decode, and read the claims (`exp`, `iat`, `sub`, `aud`) to spot the wrong audience or expired token. (3) **Decoding a credential blob from a Kubernetes secret**: `kubectl get secret -o yaml` returns base64-encoded values; paste one in to verify the decoded password matches what you expect before you ship a deployment.

Why use this instead of `base64` on the command line or another website? The CLI tool (`base64` on macOS/Linux, `certutil -encode` on Windows) is excellent if you have a terminal open, but it has subtle gotchas around line wrapping and trailing newlines that bite people writing one-off pipelines. Many other web encoders quietly use UTF-16 internally, which corrupts non-ASCII inputs (paste an emoji and watch the round-trip break). This page uses UTF-8 on both sides, accepts both standard and URL-safe variants on input, and runs entirely locally so even sensitive payloads (tokens, secrets, signed claims) never reach a server. For related encoding work, the [HTML Encoder/Decoder](/tools/html-encoder) handles HTML entities (`&`, `<`, etc.), the [Character Encoding Converter](/tools/character-encoding) translates between UTF-8, ASCII, and ISO-8859-1, and the [JSON Formatter](/tools/json-formatter) is the right next stop after you decode a JWT payload and want to read the claims with proper indentation.

How to Use Base64 Encoder/Decoder

1

Paste Your Input

Drop plain text into the input box for encoding, or paste a Base64 string for decoding. Both standard and URL-safe Base64 are accepted on the decode side.

2

Pick Encode or Decode

Click the Encode button to convert text → Base64, or Decode to reverse the operation. The mode is a single toggle, so switching is instant.

3

Copy the Result

The output appears in the result panel with a copy-to-clipboard button. The character count is shown so you can verify it fits inside a length-restricted field.

Features

Unicode-Safe Conversion

Handles UTF-8 multibyte characters cleanly. Emoji, accented letters, and CJK text round-trip without corruption.

Standard and URL-Safe

Decodes both regular Base64 and the URL-safe variant used in JWTs and S3 presigned URLs, with or without padding.

Instant Local Processing

Conversions run in your browser using the native btoa/atob APIs plus a UTF-8 layer. Your data is never sent over the network.

Length Counter

See the character length of both input and output, which is useful when working with size-limited fields like URL parameters or DNS records.

Benefits of Using Base64 Encoder/Decoder

Completely Free

Use Base64 Encoder/Decoder without any cost, limits, or hidden fees. No premium plans needed.

No Installation

Works directly in your browser. No software downloads or plugins required.

100% Private

Your files and data are processed locally. Nothing is uploaded to external servers.

Works Everywhere

Compatible with Chrome, Firefox, Safari, Edge on desktop, tablet, and mobile.

No Sign-Up

Start using the tool immediately. No account creation or email verification.

Always Available

Access this tool 24/7 from anywhere in the world, on any device.

Frequently Asked Questions

Almost always a Unicode mismatch. If the original text was encoded as UTF-8 (the default for any modern system) but your decoder treats the result as Latin-1, multibyte characters will look wrong. This tool always uses UTF-8 on both sides, so as long as both encoder and decoder used UTF-8 the round-trip will be lossless.
Yes — paste either the header or payload segment (the parts separated by dots) and click Decode. JWT segments use URL-safe Base64 without padding, which the tool handles automatically. The signature segment is opaque binary, so decoding it produces gibberish — that is expected.
Standard Base64 uses the characters A–Z, a–z, 0–9, +, /, and = for padding. URL-safe Base64 replaces + with - and / with _, and often omits padding, so the encoded string can be safely placed in URLs and filenames without escaping.
No. Base64 is an encoding, not encryption. Anyone who sees a Base64 string can decode it back to the original instantly — exactly what this tool does. Never use Base64 to "hide" sensitive data; use real encryption (AES, for example) for that.
Base64 expands data by roughly 4/3 — every 3 bytes of input become 4 characters of output, plus padding. So a 1 KB binary file becomes about 1.37 KB of Base64. Account for this when fitting data into size-limited fields.
This page is optimized for text-to-Base64 and Base64-to-text. For converting an image file directly into a `data:` URI, our Image Compressor and Favicon Generator tools handle that as part of their export options.
The output is produced as a single unbroken string. Some legacy systems (older email MIME implementations, for example) expect a line break every 76 characters; you can add those manually if needed, but most modern systems accept the unbroken form.