Инструмент в браузере

Компрессор изображений Base64

Локально декодируйте Base64, настройте размер, качество или формат и получите стандартный результат для img src, CSS, JSON и API.

Локально в браузере · Без загрузки · Без аккаунта

Вставьте Raw Base64 с пробелами или полную data:image/...;base64,... строку. Внешние URL не поддерживаются.

Настройки сжатия

Результат

Исходное изображение

Выберите или вставьте изображение.

Результат

Выберите или вставьте изображение.

Исходные данные

Данные результата

Base64 — кодирование, а не сжатие

Стандартный Base64 представляет три байта четырьмя символами: точная длина 4 × ceil(n / 3), устойчивое увеличение около 33,3%. Data URL добавляет MIME-префикс.

Инструмент сначала уменьшает байты изображения: декодирует, при необходимости меняет размеры, качество или формат и снова создаёт стандартный Base64.

Gzip создаёт другой результат

Gzip поверх Base64 даёт бинарные данные, которые нужно распаковать перед показом. Повторный Base64 не превращает их в обычную Data URL изображения.

JPEG, PNG и WebP уже сжаты. Уменьшение пикселей, качества, метаданных или смена формата может помочь, но не гарантирует отсутствие потерь или меньший размер.

Целевой размер без увеличения

Для JPEG и WebP качество ищется за фиксированное число шагов. Затем размеры уменьшаются ограниченными раундами с сохранением пропорций.

Если стандартный Base64 не стал короче, остаются исходные байты. Недостижение цели в КБ отмечается явно, а возвращается лучший меньший вариант.

Локальная обработка и границы

Всё остаётся во вкладке: без загрузки, внешних URL, телеметрии и библиотек. Ограничения — 20 МиБ и 16 мегапикселей.

SVG, GIF, ICO и анимированный WebP отклоняются, чтобы не выполнять содержимое и не терять кадры. Auto сохраняет прозрачность; JPEG требует подтверждённого фона. Canvas не является антивирусом.

Когда Base64 не подходит

Он удобен для небольших встроенных ресурсов. Большие изображения лучше хранить как Blob URL, отдельные файлы или передавать бинарно ради кэша и передачи.

Байты и символы Base64 сравниваются отдельно. Удаление префикса data: не считается сжатием.

Частые ошибки и причины

  • Недопустимые символы, padding или длина Base64.
  • Объявленный MIME расходится с magic bytes.
  • Более 20 МиБ, 16 мегапикселей или ошибка декодирования.
  • Анимация, несколько кадров, SVG или уже оптимизированное изображение.

Эквивалентные команды

Используйте доступную среду или оболочку. Проверяйте недоверенные данные и не выводите бинарные данные прямо в терминал.

Python

from PIL import Image
from io import BytesIO
import base64
image = Image.open(BytesIO(base64.b64decode(value)))
out = BytesIO(); image.save(out, 'WEBP', quality=82)
result = base64.b64encode(out.getvalue()).decode('ascii')

JavaScript

const blob = new Blob([bytes], { type: mime });
const bitmap = await createImageBitmap(blob);
ctx.drawImage(bitmap, 0, 0, width, height);
const output = await new Promise(r => canvas.toBlob(r, 'image/webp', 0.82));
bitmap.close();

Shell

printf '%s' "$VALUE" | base64 --decode > input.png
magick input.png -resize '1920x1920>' -quality 82 output.webp
base64 --wrap=0 output.webp

Стандарты и официальные источники

Вопросы о сжатии Base64-изображений

Можно ли сжать сам Base64?

Общее сжатие создаёт другой бинарный формат. Для стандартного Base64 изображения оптимизируют байты и кодируют заново.

Можно вставить результат в img src?

Да. Raw — стандартный Base64, Data URL — обычное data:image/...;base64 значение.

Как получить 100 КБ?

Выберите Custom и 100 КБ. Поиск качества и размеров ограничен; не каждое изображение достигает цели.

Снижается ли качество?

Возможно. Изменение размера и качества JPEG/WebP — с потерями; PNG может не уменьшиться.

Почему Base64 больше на 33%?

Три байта становятся четырьмя символами. Точная формула: 4 × ceil(n / 3).

Изображение загружается?

Нет. Анализ, Canvas, предпросмотр, копирование и скачивание выполняются локально.

Gzip до или после Base64?

Для передачи при необходимости сжимайте внешний HTTP-ответ. Gzip нельзя использовать как Data URL без распаковки.