Как конвертировать файл в Base64
- Перетащите в поле один или несколько файлов, выберите их через диалог или вставьте скопированные файлы через Ctrl+V.
- Выберите Формат вывода: Чистый Base64 (здесь он по умолчанию), Data URI, HTML
<a download>, JSON, а также обёртки для изображений и шрифтов. - По желанию: URL-safe (- _) заменяет
+и/на-и_; Перенос по 76 разбивает строки для почты MIME. - Нажмите Скопировать результат или Сохранить как .txt, чтобы получить
filename.ext.b64.txt.
Если файлов несколько, в списке видно имя каждого, его исходный и закодированный размер. Показать выводит один результат, а Скопировать всё как JSON копирует все файлы массивом объектов {name, type, size, data}. Такой массив удобно вставить в файл с фикстурами или в скрипт начального заполнения базы.
Форматы вывода для любых файлов, кроме картинок
| Формат вывода | Результат для report.zip | Зачем нужен |
|---|---|---|
| Чистый Base64 | UEsDBBQAAAAI... | поля API, переменные окружения, значения в конфигах |
| Data URI | data:application/zip;base64,UEsDBBQA... | URL в HTML или JavaScript |
HTML <a download> | <a href="data:application/zip;base64,..." download="report.zip">report.zip</a> | самодостаточная ссылка на скачивание |
| JSON | {"name": "report.zip", "type": "application/zip", "size": 323, "data": "UEsDBBQA..."} | тестовые фикстуры, собственные эндпоинты загрузки |
Ключи JSON фиксированы (name, type, size, data). Если API ждёт другие имена, переименуйте их после вставки. В size лежит исходный размер файла в байтах, по нему получатель может проверить, что длина после декодирования совпала.
MIME-тип в data URI и поле type в JSON берутся из браузера. Если браузер такого файла не знает, тип подбирается по расширению, а когда не помогает и оно, ставится application/octet-stream. Сам Base64 от этого никогда не зависит, меняется только метка.
Бинарные файлы в секретах CI и конфигах
Файл целиком часто кодируют ради хранилища секретов, которое умеет держать только текст: переменные CI, файлы .env, Kubernetes Secrets. Хранилища ключей для подписи, сертификаты и файлы сервисных аккаунтов кладутся туда одной строкой Base64, а в пайплайне восстанавливаются:
echo "$KEYSTORE_B64" | base64 -d > release.keystore
Перенос по 76 для этого держите выключенным: интерфейс хранилища секретов или оболочка часто портят значение с переводами строк. Kubernetes хранит так каждое значение в разделе data:, а декодер Kubernetes Secret читает их обратно.
Как узнать, что закодировано, по первым символам
Большинство форматов начинается с фиксированной сигнатуры, поэтому начало Base64 выдаёт тип файла без декодирования. Несколько частых вариантов:
| Тип файла | Base64 начинается с |
|---|---|
JVBERi0 | |
| ZIP, DOCX, XLSX, PPTX, JAR, APK | UEsDB |
gzip (.gz, .tgz) | H4sI |
| 7-Zip | N3q8ryc |
| EXE или DLL для Windows | TVqQ (большинство файлов), всегда TV |
| Бинарник ELF для Linux | f0VMRg |
| База данных SQLite | U1FMaXRlIGZvcm1hdCAz |
| MP3 с тегом ID3 | SUQz |
| PNG | iVBORw0KGgo |
| Объект JSON | eyJ (для {") |
Список подлиннее есть в статье о типичных префиксах Base64. При декодировании в Base64 в файл тип определяется точно так же.
Размер, память и большие файлы
Результат в Base64 составляет 4/3 от входа с округлением вверх до кратного 4 числа символов. Файл в 1 МБ превращается в 1 398 104 символа, а с Перенос по 76 к ним добавляется ещё 18 396 переводов строки. Счётчики под результатом показывают оба размера и накладные расходы в процентах.
Всё выполняется во вкладке браузера, так что на практике предел задаёт память вашего устройства:
- В текстовом поле показываются первые 4 МБ результата; Скопировать результат и Сохранить как .txt всегда работают с полным результатом.
- Скопировать результат отключается, если результат больше примерно 48 МБ.
- Файлы больше примерно 48 МБ кодируются по частям, и результат можно получить только через Сохранить как .txt.
Если файл настолько большой, стоит спросить себя, подходит ли Base64 для передачи. Загрузка multipart или прямая передача двоичных данных обходятся без 33% накладных расходов и всплеска потребления памяти на обеих сторонах. Калькулятор размера покажет размер в Base64 ещё до начала.
Как закодировать файл в командной строке или в коде
Linux с GNU coreutils (-w 0 отключает перенос на 76 символах, который включён по умолчанию):
base64 -w 0 report.zip > report.zip.b64
macOS (там base64 по умолчанию не переносит строки):
base64 -i report.zip -o report.zip.b64
Windows PowerShell:
[Convert]::ToBase64String([IO.File]::ReadAllBytes("C:\data\report.zip")) | Set-Content report.zip.b64
Python:
import base64
from pathlib import Path
encoded = base64.b64encode(Path("report.zip").read_bytes()).decode("ascii")
Как кодировать большие файлы потоково, не загружая их в память целиком, смотрите в статьях Base64 в Python, Node.js, Java и PHP.
Частые проблемы
- Переводы строк в результате. GNU
base64по умолчанию переносит на 76 символах,openssl base64на 64, аcertutil -encodeещё и добавляет строки-заголовки. Многим JSON API и переменным окружения нужна одна строка. Используйте-w 0,openssl base64 -Aили этот инструмент с выключенным переносом. application/octet-streamв data URI. Браузер не знал тип, а расширения не оказалось в списке инструмента. Байты при этом верные; если получателю важен тип, замените MIME-тип в префиксе.- Кнопка «Скопировать результат» неактивна. Результат больше предела копирования, примерно 48 МБ. Сохранить как .txt по-прежнему работает, а большинство программ, которым нужна эта строка, умеют читать её из файла.
- В JSON у одного файла
"data": null. В пакетном режиме файлы больше примерно 48 МБ кодируются по частям только для скачивания, поэтому Скопировать всё как JSON не включает их данные. Закодируйте такой файл отдельно и сохраните как .txt. - Декодированный файл меньше оригинала. Строку обрезали. Сравните длину после декодирования со значением
sizeв выводе JSON. - Кракозябры, хотя на входе был текст. Base64 сохраняет байты как есть, вместе с исходной кодировкой символов. Текстовый файл в UTF-16 декодируется в UTF-16, а не в UTF-8. Для текста, который вы вводите сами, используйте Текст в Base64: там можно выбрать кодировку.
Вопросы и ответы
Какие файлы можно конвертировать в Base64?
Любые. Base64 кодирует байты, и ему всё равно, что они означают, поэтому исполняемые файлы, архивы, базы данных и документы кодируются так же, как текст. Страницы для отдельных форматов вроде PDF в Base64 лишь добавляют подсказки по этому формату.
Есть ли ограничение на размер файла?
Фиксированного ограничения нет: вся работа идёт в браузере. Результат примерно до 48 МБ можно скопировать, дальше используйте Сохранить как .txt. Файлы больше примерно 48 МБ кодируются по частям, и результат доступен только для скачивания.
Как закодировать файл в Base64 в Windows без дополнительных программ?
PowerShell справится одной строкой: [Convert]::ToBase64String([IO.File]::ReadAllBytes("C:\path\file.bin")). Подойдёт и certutil -encode, но он добавляет строки -----BEGIN CERTIFICATE----- и переносит вывод, так что всё это потом придётся вычищать.
Какой MIME-тип указывается в data URI?
Тот, который браузер сообщает для файла. Если браузер тип не знает, инструмент угадывает его по расширению, а в крайнем случае ставит application/octet-stream. Если получателю нужен конкретный тип, поправьте префикс вручную.
Как декодировать Base64 обратно в файл?
Воспользуйтесь Base64 в файл. Он определяет тип файла по декодированным байтам и предлагает подходящее расширение.