Конвертер Base64

Кодируйте текстовую строку в Base64 и декодируйте её обратно в UTF-8.

Действие

Строка Base64

0J/RgNC40LLQtdGCLCBlQ2FsYyE=

14 символов · 20 байт UTF-8 → 28 знаков Base64

Как перевести текст в Base64

Байты текста собираются в равные блоки кодировки Base64

Выберите «Кодировать», вставьте текст и получите стандартную строку Base64. Для обратной операции включите «Декодировать» и вставьте готовый код. Оба действия выполняются внутри браузера, а содержимое поля не отправляется на сервер и не сохраняется в хранилище вкладки.

Строка foobar превращается в Zm9vYmFy. Это один из контрольных примеров RFC 4648. Русская фраза сначала переводится в байты UTF-8, поэтому «Привет, eCalc!» даёт 0J/RgNC40LLQtdGCLCBlQ2FsYyE=.

Base64 нужен, когда последовательность байтов необходимо представить обычными печатными знаками. Так данные можно поместить в текстовое поле, JSON или протокол, который неудобно работает с произвольными байтами. Читаемость для человека при этом не является целью.

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

Один байт содержит 8 бит. Три байта дают 24 бита, а Base64 делит их на четыре группы по 6 бит. У каждой группы есть значение от 0 до 63, которому соответствует один знак алфавита.

Стандартный алфавит содержит заглавные и строчные латинские буквы, цифры, плюс и косую черту. Всего получается 64 знака. Символ = не несёт очередные 6 бит и используется отдельно для заполнения последней неполной группы.

Длина Base64 = 4 × округление вверх (число байт ÷ 3)

Для 6 байт слова foobar формула даёт 4 × 2 = 8 знаков. Для одного байта получается четыре знака с двумя символами заполнения: f превращается в Zg==. Два байта дают один знак заполнения: fo превращается в Zm8=.

Почему кириллица сначала становится UTF-8

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

Латинская буква из основного диапазона обычно занимает один байт UTF-8. Большинство русских букв занимает два байта. Поэтому слово «Привет» содержит 6 видимых букв, но 12 байт. Составные эмодзи и некоторые редкие знаки дают ещё другое соотношение. Подробнее эту разницу разбирает статья о подсчёте символов.

Прямой вызов старого браузерного метода btoa() для кириллицы часто заканчивается ошибкой, потому что он ожидает строку, где каждый знак уже представляет один байт. Надёжный порядок другой: сначала UTF-8, затем Base64. При декодировании шаги выполняются в обратную сторону.

Зачем в конце появляются знаки равно

Полная группа Base64 начинается с трёх байт. Если в конце остался один байт, данных хватает только для двух полезных знаков, а две позиции заполняются ==. Если осталось два байта, полезными будут три знака и одно =.

RFC 4648 требует добавлять padding, если протокол не договорился обходиться без него. Конвертер всегда создаёт каноническую строку со знаками равно. Декодировщик принимает и распространённый вариант без padding, если длины достаточно, чтобы однозначно восстановить байты.

При декодировании пробелы, табуляция и переносы строк игнорируются по браузерному алгоритму WHATWG. Это помогает вставить код, разбитый почтовой программой на строки. Другие посторонние знаки не игнорируются и вызывают ошибку.

Почему Base64 увеличивает данные

Каждые три исходных байта превращаются в четыре печатных знака. На больших данных объём растёт примерно на треть. Короткая запись может вырасти сильнее в процентах из-за одного или двух знаков заполнения.

Base64 не сжимает повторяющиеся данные. Он меняет представление байтов, чтобы они прошли через текстовый канал. Если размер важен, сначала применяют подходящее сжатие, а затем при необходимости кодируют результат. Порядок нельзя бездумно менять: декодирующая сторона должна знать, какие операции выполнялись.

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

Как меняется запись разных данных

Пример 1. Полная группа. Текст foobar занимает 6 байт и кодируется как Zm9vYmFy из 8 знаков. Padding не нужен, потому что 6 делится на 3 без остатка.

Пример 2. Один байт. Латинская буква f занимает 1 байт и даёт Zg==. Два знака равно заполняют две свободные позиции в последней группе.

Пример 3. Два байта. Строка fo занимает 2 байта и даёт Zm8=. До полной тройки не хватает одного байта, поэтому в конце появляется один знак равно.

Пример 4. Кириллица. Слово «Привет» содержит 6 символов, но занимает 12 байт UTF-8 и превращается в 0J/RgNC40LLQtdGC из 16 знаков. Разница возникает до Base64, на этапе кодирования текста в байты.

Пример 5. Перенос строки. Код Zm9v YmFy содержит перенос между двумя блоками, но декодируется в foobar из 6 символов. ASCII-пробелы удаляются перед проверкой алфавита.

Пример 6. Не текстовые байты. Строка /w== корректно описывает 1 байт со значением 255, но этот одиночный байт не является UTF-8. Конвертер сообщает об этом вместо вывода повреждённого символа.

Base64 не защищает секрет

Алфавит и правила Base64 опубликованы. Любой человек может декодировать строку без ключа, поэтому результат не является шифром. Пароль, токен или персональные данные после такого преобразования остаются секретными только до первого любопытного декодировщика.

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

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

Что этот конвертер намеренно не делает

Инструмент работает только с текстом UTF-8. Он не кодирует файлы, не создаёт data: URL и не скачивает декодированные бинарные данные. Если корректная строка Base64 содержит изображение, архив или произвольные байты вместо UTF-8, появится отдельное сообщение об этом.

Base64URL является близким, но отдельным вариантом RFC 4648. В нём плюс заменён на дефис, косая черта на подчёркивание, а padding часто опускают. Эта страница принимает стандартный алфавит Base64 и не пытается угадывать вариант по строке.

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

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

Ответы объясняют размер результата, UTF-8, padding и границу между кодированием и защитой.

Как декодировать строку Base64?

Выберите режим декодирования, вставьте строку и нажмите кнопку. Калькулятор восстановит байты, проверит UTF-8 и покажет текст для копирования.

Является ли Base64 шифрованием?

Нет. Для декодирования не нужен ключ, алгоритм и алфавит открыты. Base64 только представляет байты печатными знаками и не скрывает содержание.

Почему Base64 заканчивается одним или двумя знаками равно?

Знаки равно заполняют последнюю группу, когда число исходных байтов не делится на три. Один оставшийся байт даёт два знака равно, два байта дают один.

Насколько Base64 увеличивает размер?

Каждые три байта становятся четырьмя знаками, поэтому большой объём растёт примерно на треть. Для короткой строки доля может быть выше из-за padding.

Почему кириллица не кодируется как латиница?

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

Что означает ошибка о тексте UTF-8?

Сама строка Base64 разобрана, но полученные байты не образуют корректный текст UTF-8. Вероятно, внутри находится файл, другая кодировка или повреждённая последовательность.

Чем Base64URL отличается от Base64?

Base64URL использует дефис и подчёркивание вместо плюса и косой черты, а padding часто опускает. Это отдельный алфавит, который текущий текстовый конвертер не принимает.

Можно ли вставить Base64 с переносами строк?

Да. Декодировщик удаляет ASCII-пробелы, табуляцию и переносы строк перед проверкой. Другие посторонние знаки вызовут ошибку.

Сохраняется ли введённый текст в браузере?

Нет. Поле не записывается в sessionStorage или localStorage. После перезагрузки страница возвращается к безопасному учебному примеру.

Похожие калькуляторы

Возможно вам пригодятся ещё несколько калькуляторов по данной теме:

  • Форматтер и валидатор JSON. Проверьте JSON, приведите его к читаемому виду или сожмите без потери данных.
  • URL-кодировщик и декодировщик. Кодируйте текст для URL и декодируйте процентную запись.
  • Калькулятор количества информации. Введите информацию в битах, байтах, мегабайтах (МБ), килобайтах (КБ), гигабайтах (ГБ), терабайтах (ТБ) для перевода в другие единицы.
  • Декодер текста. Исправьте кракозябры и восстановите читаемый текст, не стирая оригинал.
  • Визуальный редактор HTML. Редактируйте бесплатно и онлайн HTML-код, и сразу же смотрите внешний вид текста и страницы в режиме предпросмотра (WYSIWYG).
  • Генератор паролей. Создайте сложный и надёжный пароль бесплатно с помощью онлайн-генератора из 8, 10, 12 или большего числа рандомных (случайных) символов.
  • Генератор QR-кода. Вставьте ссылку или текст. Готовый QR-код можно скопировать или скачать как PNG.
  • Сумма прописью. Переведите сумму в виде цифр в сумму прописью - текстом. Сделайте расшифровку правильно для договоров и других документов.
  • Хрономер: время чтения текста. Оцените, сколько времени займёт чтение или произнесение текста вслух. Просто введите текст в форму, и хронометраж рассчитается автоматически.
  • Рандомайзер: генератор случайных чисел. Выберите случайное число в нужном диапазоне для любых целей, в частности для розыгрышей и онлайн-лотерей в соцсетях.

Есть что добавить?

Напишите своё мнение, комментарий или предложение.