ГлавнаяИнструментыРазработка и данныеКодирование и данныеBase64 — кодирование и декодирование

Base64 — кодирование и декодирование

Переводит текст в Base64 и обратно. Кириллица обрабатывается корректно через UTF-8, поэтому «кракозябр» не будет.

Ввод

0 символов

Результат

0 символов
Скопировано ✓

Как три байта превращаются в четыре знака

Инструмент переводит текст в Base64 и обратно. Кириллица проходит через UTF-8, поэтому «кракозябр» не будет: браузерная функция btoa на русских буквах спотыкается, здесь текст сначала превращается в байты. Есть построчный режим, когда каждая строка списка кодируется отдельно, и алфавит URL-safe, в котором «+» заменён на «-», а «/» на «_». Нужен всем, кто разбирает конфиги, токены и письма: строка вида eyJhbGciOi… встречается в заголовках авторизации, в JWT, в data:URI и в сертификатах.

Устроено просто: три байта исходных данных превращаются в четыре знака из 64-символьного алфавита A–Z, a–z, 0–9, «+», «/». Каждый знак несёт шесть бит, поэтому объём растёт примерно на треть. Если байтов не хватает до тройки, хвост добивается знаком «=»: один лишний байт даёт два таких знака, два лишних — один. «Привет, мир!» занимает 21 байт UTF-8, ровно семь троек, и превращается в 28 знаков без единого «=». Обратное преобразование восстанавливает байты точно, поэтому Base64 годится для передачи, но не для защиты: строка разворачивается назад одним нажатием.

Исходный код на экране
Длинные строки из букв и цифр в коде и конфигах — обычно Base64: так внутрь текста кладут байты. Фото: Micke, CC BY-SA 3.0.
Что кодируемБайтовBase64Что произошло
Man3TWFuРовно одна тройка байтов даёт четыре знака без добивки.
A1QQ==Хвост в один байт добивается двумя знаками «=».
Ab2QWI=Хвост в два байта добивается одним «=».
я20Y8=Кириллическая буква — это два байта UTF-8, D1 8F.
Привет, мир!210J/RgNC40LLQtdGCLCDQvNC40YAh21 байт делится на 3 нацело, добивка не нужна.
Привет, мир! в URL-safe210J_RgNC40LLQtdGCLCDQvNC40YAhЗнак «/» заменён на «_», чтобы строку можно было положить в адрес.

История: от uuencode до data:URI

Base64 родился из ограничений каналов связи. Почта, телетайп и файловые обменники семидесятых понимали только печатные знаки семибитного ASCII: восьмой бит по дороге могли обнулить, управляющие коды — съесть, а перевод строки в каждой системе записывался по-своему. Двоичный файл через такой канал не проходил. В 1980 году Мэри Энн Хортон написала для юниксовой почты uuencode, который перекладывал байты в печатные знаки; на «Макинтошах» ту же работу делал BinHex, в файловых конференциях ходил XXencode. Каждый формат жил своей жизнью, и письмо из одной сети в другую часто приходило мусором.

Общий формат появился с шифрованной почтой: в феврале 1993 года RFC 1421 описал кодирование печатными знаками для стандарта PEM и разбивку по 64 знака в строке. Настоящую массовость дал MIME — набор правил, по которым в письмо кладут вложения и не-латинский текст: RFC 2045 в ноябре 1996 года назвал способ Base64 и закрепил алфавит вместе с длиной строки в 76 знаков. В 2006 году RFC 4648 свёл разошедшиеся варианты в один документ и описал алфавит для адресов, где «+» и «/» заменены на «-» и «_».

Сегодня Base64 держит куда больше, чем вложения. В data:URI им встраивают картинки и шрифты прямо в разметку и стили; в HTTP им кодируется пара «логин:пароль» в базовой авторизации; из трёх частей в этом виде состоит токен JWT; ключи и сертификаты хранятся в PEM-файлах между строками с дефисами. Отсюда и главная путаница: строку принимают за шифр. Ключа здесь нет, любой декодер вернёт исходный текст, поэтому пароли в конфигах, «спрятанные» таким способом, не спрятаны.

Телефонный модем
Модем: через такой канал ходили только печатные знаки, и двоичные файлы приходилось перекладывать в текст. Фото: Aeroid, CC BY-SA 4.0.
Сессия ранней версии Unix
Юниксовая почта: именно для неё в 1980 году написали uuencode, предшественника Base64. Фото: Викисклад, CC0.

Как кодировать список и что делать с ошибкой

Вставьте текст слева, выберите направление и нажмите преобразование. Построчный режим включайте для списков: каждая строка обработается отдельно, порядок сохранится, и одна битая строка не испортит остальные — она будет помечена. URL-safe нужен, когда результат пойдёт в адрес страницы или в имя файла: обычный алфавит содержит «/» и «+», которые в адресе означают другое. Данные остаются в браузере и никуда не отправляются.

Частые ошибки простые. Длина корректной строки кратна четырём, поэтому обрезанный при копировании хвост декодер не примет. Пробелы и переносы внутри строки появляются из писем и конфигов, где Base64 разбит на строки по 76 знаков; перед разбором их убирают. Строка из другого алфавита с «-» и «_» декодируется только в режиме URL-safe. Картинку в data:URI удобнее готовить в инструменте картинка в Base64, а знаки процента в адресах разбирает URL энкодер и декодер.

АлфавитA–Z, a–z, 0–9, «+», «/»
Байтов на четыре знака3
Рост объёма≈ 33 %
Знак «=»добивка хвоста
URL-safe«-» и «_»
Первое описаниеRFC 1421, 1993
MIMERFC 2045, 1996
Длина строки в письме76 знаков

Есть построчный режим — каждая строка кодируется отдельно.

Пример: вход → результат

Вход
Привет, мир!
Результат
0J/RgNC40LLQtdGCLCDQvNC40YAh

Кодирование в обе стороны: текст ↔ Base64. Работает с кириллицей (UTF-8), не ломает спецсимволы.

Когда пригодится

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

  1. «Кодировать» — обычный текст в Base64, «Декодировать» — строку Base64 обратно в текст.
  2. Слева вставьте текст. Включите «построчно», если нужно обрабатывать каждую строку как отдельное значение.
  3. Справа появится результат. Скопируйте его кнопкой.

Частые вопросы

Корректно ли кодируется кириллица?

Да. Текст сначала переводится в UTF-8, поэтому русские буквы и эмодзи кодируются и восстанавливаются без искажений — в отличие от «голого» btoa в браузере.

Что такое построчный режим?

По умолчанию весь текст кодируется как единое целое. В построчном режиме каждая строка кодируется или декодируется отдельно — удобно, когда у вас список значений.

Что если строка не является Base64?

При декодировании некорректной строки инструмент пометит её как «⚠ не Base64», не прерывая обработку остальных строк.

SEO на Tildaразбор темы в блоге

Похожие инструменты

Картинка в Base64

Изображение в data URI для HTML и CSS и обратно: размер до и после, готовые фрагменты img и background, предпросмотр из строки.

Открыть
URL энкодер / декодер

Кодирует ссылки и текст в percent-encoding и обратно. Построчно для списка URL, режим компонента или целой ссылки.

Открыть
Склонение ФИО по падежам

Фамилия, имя и отчество по шести падежам с автоопределением пола, инициалы и обработка списка ФИО целиком. Правила зашиты в страницу, без обращения к сервисам.

Открыть
Шифр Цезаря

Сдвиг по алфавиту для кириллицы и латиницы, автоподбор ключа по частотности букв, таблица всех сдвигов, ROT13 и ROT47.

Открыть
Форматирование списка

Убрать пунктуацию, спецсимволы, цифры; схлопнуть пробелы; нижний регистр.

Открыть
Генератор рыбы-текста

Текст-заглушка для макета: русская рыба, Lorem ipsum и осмысленные абзацы. Объём задаётся в абзацах, словах или знаках, есть заголовки и списки.

Открыть

Как применять это в продвижении — в разборе SEO-копирайтинг и других материалах блога.

Ещё инструменты для кода и данных

Base64 и URL, форматтер и сравнение JSON, хеши, регулярные выражения, cron, подсети, UUID, QR-код и Unix-время — в разделе 42 инструмента.