Зачем нужен Base64
Base64 переписывает произвольные байты с помощью 64 печатных символов, чтобы двоичные данные можно было провести через то, что принимает только текст: тело письма, строку JSON, data-URI, HTTP-заголовок. Три байта на входе дают четыре символа на выходе — поэтому закодированные данные всегда примерно на 33% больше исходных.
Мерой безопасности это не является. Для декодирования не нужен ключ, и эта страница — тому доказательство: если значение можете прочитать вы, его прочитает и любой, у кого оно окажется.
Как пользоваться
- Выберите кодирование или декодирование.
- Вставьте исходные данные слева. Результат появится справа сразу.
- Если значение попадёт в 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, инструмент так и скажет, вместо того чтобы печатать символы-заменители: обычно это значит, что у вас двоичный файл, а не испорченный ввод.