IZN Tools

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

Текст и файлы, с опциональным URL-safe алфавитом.

ВВОД
РЕЗУЛЬТАТ
Ожидание ввода
Посчитано на вашем устройстве
Похожие
Декодер JWTФорматирование JSONТестер регулярных выраженийДекодирование Base64СкороURL-кодированиеСкороВалидатор JSONСкоро

Зачем нужен Base64

Base64 переписывает произвольные байты с помощью 64 печатных символов, чтобы двоичные данные можно было провести через то, что принимает только текст: тело письма, строку JSON, data-URI, HTTP-заголовок. Три байта на входе дают четыре символа на выходе — поэтому закодированные данные всегда примерно на 33% больше исходных.

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

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

  1. Выберите кодирование или декодирование.
  2. Вставьте исходные данные слева. Результат появится справа сразу.
  3. Если значение попадёт в URL или в JWT, включите URL-safe.

Декодирование принимает оба алфавита и переживает отсутствие выравнивания =, поэтому сегмент JWT можно вставить прямо из токена, ничего не подчищая.

Ловушка с UTF-8

Собственный btoa() браузера бросает InvalidCharacterError на любом символе выше U+00FF. Именно поэтому самодельные кодировщики так часто портят кириллицу, иероглифы и emoji. Лечится тем, что текст сначала переводится в байты UTF-8, и кодируются уже байты; здесь это сделано в обе стороны, так что «Привет» переживает полный цикл.

Где вы с ним столкнётесь

  • Заголовки Authorization: Basic — это логин:пароль в Base64, читаемые любым, кто видит трафик, если нет TLS.
  • Data-URI: data:image/png;base64,... для мелких встроенных ресурсов.
  • Заголовок и полезная нагрузка JWT — там base64url; чтобы читать их правильно, есть декодер JWT.

Вопросы

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

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

Почему встроенный btoa() ломается на кириллице и emoji?+

btoa() принимает строку из однобайтовых символов и падает на всём выше U+00FF. Текст сначала нужно перевести в байты UTF-8. Этот инструмент делает такое преобразование в обе стороны — поэтому «Привет» и «🔧» здесь проходят туда-обратно без потерь, а в голом btoa() нет.

Что такое URL-safe алфавит?+

В стандартном Base64 используются + и /, у которых внутри URL есть собственный смысл, и выравнивание =, неудобное в строке запроса. URL-safe вариант (RFC 4648 §5) заменяет их на - и _ и обычно обходится без выравнивания. Декодирование здесь принимает оба варианта, указывать ничего не нужно.

Можно ли раскодировать картинку или PDF в Base64?+

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