Decode · Encode · Analyse

Base64 to Text
Converter

Decode any Base64 string to plain text instantly. Supports UTF-8, UTF-16, Latin-1, and ASCII. Two-way conversion, live character stats, URL-safe mode, and multi-line batch decoding all privately in your browser.

Encoding: Output:
Base64 Input0 chars
Decoded Text0 chars
0Characters
0Words
0Lines
0Bytes (UTF-8)
0Unique Chars
0Base64 Length
6
Encodings
4
Tool Tabs
0ms
Server Latency
100%
Private & Secure

Decode Base64 to Text in Three Steps

No sign-up, no server contact. Paste, decode, and copy in seconds.

1

Paste Base64 String

Copy your Base64 string and paste it into the input. The decoder accepts standard Base64 with or without = padding, and automatically strips surrounding whitespace.

2

Select Character Encoding

Choose the correct character encoding UTF-8 is right for most modern text including emoji and international characters. Use Latin-1 or Windows-1252 for legacy Western European content.

3

Copy or Download

Copy the decoded text to your clipboard, download it as a .txt file, or switch tabs to re-encode it back to Base64 with a different encoding or line-wrap format.

A Complete Base64 Text Toolkit

Decode, encode, URL-safe mode, batch processing, and live stats all in one private tool.

🌍

Multi-Encoding Support

Decode using UTF-8, UTF-16 (LE and BE), Latin-1 / ISO-8859-1, Windows-1252, or 7-bit ASCII. Covers Unicode, emoji, Japanese, Arabic, Cyrillic, and legacy Western European text.

📊

Live Character Stats

As you decode, see the character count, word count, line count, UTF-8 byte size, unique character count, and Base64 input length update instantly below the output.

🔗

URL-Safe Base64

Dedicated tab for URL-safe Base64 (JWT, OAuth, URL query strings) auto-converts -+ and _/, restores missing = padding, and shows the standard equivalent.

📋

Batch Decode

Paste a list of Base64 strings one per line and decode them all at once. Each result is displayed in a numbered row so you can quickly scan and copy individual values.

🔄

Two-Way Conversion

Encode plain text to Base64 with configurable line wrap (none, 64, 76 MIME, or 80 chars). Swap input and output between tabs with one click to round-trip any value.

🔒

100% Private

All encoding and decoding uses native browser APIs TextDecoder, atob(), btoa(). Nothing is transmitted. Works fully offline after page load.

Supported Encoding Reference

Choose the right encoding to correctly interpret non-ASCII characters in decoded Base64 strings.

EncodingCoverageUnicode?Best ForUse When
UTF-8 All Unicode (1.1M+ chars) Full Everything modern Default use unless you know otherwise
UTF-16 LE All Unicode Full Windows APIs, .NET strings Data from Windows / .NET systems
UTF-16 BE All Unicode Full Network byte order, Java strings Java serialised strings, network protocols
Latin-1 / ISO-8859-1 Western European (256 chars) No Legacy European text Old HTTP headers, legacy email, ISO-8859-1 forms
Windows-1252 Western European + extras No Legacy Windows documents Data from old Windows applications or Office docs
ASCII (7-bit) Basic Latin (128 chars) No Pure English text, protocols HTTP header values, email headers, protocol tokens

When You Need Base64 to Text

Base64-encoded text appears everywhere across the web stack from tokens to email headers.

01

JWT Token Inspection

JSON Web Tokens are three URL-safe Base64 segments separated by dots. Decode the header and payload segments to inspect claims, expiry timestamps, and algorithm settings without a dedicated JWT debugger.

02

Email Header & Body Decoding

SMTP email headers and MIME parts are routinely Base64-encoded, particularly for non-ASCII subject lines and encoded-word syntax (=?utf-8?B?…?=). Decode them here to read the original text.

03

API Response Debugging

REST APIs and webhooks sometimes return Base64-encoded strings for text fields error messages, descriptions, or content blocks. Quickly decode to read the actual value without writing a script.

04

OAuth & SAML Token Payloads

OAuth 2.0 access tokens and SAML assertions are Base64-encoded. Decode them during development and debugging to verify that claims, scopes, and attributes are set correctly.

05

Configuration & Secret Decoding

Kubernetes Secrets, Docker environment files, and CI/CD variable stores often encode configuration values as Base64. Decode them here to inspect or copy the raw values safely.

06

Log & Event Stream Analysis

Application logs and event streams sometimes include Base64-encoded fields for structured data. Use the batch decoder to paste a column of values and decode them all at once in seconds.

Base64 to Text Decoding Explained

Base64 encodes binary data as ASCII characters. To get text back, the process has two stages: first, decode the Base64 string back to raw bytes using atob(); second, interpret those bytes as a character string using the correct text encoding.

This second stage is critical. The same byte sequence means completely different characters in UTF-8 versus Latin-1. A multi-byte UTF-8 character like é (U+00E9) is encoded as two bytes 0xC3 0xA9. In Latin-1, those same two bytes decode to two separate characters. Using the wrong encoding produces garbled output called "mojibake".

The browser's native TextDecoder API handles all supported encodings. URL-safe Base64 substitutes - for + and _ for / and omits padding the tool reverses this before decoding.

// Base64 → Text (correct way)
 
function b64ToText(b64, enc) {
  // 1. Base64 → raw bytes
  const raw = atob(b64);
  const bytes =
    Uint8Array.from(raw,
      c => c.charCodeAt(0));
 
  // 2. Bytes → text via TextDecoder
  return new TextDecoder(enc)
    .decode(bytes);
}
 
// URL-safe → standard Base64
function fixUrlSafe(s) {
  return s
    .replace(/-/g,'+')
    .replace(/_/g,'/')
    + '=='.slice(0,
      (4 - s.length % 4) % 4);
}

Frequently Asked Questions

Everything you need to know about decoding Base64 to text.

Garbled output often called "mojibake" means the wrong character encoding was selected. The most common fix is switching from ASCII or Latin-1 to UTF-8. If the source system is Java or .NET, try UTF-16. If the text is from a legacy Windows application, try Windows-1252. The bytes themselves are correct it's the interpretation that differs.
Standard Base64 uses + and / as the 62nd and 63rd characters, with = padding. These characters have special meaning in URLs so URL-safe Base64 (RFC 4648 §5) replaces them: + becomes -, / becomes _, and padding is often omitted. JWT tokens, OAuth codes, and URL query parameters almost always use URL-safe Base64.
Yes. Base64 encodes every 3 bytes as 4 ASCII characters, producing output approximately 33% larger than the original. For plain ASCII text this is straightforward "Hello" (5 bytes) becomes SGVsbG8= (8 characters). For multi-byte UTF-8 text the overhead is higher because the UTF-8 byte count is greater than the character count.
The = padding characters are used to make the Base64 output length a multiple of 4. Many systems omit padding for compactness particularly URL-safe Base64 implementations. This tool accepts unpadded input and handles the missing padding automatically before decoding.
A JWT has three parts separated by dots: header.payload.signature. The header and payload are URL-safe Base64 (no padding). Use the URL-Safe Decode tab paste just the header or payload segment (without the dots) to decode and read the JSON. Note: do not paste the full token with dots, just one segment at a time. For signature verification you need the secret key this tool only decodes the payload.
Yes. Use the Batch Decode tab and paste one Base64 string per line. All lines are decoded independently and the results are displayed in numbered rows. You can then copy all results at once or download them as a text file useful for processing log exports or lists of encoded values from a database.
No. All encoding and decoding uses native browser APIs atob(), btoa(), and TextDecoder. Nothing is transmitted anywhere. The tool works fully offline after the page loads, making it safe for secrets, tokens, personal data, and any other sensitive content.
When "Escaped" is selected in the Decode tab, non-ASCII and non-printable characters are shown as Unicode escape sequences for example, a newline becomes \n, a tab becomes \t, and a Japanese character becomes \u65E5. This is useful for copying decoded output into source code strings or for identifying hidden control characters.