ToolDeck

Base64 Image Encoder

Encode images to Base64 data URIs for HTML and CSS

Drop an image here or click to upload

PNG, JPG, SVG, WebP, GIF, AVIF supported

Що таке 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 КБ: зображення нижче цього розміру отримують вигоду від вбудовування, тоді як більші слід роздавати як зовнішні файли.