Base64: как закодировать текст и раскодировать строку обратно

Строка из букв и цифр с загадочными +, / и = на конце. Или наоборот: нужно передать бинарные данные в JSON, а JSON не умеет хранить байты. Base64 — способ записать двоичные данные буквами и цифрами, и инструмент, который кодирует текст в Base64 и раскодирует строку обратно. Поддерживаются кириллица, эмодзи и вариант Base64URL для адресов и токенов, а всё выполняется в браузере.

В этой статье разберём, что такое Base64, зачем он нужен, чем Base64URL отличается от обычного, почему Base64 — не шифрование и как не перепутать его с URL-кодированием.

Интерфейс онлайн-инструмента Base64
Интерфейс онлайн-инструмента Base64

Что умеет инструмент

Base64 принимает текст или строку Base64 и выполняет одно из двух действий.

Действие Что делает
Закодировать Переводит текст в Base64
Раскодировать Переводит строку Base64 обратно в текст
Base64URL Использует вариант для адресов и токенов: - и _ вместо + и /, без = в конце

Результат показывается строкой с кнопкой копирования. Дополнительно выводится счётчик символов: сколько было в исходнике и сколько получилось.

Поддерживаются кириллица и эмодзи: инструмент работает с UTF-8, поэтому русский текст и составные эмодзи кодируются и раскодируются корректно.

Всё выполняется в браузере: введённые данные никуда не отправляются.

Что такое Base64 и зачем он нужен

Base64 — способ представления двоичных данных с помощью 64 символов: латинских букв в обоих регистрах, цифр, + и /. На конце может стоять = — выравнивающий символ.

Зачем это нужно:

Задача Почему Base64
Передача бинарных данных в текстовом протоколе JSON, XML и электронная почта не умеют хранить байты напрямую
Встраивание изображений Data URI: data:image/png;base64,...
Токены JWT состоит из трёх Base64URL-сегментов
Заголовки HTTP Basic Auth передаёт логин:пароль в Base64
Хранение в текстовых полях Бинарные данные в базе, которая ожидает текст

Base64 не сжимает данные и не шифрует их. Он увеличивает размер примерно на треть: каждые 3 байта превращаются в 4 символа. Зато результат состоит только из безопасных ASCII-символов, которые не ломаются при передаче.

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

Самый частый вопрос и самое опасное заблуждение. Base64 — не шифрование. Это кодирование: способ записи, который любой может обратить.

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

Для защиты данных нужно шифрование (AES, ChaCha20 и т. п.) или хеширование с солью для паролей. Base64 для этого не подходит.

Base64URL: чем отличается

Обычный Base64 использует + и /, а на конце — =. Эти символы проблемны в URL и некоторых других контекстах: + в адресе может интерпретироваться как пробел, / — как разделитель пути.

Base64URL решает это:

Обычный Base64 Base64URL
+ -
/ _
= в конце Убирается

Base64URL используется в JWT (JSON Web Token), параметрах адресов и других местах, где строка должна безопасно передаваться в URL.

Если вы работаете с токеном или параметром адреса — включайте Base64URL. Если строка получена из Base64URL, а вы декодируете её как обычный Base64, результат может быть неверным.

Кириллица и эмодзи: почему это работает

Base64 кодирует байты, а не символы. Текст сначала переводится в байты по кодировке UTF-8, затем байты кодируются в Base64.

Для кириллицы это важно: одна русская буква в UTF-8 занимает 2 байта, а не 1. Поэтому строка «Тестовый текст» из 14 символов даёт 27 байт UTF-8, а после Base64 — 36 символов. Эмодзи занимают ещё больше байт, но кодируются и раскодируются корректно, если инструмент работает с UTF-8.

Инструмент поддерживает UTF-8, поэтому кириллица и эмодзи не превращаются в «кракозябры» при раскодировании.

Base64 и URL-кодирование: не путать

Два разных способа кодирования, которые часто путают.

Base64 URL-кодирование
Что кодирует Двоичные данные в текст Символы в адресе
Пример Тест → 0KLQtdGB0YI= Тест → %D0%A2%D0%B5%D1%81%D1%82
Зачем Передать байты в текстовом протоколе Передать спецсимволы в URL
Где используется JSON, JWT, Data URI, Basic Auth Параметры адреса, query string

Base64 и URL-кодирование решают разные задачи. Для параметров адреса нужен URL Encoder/Decoder, для бинарных данных в тексте — Base64.

Зачем кодировать в Base64

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

Встраивание изображений. Data URI позволяет вставить картинку прямо в HTML или CSS без отдельного файла.

Токены. JWT состоит из Base64URL-сегментов. Чтобы посмотреть содержимое токена, его раскодируют.

Basic Auth. Заголовок Authorization: Basic ... содержит логин:пароль в Base64.

Проверка данных. Быстро раскодировать строку, чтобы понять, что в ней, или закодировать текст для вставки в конфиг.

Ограничения инструмента

  • Только текст и Base64-строки. Инструмент не работает с файлами напрямую — для файлов нужны другие средства.
  • Нет автоматического определения направления. Нужно выбрать «Закодировать» или «Раскодировать» вручную.
  • Base64URL нужно включать отдельно. Если строка в Base64URL, а опция выключена, декодирование может дать неверный результат.

Как пользоваться: пошагово

  1. Вставьте текст или строку Base64.
  2. Для токенов и адресов отметьте «Base64URL».
  3. Нажмите «Закодировать» или «Раскодировать» и скопируйте результат.

Типичные ошибки

Считать Base64 шифрованием. Это кодирование, которое любой может обратить. Для защиты нужны шифрование или хеширование с солью.

Путать Base64 и URL-кодирование. Это разные вещи. Для адресов — URL-кодирование, для бинарных данных в тексте — Base64.

Декодировать Base64URL как обычный Base64. Символы - и _ не входят в обычный алфавит, результат может быть неверным. Включайте опцию Base64URL.

Ожидать, что размер уменьшится. Base64 увеличивает данные примерно на треть. Это нормально.

Игнорировать выравнивание =. В обычном Base64 = в конце важен. В Base64URL его убирают. При декодировании это нужно учитывать.

Кодировать большие файлы вручную. Для больших бинарных данных Base64 в текстовом поле — плохая идея: строка станет огромной. Используйте специализированные средства.

Вопросы и ответы

Base64 — это шифрование? Нет. Это способ записать двоичные данные буквами и цифрами. Раскодировать его может любой, поэтому секреты так не защищают.

Чем отличается Base64URL? Вместо символов + и / используются - и _, а знаки = в конце убираются. Так кодируются JWT и параметры адресов.

Почему кириллица кодируется в длинную строку? Текст переводится в байты UTF-8, где русская буква занимает 2 байта, а затем байты кодируются в Base64. Поэтому строка длиннее исходной.

Можно ли закодировать файл? Инструмент работает с текстом и Base64-строками. Для файлов нужны другие средства.

Почему результат длиннее исходного текста? Base64 увеличивает данные примерно на треть: каждые 3 байта превращаются в 4 символа.

Как понять, что передо мной Base64? Строка состоит из букв, цифр, +, / и, возможно, = в конце. Но это не гарантия: похожие строки могут быть другими кодировками. Если строка в Base64URL — содержит - и _.

Итог

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

Предыдущая запись

Генератор хешей SHA: как посчитать SHA-256, SHA-512, SHA-384 и SHA-1 для текста или файла

Онлайн-генератор хешей SHA для текста или файла: SHA-256, SHA-512, SHA-384 и SHA-1. Вычисления выполняет браузер через WebCrypto, данные и файлы до 200 МБ не загружаются на сервер. Формат заглавными буквами.
Далее