Skip to main content
FreeOnlineTools Go
English
explanation

What Is Base64 Encoding? A Complete Explanation

By FreeOnlineTools Team · Updated 2026-09-02

Quick Answer

Base64 encoding converts binary data into text using 64 printable characters (A-Z, a-z, 0-9, +, /). Every 3 bytes of input becomes 4 Base64 characters. Base64 is reversible (not encryption) and increases data size by ~33%. Use our free Base64 Encoder and Decoder to convert in your browser.

Introduction

Base64 is a binary-to-text encoding scheme that converts binary data into an ASCII string representation using 64 printable characters. It is defined by RFC 4648 and is commonly used to encode data that needs to be transmitted over media designed to handle text — email attachments (MIME), Data URLs in HTML/CSS, JWT token parts, and JSON payloads containing binary data. Base64 is encoding, not encryption — it is fully reversible and requires no key. Anyone can decode Base64, so it provides no confidentiality.

Step by Step

  1. Understand the character set

    Base64 uses 64 characters: A-Z (26), a-z (26), 0-9 (10), + and / (2). The = character is used for padding when the input length is not a multiple of 3. The URL-safe variant replaces + with - and / with _ and omits padding.

  2. Learn how encoding works

    Base64 processes input in 3-byte (24-bit) blocks. Each 24-bit block is split into four 6-bit groups. Each 6-bit value (0-63) maps to one of the 64 characters. If the input is not a multiple of 3, padding (=) is added: 1 byte input → 2 Base64 chars + ==, 2 bytes → 3 chars + =.

  3. Understand the size overhead

    Base64 increases data size by approximately 33% — every 3 bytes becomes 4 characters. A 1 MB file becomes ~1.33 MB when Base64-encoded. This overhead is the trade-off for text-only compatibility.

  4. Distinguish encoding from encryption

    Base64 is encoding, not encryption. It is reversible without a key — anyone can decode it. Base64 provides no confidentiality; it only converts binary to text for transport. Never use Base64 to store passwords or secrets.

Examples

Encode text

Input: Hello, World!

Output: SGVsbG8sIFdvcmxkIQ==

Encode binary data (shown as hex)

Input: Bytes: 0x00 0x01 0x02

Output: AAEC

URL-safe Base64 (JWT style)

Input: Standard: SGVsbG8= → URL-safe: SGVsbG8 (no padding, - and _ for + and /)

Output: Used in JWT tokens and URL parameters

Common Problems

  • Treating Base64 as encryption —Base64 is reversible without a key. Anyone can decode it. Never use it to protect sensitive data.
  • Non-ASCII characters —naive btoa() throws on Unicode. Use TextEncoder + btoa(unescape(encodeURIComponent(text))) or a UTF-8-aware tool.
  • Padding removal —the = padding is part of the encoding. Removing it breaks decoding (though some decoders can reconstruct it).
  • Size overhead —Base64 adds ~33% to data size. For large files, this is significant; consider whether encoding is necessary.

Tips

  • Use Base64 for Data URLs to embed small images in HTML/CSS without a separate HTTP request.
  • Use URL-safe Base64 (replace + with -, / with _, strip padding) for URLs and JWT tokens.
  • Base64 is not encryption —use it for transport compatibility, not for confidentiality.
  • Use our Base64 Encoder and Decoder for instant, private conversion in your browser.

Related Tools

Related Guides

References