belun.app Блог EN

Кодирование Base64: что это такое и когда использовать

Понятное руководство по Base64 — как оно работает, реальные сценарии применения и как бесплатно кодировать и декодировать строки в браузере.

Developer working with binary data and encoding on a laptop screen

Base64 встречается везде в веб-разработке — в JWT-токенах, data URI, вложениях электронной почты и заголовках API-аутентификации. Разберём, что это такое, как работает и когда это действительно нужно.

Что такое Base64?

Base64 — схема кодирования, которая преобразует двоичные данные в строку из 64 печатаемых ASCII-символов: A–Z, a–z, 0–9, + и /. Символ = используется как заполнитель в конце.

Название происходит из математики: каждая цифра Base64 представляет 6 бит (2⁶ = 64). Три байта входных данных (24 бита) превращаются в четыре символа Base64 (4 × 6 = 24 бита). Плата за это — размер: выходные данные всегда примерно на 33% больше оригинала.

Входные данные:  "Привет"
Base64: 0J/RgNC40LLQtdGC

Такой прирост размера оправдан, когда система получателя принимает только текст.

Реальные сценарии использования

Data URI в HTML и CSS

Вместо ссылки на внешний файл можно встроить небольшое изображение прямо в HTML или стили:

<img src="data:image/png;base64,iVBORw0KGgo...">
background-image: url("data:image/svg+xml;base64,PHN2Zy...");

Это убирает один HTTP-запрос — важно для маленьких иконок и контента выше линии сгиба. Для крупных изображений прирост размера обычно перевешивает выгоду.

Тела JSON API с двоичными данными

JSON поддерживает только текст. Чтобы включить PDF, изображение или аудиофайл в тело JSON, их кодируют в Base64:

{
  "filename": "report.pdf",
  "content": "JVBERi0xLjQK..."
}

Это распространено в API загрузки документов и вебхуках, передающих вложения.

HTTP Basic Authentication

Заголовок Authorization: Basic кодирует учётные данные в Base64:

Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

Это username:password — декодируйте, и получите открытый текст. Это не шифрование. Любой, кто перехватит заголовок, прочитает его. С Basic Auth всегда используйте HTTPS.

JWT-токены

JSON Web Tokens используют Base64URL — URL-безопасный вариант, где + заменяется на -, а / на _ — для заголовка и полезной нагрузки. Вы можете декодировать полезную нагрузку любого JWT и прочитать его поля без знания секрета. Подделку предотвращает подпись, а не кодирование.

Хранение двоичных данных в текстовых полях

Базы данных и конфигурационные файлы, принимающие только строки, хранят двоичные данные в Base64. Криптографические ключи, сертификаты и небольшие иконки нередко оказываются закодированными именно так — в переменных окружения или YAML-конфигах.

Base64 — это не шифрование

Стоит сказать прямо. Base64 — кодирование, обратимое преобразование без секретного ключа. Любой инструмент, включая этот, декодирует строку Base64 за миллисекунды. Не используйте его, чтобы скрыть или защитить чувствительные данные.

Для реальной защиты:

  • AES или ChaCha20 для симметричного шифрования
  • RSA или ECDSA для асимметричных операций
  • bcrypt, Argon2 или PBKDF2 для хэширования паролей

Как наш кодировщик обрабатывает Unicode

Встроенная функция браузера btoa() принимает только символы Latin-1. Чтобы работать с эмодзи, кириллицей, иероглифами и другим текстом Unicode, наш кодировщик Base64 использует TextEncoder для предварительного преобразования строки в байты UTF-8, а затем кодирует эти байты. Это соответствует поведению серверных реализаций на Python и Node.js, так что закодированные строки будут совместимы.


Попробуйте Base64 кодировщик и декодировщик — кодируйте любой текст или декодируйте любую строку Base64 прямо в браузере, без передачи данных куда-либо.

Попробуйте инструмент

Base64 кодировщик / декодировщик →