Base64 File Encoder

Кодування будь-якого файлу у Base64: PDF, ZIP, зображення тощо

Перетягніть будь-який файл сюди або натисніть для завантаження

Будь-який тип файлу: PDF, ZIP, зображення, бінарні файли

Що таке кодування файлів у Base64?

Кодування файлів у Base64 перетворює бінарні файли — PDF, ZIP, зображення, виконувані файли, шрифти, аудіо — на звичайний ASCII-текст за алфавітом, визначеним у RFC 4648. Кожні три байти бінарного вхідного потоку перетворюються на чотири символи Base64, формуючи текстове представлення, яке можна передавати через канали, призначені виключно для тексту: JSON API-запити, XML-документи, тіла листів, HTML-атрибути та змінні середовища.

На відміну від кодування тексту у Base64 (що працює з рядками), кодування файлу у Base64 зчитує сирий байтовий потік будь-якого файлу незалежно від його формату. Бінарні заголовки PDF, стиснені блоки ZIP та піксельні дані PNG обробляються однаково: як послідовність октетів для перекодування. Результат завжди є коректним ASCII, безпечним для вставки скрізь, де допускаються символи, що друкуються.

Компроміс — розмір: вихідні дані Base64 приблизно на 33% більші за оригінальний бінарний файл. Для PDF розміром 1 МБ це означає приблизно 1,33 МБ тексту Base64. Цей оверхед є наслідком представлення 8-бітних байтів 6-бітними символами і властивий самому кодуванню — жодна реалізація не може його уникнути. Попри це, кодування файлів у Base64 лишається стандартним методом вбудовування бінарних даних у текстові формати, визначеним у MIME (RFC 2045), data URI (RFC 2397) та JSON Web Tokens (RFC 7519).

Чому варто використовувати цей Base64 File Encoder?

Цей інструмент кодує файли у Base64 безпосередньо у вашому браузері за допомогою FileReader API. Жоден файл не завантажується на сервер — все перетворення відбувається на стороні клієнта в JavaScript.

🛡
Обробка без збереження приватності
Ваш файл ніколи не залишає пристрій. FileReader API зчитує файл у пам'ять локально, а Base64 генерується повністю у браузері. Жодного мережевого запиту не виконується.
Миттєве перетягування
Перетягніть будь-який файл у інструмент і відразу отримайте Base64. Не потрібно чекати завантаження, дивитися на прогрес-бари чи дотримуватися обмежень розміру від сервера.
📁
Будь-який формат файлів
Кодуйте PDF, ZIP, зображення, шрифти, аудіофайли, модулі WebAssembly або будь-який інший бінарний формат. Кодувальник обробляє всі файли як сирі байтові потоки — формат не має значення.
🔒
Без реєстрації
Використовуйте інструмент одразу без реєстрації, входу в систему та прийняття cookie. Результат готовий до копіювання або завантаження як файл .b64.txt одним кліком.

Сценарії використання кодування файлів у Base64

Frontend-розробник
Вбудовуйте маленькі іконки, шрифти або SVG безпосередньо в CSS або HTML як data URI, щоб позбутися зайвих HTTP-запитів. Іконка розміром 2 КБ, вбудована як Base64, заощаджує мережевий round-trip, який додав би 50–200 мс затримки.
Backend-інженер
Включайте вкладені файли у JSON API-запити, коли транспортний протокол не підтримує multipart-завантаження. Кодуйте PDF, звіти або підписані документи перед відправкою як рядкові поля у відповідях REST або GraphQL.
DevOps / Інфраструктура
Зберігайте бінарні конфігураційні файли (TLS-сертифікати, SSH-ключі, файли ліцензій) як рядки Base64 у змінних середовища, Kubernetes Secrets або Terraform tfvars, де сирі бінарні значення заборонені.
QA / Інженер тестування
Генеруйте Base64-фікстури файлів для автоматизованих тестів, що перевіряють ендпоінти завантаження, обробку вкладень листів або конвеєри обробки документів, без необхідності зберігати бінарні тестові файли у системі контролю версій.
Інженер з даних
Серіалізуйте бінарні блоби (метадані Parquet, схеми Protobuf, невеликі бінарні активи) у Base64 для зберігання в JSON-каталогах даних, сховищах конфігурацій або скриптах міграції.
Студент / Той, хто навчається
Спостерігайте, як бінарні файли перетворюються на текст, кодуючи невеликі файли та досліджуючи результат. Порівняйте довжину Base64 з розміром оригінального файлу, щоб підтвердити 33%-й оверхед, описаний у RFC 4648.

Оверхед розміру файлу при кодуванні у Base64

Кодування у Base64 збільшує розмір даних рівно на одну третину. Кожні 3 вхідні байти дають 4 вихідні символи (кожен представляє 6 біт). Символи доповнення (=) додаються, коли довжина вхідних даних не кратна 3. Таблиця нижче показує співвідношення між розміром оригінального файлу та розміром закодованого виходу.

Розмір файлуВихідні байтиБайти Base64Оверхед
1 KB1,024 B1,368 B+33.3%
10 KB10,240 B13,656 B+33.4%
100 KB102,400 B136,536 B+33.3%
1 MB1,048,576 B1,398,104 B+33.3%
5 MB5,242,880 B6,990,508 B+33.3%
10 MB10,485,760 B13,981,016 B+33.3%

Data URI та довідник MIME-типів

Data URI вбудовує вміст файлу безпосередньо в HTML, CSS або JavaScript у форматі data:[MIME type];base64,[encoded data]. MIME-тип вказує браузеру, як інтерпретувати декодовані байти. Нижче наведено поширені розширення файлів, їхні MIME-типи та відповідний префікс data URI.

РозширенняMIME-типПрефікс Data URI
.pdfapplication/pdfdata:application/pdf;base64,...
.zipapplication/zipdata:application/zip;base64,...
.pngimage/pngdata:image/png;base64,...
.jpgimage/jpegdata:image/jpeg;base64,...
.gifimage/gifdata:image/gif;base64,...
.svgimage/svg+xmldata:image/svg+xml;base64,...
.woff2font/woff2data:font/woff2;base64,...
.mp3audio/mpegdata:audio/mpeg;base64,...
.wasmapplication/wasmdata:application/wasm;base64,...
.binapplication/octet-streamdata:application/octet-stream;base64,...

Приклади коду

Ці готові до запуску приклади демонструють, як зчитати бінарний файл і закодувати його у Base64 на JavaScript, Python, Node.js, bash та Go. Кожен фрагмент генерує стандартний Base64 (RFC 4648, секція 4) з доповненням.

JavaScript (browser)
// Read a file from an <input> element and encode to Base64
const input = document.querySelector('input[type="file"]')
input.addEventListener('change', (e) => {
  const file = e.target.files[0]
  const reader = new FileReader()
  reader.onload = () => {
    const base64 = reader.result.split(',')[1]
    console.log(base64) // → "JVBERi0xLjQK..." (raw Base64, no data URI prefix)
  }
  reader.readAsDataURL(file)
})

// Convert a Blob to Base64 with async/await
async function blobToBase64(blob) {
  const buffer = await blob.arrayBuffer()
  const bytes = new Uint8Array(buffer)
  let binary = ''
  bytes.forEach(b => binary += String.fromCharCode(b))
  return btoa(binary) // → standard Base64 string
}
Python
import base64
from pathlib import Path

# Encode a file to Base64
file_bytes = Path('document.pdf').read_bytes()
encoded = base64.b64encode(file_bytes).decode('ascii')
print(encoded[:40])  # → "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PA..."

# Write encoded output to a text file
Path('document.b64.txt').write_text(encoded)

# Build a data URI from a file
mime_type = 'application/pdf'
data_uri = f'data:{mime_type};base64,{encoded}'
print(data_uri[:60])  # → "data:application/pdf;base64,JVBERi0xLj..."
Node.js
import { readFileSync, writeFileSync } from 'fs'

// Encode a file to Base64
const buffer = readFileSync('archive.zip')
const base64 = buffer.toString('base64')
console.log(base64.length) // → 1398104 (for a ~1 MB file)

// Save Base64 output to a file
writeFileSync('archive.b64.txt', base64)

// Build a data URI
const mime = 'application/zip'
const dataUri = `data:${mime};base64,${base64}`
CLI (bash)
# Encode a file to Base64 (macOS / Linux)
base64 < document.pdf > document.b64.txt

# Encode with no line wrapping (GNU coreutils)
base64 -w 0 < document.pdf > document.b64.txt

# Encode and copy to clipboard (macOS)
base64 < image.png | pbcopy

# Encode with OpenSSL (available everywhere)
openssl base64 -in archive.zip -out archive.b64.txt

# Pipe directly into curl for API upload
base64 -w 0 < photo.jpg | curl -X POST -d @- https://api.example.com/upload
Go
package main

import (
	"encoding/base64"
	"fmt"
	"os"
)

func main() {
	data, err := os.ReadFile("document.pdf")
	if err != nil {
		panic(err)
	}
	encoded := base64.StdEncoding.EncodeToString(data)
	fmt.Println(len(encoded)) // → 1398104 (for a ~1 MB file)

	// Write to file
	os.WriteFile("document.b64.txt", []byte(encoded), 0644)
}

Часті запитання

Який максимальний розмір файлу можна закодувати у Base64?
Цей інструмент працює повністю у вашому браузері, тому обмеження залежить від доступної пам'яті. Сучасні браузери без проблем обробляють файли до 50–100 МБ. Для більших файлів використовуйте консольний інструмент, як-от base64 (macOS/Linux) або модуль base64 Python, які обробляють файл частинами і не завантажують весь вивід у пам'ять одразу.
Наскільки Base64 більший за оригінальний файл?
Вивід Base64 завжди приблизно на 33,3% більший за вхідні дані. Точна формула: ceil(n / 3) * 4, де n — кількість вхідних байтів. Файл розміром 1 МБ дає приблизно 1,33 МБ тексту Base64. Цей оверхед властивий кодуванню і не може бути зменшений.
Чи можна закодувати файл у Base64 і використати як data URI?
Так. Додайте префікс MIME-типу до рядка Base64: data:application/pdf;base64, після чого йде закодований вміст. Браузери розкодують і відобразять data URI так само, як звичайний файл. Data URI працює в атрибутах img src, link href, CSS url() та download в тегу anchor.
Кодування файлів у Base64 — це те саме, що шифрування?
Ні. Base64 — це кодування, а не шифрування. Воно перетворює бінарні дані на текстове представлення, яке тривіально повернути назад — будь-хто з декодером Base64 може відновити оригінальний файл. Base64 не забезпечує конфіденційності, цілісності чи автентифікації. Якщо потрібно захистити вміст файлу, спочатку зашифруйте його (наприклад, за допомогою AES-256-GCM), а потім закодуйте шифротекст у Base64 для передачі.
Чому мій рядок Base64 закінчується одним або двома символами =?
Символи = — це доповнення. Base64 обробляє вхідні дані групами по 3 байти, генеруючи 4 вихідних символи на групу. Коли розмір файлу не кратний 3, додається один або два символи доповнення, щоб довжина виводу завжди була кратною 4. Один = означає, що в останній групі було 2 байти; два == означають, що в останній групі був 1 байт.
Як закодувати файл у Base64 з командного рядка?
На macOS та Linux використовуйте команду base64: base64 < file.pdf > file.b64.txt. На GNU/Linux додайте -w 0, щоб вимкнути перенесення рядків. Можна також використати OpenSSL: openssl base64 -in file.pdf -out file.b64.txt. На Windows PowerShell: [Convert]::ToBase64String([IO.File]::ReadAllBytes('file.pdf')).
Коли варто використовувати кодування файлів у Base64 замість multipart/form-data?
Використовуйте Base64, коли транспорт вимагає текстовий формат — JSON API, XML-RPC, змінні середовища або Kubernetes Secrets. Використовуйте multipart/form-data при завантаженні файлів через HTML-форми або REST-ендпоінти, що підтримують бінарні потоки. Multipart ефективніший, оскільки уникає 33%-го оверхеду розміру, але вимагає від сервера розбору multipart-меж.