Back to Blog
Base64

Complete Guide to Base64 Encoding: Principles, Applications, and Practice

E
EfficTools Team
December 5, 202414 min read

Complete Guide to Base64 Encoding: Principles, Applications, and Practice

What is Base64 Encoding?

Base64 is an encoding method that converts binary data into ASCII strings. It uses 64 printable characters (A-Z, a-z, 0-9, +, /) to represent arbitrary binary data.

Why Do We Need Base64?

In computer networks, many protocols only support text data transmission. When we need to transmit binary data (such as images, files, etc.) through these protocols, we need to convert binary data into text format. Base64 was created for this purpose.

Common Use Cases

  • Email Attachments: MIME protocol uses Base64 encoding to transmit binary attachments
  • Data URLs: Embed small images in HTML/CSS
  • JWT Tokens: JSON Web Tokens use Base64URL encoding
  • API Transmission: Transmit binary data in JSON
  • Base64 Encoding Principles

    The basic principle of Base64 encoding is to divide 3 bytes (24 bits) of binary data into 4 groups of 6 bits each, then map each 6-bit group to the corresponding character in the Base64 character table.

    Encoding Steps

  • Convert input data to binary
  • Group every 3 bytes together
  • Divide each 24-bit group into 4 groups of 6 bits
  • Map each 6-bit group to a Base64 character
  • If the last group has less than 3 bytes, pad with =
  • Using Base64 in JavaScript

    ``javascript

    // Encoding

    const encoded = btoa('Hello, World!');

    console.log(encoded); // SGVsbG8sIFdvcmxkIQ==

    // Decoding

    const decoded = atob('SGVsbG8sIFdvcmxkIQ==');

    console.log(decoded); // Hello, World!

    `

    Handling Unicode Characters

    Since btoa can only handle Latin1 characters, handling Unicode requires UTF-8 encoding first:

    `javascript

    // Encode Unicode

    const encodeUnicode = (str) => {

    return btoa(encodeURIComponent(str).replace(

    /%([0-9A-F]{2})/g,

    (_, p1) => String.fromCharCode(parseInt(p1, 16))

    ));

    };

    // Decode Unicode

    const decodeUnicode = (str) => {

    return decodeURIComponent(

    atob(str).split('').map(

    c => '%' + c.charCodeAt(0).toString(16).padStart(2, '0')

    ).join('')

    );

    };

    ``

    Using EfficTools for Base64 Encoding/Decoding

    If you don't want to write code, you can directly use our Base64 encoding/decoding tool, which supports:

    • Text to Base64 encoding
    • Base64 to text decoding
    • Perfect support for Unicode characters
    • File Base64 encoding

    Summary

    Base64 is an important encoding method with wide applications in web development. Understanding its principles and usage methods is very helpful for handling various data transmission scenarios.

    Base64EncodingTutorialJavaScript
    Share this article