> base64 кодер | text | file <
// Кодируйте текст, UTF-8, JSON, изображения или любой файл в Base64 — стандартный, URL-safe, с padding или без. 100 % на стороне клиента. Перетащите файл до 100 МБ.
Кодирование текста и UTF-8
Кодирует простой текст, многобайтовые символы UTF-8, emoji, JSON, XML и HTML. Использует нативный TextEncoder для точного побайтного UTF-8.
Файл в Base64
Перетащите или нажмите для загрузки любого файла (PNG, JPG, PDF, ZIP, бинарный) до 100 МБ. Выводит чистый Base64 — копируйте напрямую в Data URI, JSON API или HTML.
URL-safe + без padding
Переключите <code>--url-safe</code>, чтобы получить совместимый с JWT/OAuth Base64 с алфавитом <code>-_</code>. Переключите <code>--no-padding</code>, чтобы удалить завершающие <code>=</code>.
// КАК РАБОТАЕТ КОДИРОВАНИЕ BASE64
Алгоритм кодирования Base64:
Base64 берёт 3 входных байта (24 бита), разбивает их на четыре 6-битные группы и отображает каждую группу в символ 64-символьного алфавита (A-Z a-z 0-9 + /). Когда длина ввода не кратна 3, добавляется padding =, чтобы длина вывода была кратна 4. URL-safe Base64 подставляет - и _ вместо + и / — безопасно в URL, именах файлов и JWT без дополнительного процентного кодирования.
Пример кодирования:
Текст : Hi!
Байты : 72 105 33
Биты : 01001000 01101001 00100001
010010 000110 100100 100001
B64 : S G k h
Вывод : SGkh
Частые сценарии кодирования:
- >Встраивание изображений прямо в HTML/CSS (Data URI)
- >Создание вложений MIME email (RFC 2045 §6.8)
- >Построение заголовков HTTP Basic Auth (Authorization: Basic ...)
- >Создание header/payload JWT (URL-safe, без padding)
- >Кодирование бинарных payload для JSON API, которые не могут передавать сырые байты
- >Построение OAuth 2.0 code verifier и S3 presigned URL
// ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
Как закодировать текст в Base64 онлайн?
Введите или вставьте текст в область ВВОД сверху. Авто-кодирование включено по умолчанию — результат Base64 появляется в области ВЫВОД по мере ввода. Нажмите [ENCODE] или Ctrl/Cmd + Enter, чтобы запустить кодирование вручную. Переключайте --url-safe или --no-padding в зависимости от того, где будет использоваться Base64 (JWT, OAuth, URL → оба включены). Всё работает локально в вашем браузере: нет загрузок, логов, сетевых запросов, связанных с вашим вводом.
Как закодировать файл (PNG, JPG, PDF, ZIP, бинарный) в Base64?
Нажмите кнопку [загрузить файл] под областью ввода и выберите файл до 100 МБ. Кодер читает его с помощью FileReader.readAsArrayBuffer, пропускает байты через btoa чанками по 32 КБ (чтобы большие файлы не вешали браузер) и пишет полный Base64 в область ВЫВОД. Для файлов побольше используйте кодер командной строки: base64 < input.bin > output.txt (macOS/Linux), или PowerShell: [Convert]::ToBase64String([IO.File]::ReadAllBytes('input.bin')).
Если хотите получить Base64 в формате Data URI (например, data:image/png;base64,...), добавьте MIME-тип и ;base64, в начало вывода или используйте наш специализированный инструмент Изображение в Base64, который выводит готовые к вставке Data URI для PNG, JPG, GIF, WebP и SVG.
В чём разница между стандартным, URL-safe и Base64 без padding?
Все три определены в RFC 4648:
• Стандартный Base64 (§4) использует алфавит A-Z a-z 0-9 + / с padding =. Длина вывода всегда кратна 4. Безопасно для MIME, HTTP Basic Auth и строковых значений JSON.
• URL-safe Base64 (§5) заменяет + на - и / на _. Требуется, когда Base64 помещается в пути URL, параметры запроса, имена файлов или сегменты JWT — стандартные символы +/ иначе потребовали бы процентного кодирования.
• Без padding (оба §4 и §5, base64url без padding) удаляет завершающие символы =. Длина больше не кратна 4, но декодеры могут вычислить исходную длину из остатка по модулю 4. Используется в JWT (base64url по RFC 7515), WebAuthn и некоторых реализациях CBOR/COSE.
Декодерам нужно сообщать, какой вариант ожидать — наш Base64 Декодер автоматически определяет все три.
Как закодировать Base64 в коде (JavaScript, Python, PHP, Go, Java)?
Каждый крупный язык и runtime поставляется с кодированием Base64. Готовые к копированию сниппеты:
JavaScript (браузер):btoa('Hello') // SGVsbG8=
// Для UTF-8:
btoa(String.fromCharCode(...new TextEncoder().encode(s))) // UTF-8 safe
Node.js:Buffer.from('Hello', 'utf-8').toString('base64') // SGVsbG8=
Buffer.from(bytes).toString('base64url') // URL-safe, без pad
Python:import base64
base64.b64encode(b'Hello').decode() # SGVsbG8=
base64.urlsafe_b64encode(b'Hello').decode().rstrip('=') # URL-safe без pad
PHP: base64_encode('Hello')
Ruby: Base64.strict_encode64('Hello') / Base64.urlsafe_encode64('Hello')
Go: base64.StdEncoding.EncodeToString([]byte("Hello")) / base64.URLEncoding.EncodeToString(...) / base64.RawURLEncoding.EncodeToString(...) (без pad)
Java: Base64.getEncoder().encodeToString("Hello".getBytes(StandardCharsets.UTF_8))
C#: Convert.ToBase64String(Encoding.UTF8.GetBytes("Hello"))
Rust: base64::engine::general_purpose::STANDARD.encode("Hello")
Shell (macOS/Linux): echo -n 'Hello' | base64 → SGVsbG8=. Используйте base64 -w 0 в Linux, чтобы подавить перенос строк по 76 столбцов.
Насколько больше вывод Base64 по сравнению с вводом? Когда НЕ стоит использовать Base64?
Вывод Base64 примерно на 33 % больше ввода: каждые 3 входных байта становятся 4 выходными символами. Точная формула: ceil(n / 3) × 4 включая padding, или ceil(n × 4 / 3) без. Плюс несколько дополнительных байт накладных расходов при переносе строк на 76 столбцах (MIME) или 64 столбцах (PEM).
Примеры:
• 1 КБ бинарных данных → ~1,37 КБ Base64
• Изображение 100 КБ → ~137 КБ Data URI
• PDF 1 МБ → ~1,37 МБ Base64 в JSON
Когда избегать Base64:
• Передача больших файлов: изображение 10 МБ, встроенное как Base64 в HTML, становится 13,7 МБ разбираемого текста, блокирует главный поток и не может кэшироваться отдельно. Предпочитайте <img src="/assets/photo.png">.
• API, критичные к производительности: payload Base64 размером 500 КБ в JSON парсится в ~2-3 раза медленнее эквивалентной бинарной конечной точки.
• Как мера безопасности: Base64 не шифрование — любой может его декодировать. Используйте AES-GCM или аналог для конфиденциальности.
• BLOB в базах данных: храните сырые байты как BLOB/BYTEA, а не как текст Base64, чтобы сэкономить 33 % хранилища и избежать циклов кодирования/декодирования.
Как закодировать текст в URL-safe Base64 для JWT или OAuth-параметра?
JWT (RFC 7515) и OAuth PKCE (RFC 7636) используют URL-safe Base64 без padding, часто называемый base64url. Чтобы получить его в этом инструменте: включите оба флажка --url-safe и --no-padding, затем закодируйте текст.
Программные эквиваленты:
• JavaScript: btoa(s).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '')
• Node.js: Buffer.from(s).toString('base64url')
• Python: base64.urlsafe_b64encode(s.encode()).decode().rstrip('=')
• Go: base64.RawURLEncoding.EncodeToString([]byte(s))
• Java: Base64.getUrlEncoder().withoutPadding().encodeToString(bytes)
Частые поля JWT, требующие base64url: три сегмента через точку (header, payload, signature), OAuth PKCE code_verifier/code_challenge, WebAuthn challenge, Web Push ключи p256dh/auth и параметры Google Request.state.
Частый баг — отправка JWT со стандартным Base64 (+/) — API отклонят его как искажённый, потому что + URL-декодируется в пробел при передаче.
Можно ли закодировать Data URI (data:image/png;base64,...) этим инструментом?
Да, с одной оговоркой. Этот кодер производит Base64-часть Data URI — часть после ;base64,. Чтобы построить полный Data URI, добавьте в начало:data:<mime-type>;base64,<encoded-output>
Частые MIME-типы:
• data:image/png;base64,... — изображение PNG
• data:image/jpeg;base64,... — изображение JPEG
• data:image/svg+xml;base64,... — SVG (или используйте data:image/svg+xml;utf8, без Base64 — обычно меньше)
• data:application/pdf;base64,... — файл PDF
• data:application/font-woff2;base64,... — встраивание шрифта
• data:text/plain;charset=utf-8;base64,... — текст, обёрнутый в Base64
Для изображений и SVG инструмент Изображение в Base64 выдаёт полный Data URI, готовый к вставке в CSS background-image, inline <img src="..."> или теги <object data="...">.
Предупреждение о размере: Data URI свыше 20-30 КБ портят LCP (Largest Contentful Paint), потому что браузер не может их предзагрузить — держите встроенные Base64-изображения маленькими и предпочитайте обычные <img> с loading="lazy" для более крупных ресурсов.
Безопасен ли этот Base64-кодер для конфиденциального текста и API-ключей?
Да — ничего не покидает ваш браузер. Кодер работает полностью в JavaScript, используя нативные API btoa(), TextEncoder и FileReader. Нет сетевых вызовов по содержимому ввода, телеметрии, логирования, стороннего аналитического отслеживания того, что вы кодируете. Вы можете открыть вкладку Network в DevTools во время кодирования и наблюдать ноль связанных запросов.
Однако Base64 не является шифрованием — это обратимое кодирование, и любой, у кого есть вывод, может его декодировать. Поэтому:
• Не вставляйте секреты из продакшена в чаты, скриншоты или логи даже в закодированном виде.
• Для HTTP Basic Auth заголовок Base64 Authorization: Basic безопасен только по TLS (HTTPS). По открытому HTTP он тривиально перехватывается.
• Для настоящей конфиденциальности используйте AES-GCM, age, sops или KMS — затем Base64-кодируйте шифротекст для транспорта, если нужно.
Для строгих политик против утечки данных сохраните эту страницу офлайн (Cmd/Ctrl + S). Кодер полностью работает в изоляции после одной загрузки, поскольку нет серверных зависимостей.
Можно ли кодировать очень большие файлы в Base64? Каковы ограничения браузера?
Кодер поддерживает файлы до 100 МБ благодаря жёсткому лимиту в обработчике файлов — достаточно для большинства изображений, PDF, ZIP-архивов и даже коротких видео. Цели производительности:
• < 1 МБ: кодирование завершается за <50 мс, без зависания UI.
• 1 – 10 МБ: 100-500 мс в зависимости от CPU. Браузер остаётся отзывчивым, потому что мы кодируем чанками по 32 КБ.
• 10 – 100 МБ: 2-15 секунд. Текстовая область вывода может слегка тормозить при вставке/прокрутке таких огромных строк Base64. При необходимости рассмотрите скачивание вывода как файла .txt из DevTools.
• > 100 МБ: заблокировано — накладные расходы памяти браузера (входные байты + бинарная строка + строка Base64 ≈ 3-4× размера файла) рискуют обрушить вкладку. Используйте:# macOS / Linux
base64 -i huge.bin -o huge.b64
# Windows PowerShell
$bytes = [IO.File]::ReadAllBytes('huge.bin')
[IO.File]::WriteAllText('huge.b64', [Convert]::ToBase64String($bytes))
Для потоковых/много-гигабайтных сценариев см. кодирование больших файлов в Base64 для чанкового подхода с Node.js/Python, который избегает загрузки всего в память.
Какую кодировку символов использует этот Base64-кодер для текстового ввода?
Этот кодер использует UTF-8, ту же кодировку, что современный веб, JSON, Linux, macOS и практически все языки программирования по умолчанию. Под капотом текст передаётся через new TextEncoder().encode(input), который всегда производит байты UTF-8, и только затем кодируется в Base64.
Почему это важно: старая JavaScript-функция btoa() обрабатывает только Latin-1 и выбрасывает InvalidCharacterError на символах типа é, 中 или 😀. Наша обёртка обрабатывает преобразование UTF-8 за вас, поэтому emoji, китайский, японский, корейский, арабский, кириллица и любая кодовая точка Unicode кодируются корректно.
Если нужна другая кодировка:
• UTF-16 LE (родная для Windows): редко — обычно признак устаревшей интероперабельности. Используйте new TextEncoder({ fatal: true }).encode(s) в любом случае и конвертируйте выше по стеку.
• ISO-8859-1 / Latin-1: вручную отобразите кодовые точки 0-255 в байты перед кодированием.
• GB18030, Shift_JIS, EUC-KR: используйте библиотеку типа iconv-lite в Node.js для транскодирования сначала.
Тонкий подвох: если ваши исходные данные уже в кодировке, отличной от UTF-8 (например, чтение дампа legacy MySQL), сначала декодируйте их правильным кодеком, затем перекодируйте в UTF-8 перед Base64 — иначе декодированный Base64 сохранит mojibake.