Конвертер файлов в Base64

Перетащите любой файл, будь то документ, архив, шрифт, сертификат или программа, и получите его в кодировке Base64 в виде чистого текста или data URI. Вся обработка выполняется локально в браузере.

Работает полностью в браузере. Данные никуда не загружаются.

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

  1. Перетащите файл в область загрузки или нажмите на неё, чтобы выбрать файл на устройстве (до 100 МБ).
  2. Выберите вариант в поле «Формат вывода»: «Base64» — чистый Base64 для API и файлов конфигурации, «Data URI» — для HTML и CSS.
  3. Включайте параметр «Переносить строки через 76 символов», только если получатель ожидает строки в стиле MIME, например в теле письма.
  4. Проверьте имя файла, тип MIME и размеры, затем скопируйте результат или скачайте его в виде файла .txt.

Зачем кодировать файл в Base64?

Многие форматы, в которых системы обмениваются данными, допускают только текст. В JSON, XML, YAML, HTML и заголовках писем нельзя хранить произвольные байты: файл может содержать нулевые байты, недопустимые последовательности символов или переводы строк, которые текстовый парсер изменит. Base64 превращает каждые 3 байта файла в 4 символа из набора в 64 знака (латинские буквы, цифры, + и /), поэтому любой файл можно передать как обычную строку, а затем декодировать обратно в точно такие же байты.

Платить за это приходится размером: закодированный текст примерно на 33% больше файла, а переносы строк добавляют ещё немного. Файл размером 3 МБ превращается примерно в 4 МБ Base64.

Где это применяется

  • API на JSON и XML. Конечные точки, которые не принимают загрузку через multipart-формы, часто ожидают файл в виде строки Base64 в одном поле, а его имя и тип — в других.
  • Вложения в письмах. MIME кодирует вложения в Base64 строками длиной не более 76 символов (RFC 2045). Параметр «Переносить строки через 76 символов» даёт точно такое же форматирование.
  • Конфигурация и секреты. Значения в разделе data объекта Kubernetes Secret хранятся в Base64, поэтому сертификат TLS, хранилище ключей или файл лицензии нужно закодировать, прежде чем добавить его в манифест. Системы CI часто так же хранят двоичные секреты в переменных окружения.
  • Базы данных и исходный код. Небольшой двоичный файл, например шрифт, звук или тестовые данные, можно хранить в текстовом столбце или строковой константе вместо отдельного файла.

Для картинок есть инструмент Изображение в Base64: он умеет менять размер и выдаёт готовые фрагменты HTML и CSS. Чтобы превратить Base64 обратно в файл, воспользуйтесь инструментом Base64 в файл.

Чистый Base64 или data URI?

Чистый Base64 — это только закодированные байты. Именно его ожидают API, Kubernetes, базы данных и большинство программных библиотек; имя файла или тип содержимого обычно передаются в отдельном поле.

Data URI добавляет префикс с типом MIME, например data:application/pdf;base64,, и тогда браузер может использовать всю строку как URL в src, href или CSS-функции url(). Не отправляйте этот префикс в API, которому нужен чистый Base64: многие декодеры его отвергают. Чтобы указать тип MIME вручную или использовать процентное кодирование, попробуйте генератор data URI.

Для JSON, YAML и исходного кода оставляйте перенос строк выключенным. Строка JSON не может содержать настоящие переводы строк, а перенесённые значения в YAML легко ломаются.

Кодирование файла в командной строке

# Linux (GNU coreutils): -w 0 отключает перенос строк через 76 символов, включённый по умолчанию
base64 -w 0 report.docx > report.txt

# macOS
base64 -i report.docx -o report.txt

# Windows PowerShell
[Convert]::ToBase64String([IO.File]::ReadAllBytes("C:\files\report.docx"))

# Kubernetes закодирует файл сам
kubectl create secret generic app-cert --from-file=tls.crt

Часто задаваемые вопросы

Есть ли ограничение на размер файла?

Можно закодировать файлы размером до 100 МБ. Результат примерно на треть больше, поэтому из файла в 100 МБ получится около 133 МБ текста. Показ такого объёма текста может замедлить страницу, поэтому для больших файлов нажимайте «Скачать», а не копируйте результат из поля вывода.

Загружаются ли мои файлы на сервер?

Нет. Файл читается и кодируется с помощью JavaScript в вашем браузере, и по сети ничего не передаётся, поэтому сертификаты, ключи и личные документы остаются на вашем устройстве.

Сжимает или шифрует ли Base64 файл?

Ни то, ни другое. Base64 увеличивает данные примерно на 33%, и декодировать их может кто угодно. Если файл должен остаться конфиденциальным, зашифруйте его перед кодированием; если важен размер, сначала сожмите его, например в архив ZIP или gzip.

Почему в результате есть переносы строк?

Включён параметр «Переносить строки через 76 символов». Такое форматирование соответствует формату MIME, который используется в электронной почте, но большинство API, документов JSON и манифестов Kubernetes ожидают одну непрерывную строку, поэтому для них этот параметр нужно выключить.

Чем этот инструмент отличается от кодировщика Base64?
Кодировщик Base64 предназначен для текста: в нём можно выбрать кодировку символов и вариант Base64. Эта страница предназначена для файлов: она читает исходные байты любого файла, показывает его тип MIME и может сразу выдать data URI.