Что означают «encoder» и «decoder» в Base64?
Кодирование в Base64 («encode base64») превращает байты — чаще всего байты текста в кодировке UTF-8 — в строку из 64 разрешённых символов: 26 заглавных букв, 26 строчных, 10 цифр, а затем + и /. Декодирование Base64 («decode base64») выполняет ровно обратную операцию: строка читается группами по 4 символа, каждый символ кодирует 6 бит, а 24 бита дают 3 байта. Именно этот обратный путь ищут большинство, когда вводят «encode and decode base64».
Base64 — это ни сжатие, ни шифрование: текст становится примерно на треть длиннее, и прочитать его может любой за секунду. Он нужен, чтобы переносить байты по каналам, принимающим только безопасные ASCII-символы: URL, HTTP-заголовки, конфигурационные файлы, JSON, inline-SVG, письма и текстовые базы данных.
Как закодировать текст в Base64
Шаг 1: сначала текст преобразуется в байты в выбранной кодировке — по умолчанию UTF-8, но Latin-1, Windows-1252, ASCII или UTF-16 по-прежнему полезны для старых систем. Шаг 2: байты читаются по три, то есть 24 бита. Шаг 3: эти 24 бита разбиваются на четыре блока по 6 бит, и каждый блок заменяется символом соответствующей позиции в алфавите. Шаг 4: если последняя группа неполная, она дополняется нулевыми битами, а строка закрывается одним или двумя = (padding).
Пошаговый пример: « AB » — это 65 и 66 в десятичной системе, то есть 01000001 01000010. В три байта с дополнением: 01000001 01000010 00000000. Четыре группы по 6 бит — это 010000 010100 001000 000000 → позиции 16, 20, 8, 0 → QUI=. Просто введите « AB » в кодировщик: результат появится раньше, чем вы отпустите клавишу.
Как раскодировать Base64 в текст
Декодирование читает строку группами по 4 символа, предварительно удалив переносы строк и пробелы. Каждый символ заменяется его 6-битным значением, четыре значения склеиваются в 24 бита, затем 24 бита разделяются на 3 байта. Знаки = в конце показывают, сколько действительно полезных байтов содержит последняя группа: один = означает 2 байта, два = означают 1 байт.
Если строка содержит - или _, значит, это вариант URL-safe: инструмент автоматически преобразует их в + и / перед декодированием. Если padding отсутствует, кнопка «Исправить padding» его восстановит. При символе вне алфавита, неверно стоящем табуляторе или длине, не кратной 4, выводится ошибка с точной причиной, а не просто «недопустимо».
Вариант URL-safe (RFC 4648 §5)
Стандартный Base64 использует + и /, два символа, которые ломают URL: + интерпретируется большинством серверов как пробел, а / может быть принят за разделитель пути. Вариант URL-safe заменяет их на - и _, которые не требуют экранирования. Он обязателен в JWT (три сегмента токена кодируются без padding), в cookie, в идентификаторах и параметрах URL.
Padding « = »: зачем он нужен
Base64 работает группами по 4 символа, но размер файла почти никогда не кратен 3 байтам. Padding восстанавливает ожидаемую длину: от 1 оставшегося байта получается ==, от 2 оставшихся байтов получается =. Некоторые системы удаляют его (некоторые API, Base64URL), другие требуют его (PHP, старые декодеры). Опция «Без padding» у кодировщика и кнопка «Исправить padding» у декодера закрывают оба случая.
Кодировка символов: UTF-8, Latin-1, UTF-16
Base64 не знает символов, только байты. Главный вопрос: чем кодировать текст до Base64? В UTF-8 «é» занимает 2 байта, а «日» — 3; в Latin-1 «é» помещается в 1 байт, а «日» невозможно. UTF-8-декодирование строки, закодированной в Latin-1, даёт кракозябры («mojibake»). Если результат онлайн-инструмента нечитаем, почти всегда отличается исходная кодировка — отсюда здесь и шесть вариантов.
Файл, data URI и изображения в Base64
Запись data URI имеет вид data:<MIME-тип>;base64,<данные>. Она позволяет встроить изображение прямо в CSS, HTML или JSON: background-image:url(data:image/png;base64,iVBOR…). Чтобы декодировать, вставьте всю строку на вкладку «Файл ⇄ Base64»: MIME-тип извлекается, имя подбирается, затем файл восстанавливается и скачивается. Следите за размером: Base64 добавляет около 33 %, а data URI никогда не кэшируется отдельно.
Base64, URL-encoding и почему их нельзя путать
Схема percent-encoding (%20, %C3%A9) заменяет каждый недопустимый байт процентной записью: он в два-три раза длиннее Base64, но визуально сохраняет исходный текст. Base64 даёт компактную однородную строку — удобную для blob, но нечитаемую. Вкладка «URL & data URI» показывает оба преобразования рядом и предотвращает классическую ошибку: закодировать URL в Base64 вместо того, чтобы экранировать её, — или наоборот.
Base64 в повседневных форматах
Base64 повсюду: три сегмента JWT, атрибут src изображения SVG inline, поле cert в PDF, вложения MIME писем (RFC 2045), Authorization: Basic в API (пользователь:пароль), файлы .pem и SSH-ключи, содержимое .docx и .xlsx (ZIP), аватары в клиентском хранилище и data- атрибуты автоматизированных тестов. Умение быстро кодировать и декодировать избавляет от запуска терминала ради одной строки.
Чем Base64 не является
Base64 ничего не шифрует: закодированную строку расшифровывает одна строка кода. Никогда не используйте его как защиту пароля, ключа API или персональных данных. Это ещё и не сжатие: всегда закладывайте 33 % дополнительного объёма. И наконец, Base64 не подходит для уже плотно сжатого бинарного контента (PNG, ZIP) больше нескольких мегабайт, где стоимость памяти становится критичной.
Производительность и лучшие практики
В браузере TextEncoder и TextDecoder обрабатывают несколько мегабайт в секунду; сам алгоритм Base64 линеен — без рекурсии и без выделения памяти на символ. Файлы больше 5 МБ могут замедлять интерфейс: для более крупных объёмов лучше использовать Web Worker или обработку на сервере. Всегда сохраняйте исходную кодировку рядом со строкой и проверяйте round-trip (кодирование, затем декодирование), прежде чем помещать результат в базу данных.
Кому подходит
Бэкенд- и фронтенд-разработчикам (токены, data URI, HTTP-заголовки), интеграторам и техническим авторам (inline-SVG, фоновые изображения), системным администраторам и DevOps (сертификаты, ключи, дампы), тестировщикам и пентестерам (Authorization Basic, fuzzing параметров), студентам (байты, ASCII и UTF-8) и всем, кому нужен онлайн-кодировщик и декодировщик Base64 — быстрый, полнофункциональный и конфиденциальный.