# What is Base64 Encoding?

> Base64 is a binary-to-text encoding scheme that represents binary data as a string of ASCII characters, using a 64-character alphabet of letters, digits, plus, and slash.

- URL: https://www.browserutils.dev/glossary/base64
- Published: 2026-03-21
- Updated: 2026-03-16

---

**Base64** is a binary-to-text encoding scheme that represents binary data as a string of ASCII characters, using a 64-character alphabet of uppercase letters (A-Z), lowercase letters (a-z), digits (0-9), plus (+), and slash (/). The equals sign (=) is used for padding.

## How it works

Base64 takes every 3 bytes (24 bits) of input and splits them into 4 groups of 6 bits each. Each 6-bit group maps to one of the 64 characters in the alphabet. If the input length isn't divisible by 3, the output is padded with one or two `=` characters.

This means Base64-encoded data is always about 33% larger than the original. Three bytes become four characters — that's the trade-off for safe text transmission.

```
Original:  Hello
Binary:    01001000 01100101 01101100 01101100 01101111
Base64:    SGVsbG8=
```

## Why developers use Base64

Base64 exists to safely transmit binary data through text-only channels. Email attachments use it (MIME encoding). Data URIs embed images directly in HTML or CSS using Base64. JSON payloads that need to carry binary data — file uploads, cryptographic keys, image thumbnails — encode that data as Base64 strings.

JWTs (JSON Web Tokens) use a URL-safe variant called Base64URL, which swaps `+` and `/` for `-` and `_` and drops the padding. This makes the encoded string safe for URLs and headers.

## Common use cases

- Embedding small images in CSS: `background-image: url(data:image/png;base64,...)`
- Sending file attachments in API requests as JSON fields
- Encoding credentials in HTTP Basic Authentication headers
- Storing binary blobs in text-based databases or config files

## Practical examples

In JavaScript: `btoa('Hello')` returns `"SGVsbG8="`, and `atob('SGVsbG8=')` returns `"Hello"`. In Python: `base64.b64encode(b'Hello')`. On the command line: `echo -n 'Hello' | base64`.

You can encode and decode Base64 strings with the [Base64 Encoder/Decoder](/tools/base64-encode-decode), or convert images directly with [Image to Base64](/tools/image-to-base64). Working with JWTs? The [JWT Decoder](/tools/jwt-decoder) handles Base64URL automatically.

## When not to use Base64

Base64 is not encryption. It provides zero security — anyone can decode it. Don't use it to "hide" sensitive data. Also avoid it for large files; the 33% size overhead adds up fast. For transferring large binaries, use proper multipart uploads instead.