Base64 Encoding and Decoding: The Complete Guide

What is Base64?

Base64 is a binary-to-text encoding scheme that represents binary data in an ASCII string format. It's widely used in various computer applications, especially when there's a need to encode binary data that needs to be stored and transferred over media designed to deal with textual data.

Why Use Base64?

Base64 is commonly used for several reasons:

How Base64 Works

Base64 encoding works by converting every three bytes of input data into four ASCII characters. Here's a simplified explanation of the process:

  1. Take 3 bytes of binary data (24 bits total)
  2. Split these 24 bits into four 6-bit chunks
  3. Convert each 6-bit chunk to its corresponding Base64 character

The Base64 alphabet consists of 64 characters: A-Z, a-z, 0-9, + and /. The = character is used for padding when the input data's length is not divisible by 3.

Base64 Encoding Table

Value Encoding  Value Encoding  Value Encoding  Value Encoding
    0 A            17 R            34 i            51 z
    1 B            18 S            35 j            52 0
    2 C            19 T            36 k            53 1
    3 D            20 U            37 l            54 2
    4 E            21 V            38 m            55 3
    5 F            22 W            39 n            56 4
    6 G            23 X            40 o            57 5
    7 H            24 Y            41 p            58 6
    8 I            25 Z            42 q            59 7
    9 J            26 a            43 r            60 8
   10 K            27 b            44 s            61 9
   11 L            28 c            45 t            62 +
   12 M            29 d            46 u            63 /
   13 N            30 e            47 v
   14 O            31 f            48 w         (pad) =
   15 P            32 g            49 x
   16 Q            33 h            50 y

Base64 in Programming Languages

Base64 in Python


import base64

# Encoding
text = "Hello, World!"
encoded = base64.b64encode(text.encode('utf-8')).decode('utf-8')
print(f"Encoded: {encoded}")

# Decoding
decoded = base64.b64decode(encoded).decode('utf-8')
print(f"Decoded: {decoded}")
            

Base64 in JavaScript


// Encoding
let text = "Hello, World!";
let encoded = btoa(text);
console.log(`Encoded: ${encoded}`);

// Decoding
let decoded = atob(encoded);
console.log(`Decoded: ${decoded}`);
            

Base64 in PHP


<?php
// Encoding
$text = "Hello, World!";
$encoded = base64_encode($text);
echo "Encoded: " . $encoded . "\n";

// Decoding
$decoded = base64_decode($encoded);
echo "Decoded: " . $decoded . "\n";
?>
            

Common Use Cases for Base64

Embedding Images in HTML/CSS

Base64 can be used to embed small images directly in HTML or CSS, reducing HTTP requests:


<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg==" alt="Base64 
encoded image">
            

Sending Data in JSON

When you need to include binary data in JSON, Base64 encoding is often used:


{
  "name": "example.png",
  "content": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg=="
}
            

URL-safe Base64

For use in URLs, a variation of Base64 replaces + and / with - and _ respectively:


Standard: a+b/c==
URL-safe: a-b_c==
            

Online Base64 Tools

Here are some popular online tools for Base64 encoding and decoding:

Base64 and Security

Warning: Base64 is an encoding scheme, not an encryption method. It does not provide any security or data protection. Never use Base64 to store or transmit sensitive information without proper encryption.

While Base64 can make data unreadable to humans, it's trivially easy to decode. Always use proper encryption methods for sensitive data.

Advantages and Disadvantages of Base64

Advantages:

Disadvantages:

Frequently Asked Questions

Is Base64 encryption?

No, Base64 is not encryption. It's an encoding scheme that represents binary data in an ASCII string format. It doesn't provide any security.

Why does Base64 encoding increase file size?

Base64 encoding increases file size because it represents 3 bytes of data with 4 characters. This results in about 33% increase in size.

Can Base64 encoded data be compressed?

Yes, Base64 encoded data can be compressed, but it's generally more efficient to compress the data before encoding it to Base64.