Base64 Encode/Decode

Кодирование и декодирование строк в формате Base64. Работает полностью в браузере.

Как закодировать и декодировать Base64 онлайн

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

Всё работает в вашем браузере: введённые данные не отправляются на сервер PingDesk. Это важно, потому что в Base64 часто лежат токены, заголовки авторизации и фрагменты конфигураций — вставлять их в сервисы, которые обрабатывают данные на своей стороне, рискованно.

Ниже — как устроен Base64, откуда берутся знаки = в конце строки, чем отличается Base64URL и почему Base64 нельзя считать шифрованием.

Как пользоваться кодировщиком

  1. 1Выберите режим: Encode — закодировать текст в Base64, Decode — раскодировать Base64 обратно в текст.
  2. 2Вставьте данные в поле ввода. При декодировании пробелы и переносы строк внутри Base64 игнорируются, а отсутствующие знаки = в конце допускаются.
  3. 3Нажмите кнопку «Encode →» или «← Decode». Результат появится в поле ниже — скопируйте его значком копирования.
  4. 4Чтобы проверить преобразование, нажмите кнопку со стрелками между режимами: она переключит режим и перенесёт результат в поле ввода. Останется нажать кнопку преобразования и сравнить с исходником.
  5. 5Если появилась «Ошибка декодирования», проверьте, нет ли в строке символов - и _ (это Base64URL — замените их на + и /) и не закодированы ли в ней двоичные данные, например изображение: инструмент выводит результат только как текст UTF-8.

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

Base64 описан в RFC 4648. Он записывает произвольные байты строкой из 64 печатных символов: A–Z, a–z, 0–9, + и /. Входные данные делятся на группы по 3 байта (24 бита), каждая группа — на четыре блока по 6 бит, и каждый блок заменяется символом алфавита. Так 3 байта превращаются в 4 символа.

Отсюда главное свойство: результат примерно на треть длиннее исходника. Длина закодированной строки равна 4 × ⌈n / 3⌉, где n — число байт, то есть накладные расходы около 33 %. В почтовом формате MIME к этому добавляются переносы строк каждые 76 символов.

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

Примеры кодирования и дополнения знаками =
Исходный текстБайт в UTF-8Base64Padding
P1UA==Два знака =
Pi2UGk=Один знак =
Hello5SGVsbG8=Один знак =
PingDesk8UGluZ0Rlc2s=Один знак =
user:pass9dXNlcjpwYXNzНет: 9 кратно 3
Привет120J/RgNC40LLQtdGCНет: 12 кратно 3

Кириллица и UTF-8: почему результат отличается от других сервисов

Base64 кодирует байты, а не символы. Прежде чем закодировать текст, его переводят в байты, и результат зависит от кодировки. Этот инструмент всегда использует UTF-8: латинская буква занимает 1 байт, кириллическая — 2, большинство эмодзи — 4. Поэтому слово «Привет» из шести букв превращается в 12 байт и 16 символов Base64.

Если другой сервис или старое приложение кодирует текст в Windows-1251, строка Base64 для того же слова будет другой. При декодировании такой строки здесь вы, скорее всего, получите ошибку: байты Windows-1251 обычно не образуют корректный UTF-8. Данные при этом не повреждены — их нужно декодировать в той кодировке, в которой они были закодированы.

В JavaScript встроенная функция btoa() принимает только символы Latin-1 и на кириллице падает с ошибкой InvalidCharacterError. Правильный путь — сначала получить байты через TextEncoder, а затем кодировать их; в Node.js — Buffer.from(text, "utf8").toString("base64"). В терминале Linux и macOS используйте echo -n 'Привет' | base64: флаг -n убирает перевод строки, который иначе попадёт в результат.

Base64URL: вариант для адресов, JWT и cookie

Символы + и / в обычном Base64 имеют особый смысл в URL: + в query-строке может превратиться в пробел, а / разделяет путь. Поэтому RFC 4648 описывает вариант Base64URL, в котором + заменён на -, а / — на _. Знаки = в конце в Base64URL часто опускают: длину можно восстановить, дополнив строку до кратной четырём.

Base64URL используется в JWT: заголовок и полезная нагрузка токена — это JSON, закодированный Base64URL без padding, а части разделены точками. Чтобы посмотреть содержимое JWT здесь, возьмите нужную часть между точками, замените - на + и _ на /, а затем декодируйте. Третья часть — подпись, это двоичные данные, и как текст она не декодируется.

Base64Base64URL
62-й символ алфавита+-
63-й символ алфавита/_
Padding =ОбязателенОбычно опускают
Где встречаетсяMIME, data URI, Basic Auth, PEMJWT, параметры URL, cookie

Где встречается Base64: Basic Auth, data URI, почта и ключи

Base64 нужен везде, где двоичные данные или произвольный текст приходится передавать через канал, рассчитанный на печатные ASCII-символы.

  • HTTP Basic Auth. Заголовок Authorization: Basic dXNlcjpwYXNz — это Base64 от строки user:pass (RFC 7617). Любой, кто перехватил заголовок, получит логин и пароль, поэтому Basic Auth допустим только поверх HTTPS.
  • Data URI. Небольшие файлы встраивают прямо в HTML и CSS: data:image/png;base64,iVBORw0KGgo… Для маленьких иконок это экономит запрос, но для крупных изображений лишние 33 % и отсутствие отдельного кэширования делают приём невыгодным.
  • Электронная почта. Вложения и тело писем в MIME передаются в Base64 (Content-Transfer-Encoding: base64), потому что почтовые протоколы исторически рассчитаны на 7-битный текст.
  • Ключи и сертификаты. Формат PEM — это Base64 от двоичных данных DER между строками -----BEGIN CERTIFICATE----- и -----END CERTIFICATE-----.
  • Kubernetes Secrets. Значения в поле data секретов записаны в Base64 — это лишь способ хранить байты в YAML, а не защита.
  • API. Файлы, подписи и изображения передают внутри JSON строками Base64, потому что JSON не умеет хранить байты напрямую.

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

Base64 не использует ключ: любой может декодировать строку за секунду, и результат однозначен. Строка cGFzc3dvcmQ= выглядит как что-то зашифрованное, но это просто слово password. Попытки «спрятать» пароль, токен или персональные данные в Base64 приводят к утечкам: такие строки находят в публичных репозиториях, логах и коде фронтенда.

Для конфиденциальности нужно шифрование — TLS при передаче, AES-GCM или аналогичный алгоритм при хранении, — а для контроля целостности — хеш или HMAC. Base64 можно применять поверх них, чтобы записать зашифрованные байты текстом, но сам по себе он ничего не защищает.

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

Как декодировать Base64 онлайн?

+

Выберите режим Decode, вставьте строку и нажмите «← Decode». Декодирование выполняется в браузере, данные не уходят на сервер. Если строка в формате Base64URL и содержит символы - и _, замените их на + и / перед декодированием.

Base64 шифрует данные?

+

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

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

+

Base64 кодирует данные группами по 3 байта. Если в последней группе остался 1 байт, в конце добавляются два знака =, если 2 байта — один. Когда длина исходных данных кратна трём, знаков = нет вовсе.

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

+

В Base64URL символы + и / заменены на - и _, чтобы результат можно было без экранирования вставлять в URL, имена файлов и cookie. Знаки = в конце в Base64URL обычно опускают. Этот вариант используется, например, в JWT-токенах.

На сколько увеличивается размер данных в Base64?

+

Примерно на 33 %: каждые 3 байта превращаются в 4 символа, а длина результата равна 4 × ⌈n / 3⌉. Файл размером 300 КБ в Base64 займёт около 400 КБ, а с переносами строк в MIME — немного больше.

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

+

Частые причины: в строке есть символы вне алфавита Base64 — например, - и _ из Base64URL или кавычки, скопированные вместе со значением; строка обрезана; закодированы двоичные данные или текст не в UTF-8. Инструмент выводит результат как текст UTF-8, поэтому изображения и архивы в нём не декодируются.

Как закодировать файл или картинку в Base64?

+

Этот инструмент работает только с текстом. Для файла используйте терминал: base64 -w 0 file.png в Linux, base64 -i file.png в macOS или [Convert]::ToBase64String([IO.File]::ReadAllBytes("file.png")) в PowerShell. Для data URI добавьте к результату префикс data:image/png;base64,.

Как посмотреть содержимое JWT-токена?

+

Разделите токен по точкам и возьмите вторую часть — payload. Замените - на + и _ на /, вставьте строку в режиме Decode и получите JSON с полями токена. Помните, что содержимое JWT не зашифровано, поэтому секреты в него не кладут.

Связанные инструменты