Base64 Image Encoder

Кодування зображень у Base64 data URI для HTML та CSS

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

Підтримуються PNG, JPG, SVG, WebP, GIF, AVIF

Що таке Base64-кодування зображень?

Base64-кодування зображень перетворює двійкові дані зображення на ASCII-рядок, який можна вбудувати безпосередньо в HTML, CSS або JSON без посилання на зовнішній файл. Результатом є data URI — самодостатній рядок, що починається з data:image/png;base64, після якого йдуть Base64-кодовані байти зображення. Браузери обробляють data URI точно так само, як зовнішні URL зображень: вони декодують Base64-вміст і відображають зображення вбудовано.

Ця техніка визначена в RFC 2397 (схема data URI) та RFC 4648 (Base64-кодування). При Base64-кодуванні зображення кожні 3 байти двійкових піксельних даних перетворюються на 4 ASCII-символи, збільшуючи розмір корисного навантаження приблизно на 33%. Незважаючи на цей додатковий обсяг, вбудовані зображення усувають HTTP-запит для кожного ресурсу — суттєва оптимізація, коли зображення невеликі (іконки, логотипи, відстежувальні пікселі 1x1), а затримка окремого запиту перевищує вартість додаткових байт.

Data URI підтримуються в усіх сучасних браузерах, поштових клієнтах (з певними застереженнями) та будь-якому контексті, що приймає стандартний синтаксис URI. Вони широко використовуються в односторінкових застосунках, HTML-шаблонах для email, SVG-спрайтах та оголошеннях CSS background-image, де зменшення загальної кількості мережевих запитів покращує суб'єктивний час завантаження.

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

Цей інструмент конвертує будь-яке зображення в готовий до використання data URI прямо у вашому браузері — без завантаження на сервер, без сервера, без облікового запису.

Миттєва конвертація
Перетягніть зображення або оберіть файл — повний data URI з'явиться одразу. Без очікування обробки на сервері: API FileReader виконує все локально.
🔒
Обробка з пріоритетом конфіденційності
Ваші зображення ніколи не покидають ваш пристрій. Кодування виконується повністю в браузері за допомогою вбудованого методу FileReader.readAsDataURL(). Жодні дані не передаються на жодний сервер.
🌐
Підтримуються всі основні формати
Приймає PNG, JPEG, SVG, WebP, GIF, ICO, BMP та будь-який інший формат зображення, підтримуваний вашим браузером. MIME-тип визначається автоматично з файлу.
📦
Готовий до копіювання результат
Результатом є повний рядок data URI — вставте його безпосередньо в атрибут src тегу img HTML, оголошення CSS url() або JSON-навантаження без жодного ручного форматування.

Сценарії використання Base64-кодування зображень

Фронтенд-розробка
Вбудуйте дрібні іконки та UI-ресурси безпосередньо в HTML або CSS, щоб усунути HTTP-запити. Це зменшує каскадну затримку для критичних зображень у зоні видимості, покращуючи показники Largest Contentful Paint (LCP).
HTML-шаблони для email
Багато поштових клієнтів за замовчуванням блокують зовнішні зображення. Вбудовані Base64-зображення відображаються одразу, не вимагаючи від одержувача натискати «завантажити зображення», що підвищує показники відкриття та візуальну узгодженість.
Односторінкові застосунки
Упакуйте невеликі ресурси як data URI у ваш JavaScript або CSS, щоб зменшити загальну кількість мережевих запитів. Webpack і Vite обидва підтримують автоматичне вбудовування Base64 для ресурсів, що не перевищують налаштованого порогу розміру.
API та JSON-навантаження
Закодуйте аватари користувачів, підписи або мініатюри як Base64-рядки для включення безпосередньо у відповіді JSON API. Це усуває потребу в окремому ендпоінті для хостингу файлів для невеликих зображень.
Документація та Markdown
Вбудуйте діаграми або знімки екрана як data URI у файли Markdown або документи README. Зображення зберігаються разом з документом і відображаються коректно без зовнішнього хостингу.
Тестування та прототипування
Використовуйте Base64 data URI як зображення-заглушки у тестових фікстурах, stories для Storybook або прототипних HTML-файлах. Не потрібно налаштовувати сервер статичних файлів або керувати ресурсами зображень на ранніх етапах розробки.

Структура data URI

Data URI кодує формат зображення та двійковий вміст в одному рядку. Розуміння його структури допомагає при програмній побудові або розборі data URI:

КомпонентОпис
data:URI scheme identifier
image/pngMIME type of the image
;base64,Encoding declaration
iVBORw0KGgo...Base64-encoded binary data

Порівняння форматів зображень для Base64-кодування

Вибір формату зображення впливає на розмір Base64-виводу, підтримку браузерами та характеристики відображення. Використовуйте формат, що найкраще відповідає вашому типу вмісту:

ФорматMIME-типПрозорістьНайкраще для
PNGimage/pngYesScreenshots, icons, UI elements
JPEGimage/jpegNoPhotos, gradients, large images
SVGimage/svg+xmlYesLogos, icons, scalable graphics
WebPimage/webpYesModern web images, smaller files
GIFimage/gifYes (1-bit)Simple animations, small icons
ICOimage/x-iconYesFavicons

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

Як конвертувати зображення в Base64 data URI в популярних мовах та середовищах:

JavaScript (browser)
// Convert a File object to a Base64 data URI
function fileToDataUri(file) {
  return new Promise((resolve, reject) => {
    const reader = new FileReader()
    reader.onload = () => resolve(reader.result)
    reader.onerror = reject
    reader.readAsDataURL(file)
    // reader.result → "data:image/png;base64,iVBORw0KGgo..."
  })
}

// Convert a canvas element to a data URI
const dataUri = canvas.toDataURL('image/png')
// → "data:image/png;base64,iVBORw0KGgo..."

// Convert with quality parameter (JPEG/WebP only)
const jpegUri = canvas.toDataURL('image/jpeg', 0.8)
// → "data:image/jpeg;base64,/9j/4AAQ..."
Python
import base64

# Read an image file and encode it to a data URI
with open('logo.png', 'rb') as f:
    encoded = base64.b64encode(f.read()).decode('ascii')

data_uri = f'data:image/png;base64,{encoded}'
# → "data:image/png;base64,iVBORw0KGgo..."

# Detect MIME type automatically
import mimetypes
mime, _ = mimetypes.guess_type('photo.jpg')
# mime → "image/jpeg"

with open('photo.jpg', 'rb') as f:
    b64 = base64.b64encode(f.read()).decode('ascii')

data_uri = f'data:{mime};base64,{b64}'
Node.js
import { readFileSync } from 'fs'
import { lookup } from 'mime-types'

// Read file and encode to data URI
const buffer = readFileSync('icon.png')
const base64 = buffer.toString('base64')
const mime = lookup('icon.png') // → "image/png"

const dataUri = `data:${mime};base64,${base64}`
// → "data:image/png;base64,iVBORw0KGgo..."

// From a Buffer received via HTTP/API
function bufferToDataUri(buf, mimeType) {
  return `data:${mimeType};base64,${buf.toString('base64')}`
}
CLI (bash)
# Encode an image to Base64 (macOS)
base64 -i logo.png | tr -d '\n'

# Encode an image to a full data URI (Linux)
echo -n "data:image/png;base64,$(base64 -w 0 logo.png)"

# Encode and copy to clipboard (macOS)
echo -n "data:image/png;base64,$(base64 -i logo.png | tr -d '\n')" | pbcopy

# Detect MIME type and encode (Linux, requires file command)
MIME=$(file -b --mime-type image.webp)
echo -n "data:$MIME;base64,$(base64 -w 0 image.webp)"

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

Який максимальний розмір зображення для Base64-кодування?
У специфікації Base64 немає жорсткого ліміту. Підтримка data URI в браузерах варіюється: більшість сучасних браузерів обробляють data URI розміром до кількох мегабайт. Однак Base64-кодування збільшує розмір на 33%, тому зображення 1 МБ стає приблизно 1,33 МБ тексту. Для зображень, більших за 10–20 КБ, ефективніше роздавати їх як окремі файли з правильними заголовками кешування.
Чи знижує Base64-кодування якість зображення?
Ні. Base64 — це кодування без втрат: воно перетворює двійкові дані на текст без зміни вмісту. Декодовані дані побайтово ідентичні вихідному файлу. Будь-яка втрата якості пов'язана з самим форматом зображення (наприклад, стиснення JPEG), а не з Base64-кодуванням.
Чому Base64-кодований вивід більший за оригінальне зображення?
Base64 представляє 3 байти двійкових даних за допомогою 4 ASCII-символів, що дає збільшення розміру на 33%. Data URI також додає префікс (наприклад, data:image/png;base64,) довжиною близько 25–30 символів. Для невеликих зображень (менше 2–5 КБ) цей додатковий обсяг компенсується відсутністю HTTP-запиту. Для більших зображень розмірний штраф робить зовнішні файли ефективнішими.
Чи можна використовувати Base64-зображення в CSS background-image?
Так. Використовуйте data URI як значення функції url(): background-image: url('data:image/png;base64,...'). Це працює в усіх сучасних браузерах. Найефективніше для невеликих фонових патернів або іконок, що часто використовуються, де уникнення HTTP-запиту виправдовує дещо більший CSS-файл.
Чи є Base64-кодування зображень безпечним для конфіденційних зображень?
Base64 — це кодування, а не шифрування. Будь-хто, хто бачить data URI, може декодувати його назад у вихідне зображення. Не покладайтеся на Base64 для захисту конфіденційних зображень. Цей інструмент обробляє зображення повністю у вашому браузері — жодні дані не надсилаються на жодний сервер — але отриманий data URI є звичайним текстом, який може прочитати будь-хто з доступом до вашого HTML або CSS коду.
Як конвертувати Base64 data URI назад у файл зображення?
У JavaScript використайте fetch() з data URI та викличте blob() для відповіді, потім створіть посилання для завантаження. У Python розбийте рядок за комою, декодуйте Base64-частину за допомогою base64.b64decode() та запишіть байти у файл. Ви також можете скористатися інструментом Base64 Image Decoder на цьому сайті.
Чи слід Base64-кодувати всі зображення на моєму сайті?
Ні. Вбудовування Base64 корисне для невеликих зображень (іконки, логотипи, пікселі 1x1), де накладні витрати HTTP-запиту перевищують штраф у 33% розміру. Для більших зображень використовуйте окремі файли з правильними заголовками кешування — браузер може кешувати їх незалежно та завантажувати паралельно. Поширений поріг — 2–8 КБ: зображення нижче цього розміру отримують вигоду від вбудовування, тоді як більші слід роздавати як зовнішні файли.