Base64 – это группа похожих схем преобразования двоичного кода в текст, которые представляют двоичные данные в формате строки ASCII путем преобразования их в представление по основанию 64. Термин Base64 происходит от конкретной кодировки передачи контента MIME.

Схемы кодирования Base64 обычно используются, когда необходимо кодировать двоичные данные, которые необходимо хранить и передавать через носители, предназначенные для работы с текстовыми данными. Это делается для того, чтобы данные оставались неповрежденными без изменений во время транспортировки. Base64 обычно используется в ряде приложений, включая электронную почту через MIME и хранение сложных данных в XML.

В JavaScript есть две функции соответственно для декодирования и кодирования строк base64:

Функция atob() декодирует строку данных, закодированную с использованием кодировки base-64. И наоборот, функция btoa() создает строку ASCII в кодировке base-64 из «строки» двоичных данных.

И atob(), и btoa() работают со строками. Если вы хотите работать над ArrayBuffers, пожалуйста, прочтите этот абзац.

Закодированное увеличение размера

Каждая цифра Base64 представляет ровно 6 бит данных. Таким образом, три 8-битных байта входной строки/двоичного файла (3×8 бит = 24 бита) могут быть представлены четырьмя 6-битными цифрами Base64 (4×6 = 24 бита).

Это означает, что версия строки или файла в формате Base64 будет иметь не более 133 % размера исходного кода (увеличение примерно на 33 %). Увеличение может быть больше, если закодированные данные малы. Например, строка "a" с length === 1 кодируется как "YQ==" с length === 4 — увеличение на 300%.