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

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

URL-безопасный вариант

Для чего нужен Base64

Двоично-безопасный текст, не шифрование.

Base64 превращает произвольные байты в строку, использующую только буквы, цифры, + и /, безопасную для встраивания в JSON, URL или email, где необработанные бинарные данные привели бы к ошибкам. Это не шифрование: любой может мгновенно декодировать его обратно, поэтому само по себе оно ничего не скрывает и не защищает.

URL-безопасный вариант

Символы + и / стандартного Base64 имеют особое значение в URL. URL-безопасный вариант заменяет их на - и _ и убирает завершающее заполнение =, поэтому результат можно сразу использовать в строке запроса или имени файла.

Как это работает

При кодировании ваш текст сначала преобразуется в необработанные байты UTF-8 с помощью API TextEncoder браузера, и эти байты передаются встроенной функции btoa(). Этот первый шаг важен: сама по себе btoa() обрабатывает только символы Latin-1 и выдаёт ошибку на всём остальном, поэтому инструменты, пропускающие этот шаг, незаметно ломаются на эмодзи, диакритических знаках или любом нелатинском алфавите. Декодирование выполняет тот же процесс в обратном порядке: atob() превращает Base64 обратно в байты, а TextDecoder собирает их обратно в текст. Декодер также намеренно снисходителен: он обрезает пробелы, принимает как стандартный, так и URL-безопасный алфавит, и заново добавляет любое удалённое заполнение =, поэтому фрагмент, скопированный прямо из JWT или строки запроса, декодируется без ручных исправлений.

Ожидайте, что вывод будет примерно на 33% больше ввода. Base64 использует 64 символа, а 64 символа могут нести только по 6 бит каждый, поэтому каждые 3 байта ввода превращаются в 4 символа вывода. Именно поэтому встраивание изображения размером 1 МБ в виде Base64 data URI обходится примерно в 1,37 МБ HTML, и именно поэтому Base64 — это формат передачи, а не формат сжатия.

Оба направления выполняются в собственном JavaScript этой страницы при каждом нажатии клавиши, используя только btoa, atob и API кодирования текста, уже встроенные в ваш браузер. Вы можете это проверить: откройте инструменты разработчика, переключитесь на вкладку «Сеть» и печатайте что угодно. Ни один запрос никогда не передаёт ваш текст никуда.