Инструкция

Как уменьшить размер PNG без потери качества: полное руководство

PNG слишком тяжёлый, тормозит сайт и не лезет в письмо? Хорошая новость: чаще всего его можно ужать на 60–70% так, что разницу не заметит ни один глаз. Разбираем по шагам — что делать прямо сейчас, какими инструментами и до каких цифр реально дойти.

Макет веб-страницы и смартфон на столе — лёгкие PNG ускоряют загрузку сайтов
Тяжёлые PNG — одна из главных причин медленных сайтов. И одна из самых легко решаемых. Фото: Pexels

Почему PNG бывает таким тяжёлым

Чтобы правильно сжимать, нужно понять причину. PNG использует сжатие без потерь: он обязан сохранить каждый пиксель в точности таким, каким его нарисовали. Это его суперсила — идеально резкие края, текст и логотипы — и одновременно его слабость.

Сжатие без потерь хорошо работает там, где много повторов: ровные заливки, плоские иконки, скриншоты интерфейса. А вот фотография или плавный градиент — это миллионы чуть-чуть разных оттенков, где «схлопывать» практически нечего. Поэтому фото в PNG может весить в 5–10 раз больше, чем то же фото в JPG.

Есть и три типичных «утяжелителя», которые легко устранить:

  • Избыточная битность. Иконка из десятка цветов часто сохраняется как полноцветный PNG-24/32 (16,7 млн цветов), хотя ей хватило бы палитры из 256.
  • Метаданные. Редакторы зашивают внутрь файла дату, имя ПО, цветовой ICC-профиль, иногда XMP и превью. Для скриншота это лишние байты.
  • Слишком большое разрешение. Картинка 4000 px шириной, которая на сайте отображается в 800 px, несёт впятеро больше данных, чем нужно.

Коротко

PNG тяжёлый не потому что «плохой», а потому что честный — он хранит всё до последнего пикселя. Наша задача — убрать из него то, что глазу не нужно: лишние цвета, служебные данные и избыточный размер.

Два пути: lossless-оптимизация vs квантизация

Все способы ужать PNG делятся на два лагеря. Понять разницу — это половина дела, потому что от выбора зависит, насколько сильно похудеет файл.

Путь 1. Оптимизация без потерь (lossless)

Инструмент не меняет ни одного пикселя. Он лишь перебирает фильтры строк и заново упаковывает данные более эффективным алгоритмом DEFLATE/Zopfli, а заодно выкидывает лишние служебные чанки. Результат пиксель-в-пиксель идентичен оригиналу. Экономия скромнее — обычно 10–25%, — но абсолютно безопасна. Это утилиты optipng, oxipng и zopflipng.

Путь 2. Квантизация палитры (с потерями)

Инструмент сокращает число цветов до палитры (максимум 256) и превращает PNG-24/32 в компактный PNG-8. Это формально «с потерями», но умные алгоритмы подбирают палитру и добавляют дизеринг так, что на типичной графике разницу не видно. Зато экономия огромная — 60–70%. Это pngquant и онлайн-сервисы вроде TinyPNG.

Главный приём профи: сначала квантизация (минус 60–70%), затем lossless поверх неё (ещё минус несколько процентов). Так складываются оба выигрыша.
60–70%экономия от квантизации (pngquant/TinyPNG)
10–25%экономия от lossless (optipng/zopfli)
256цветов в палитре PNG-8

Самый быстрый способ: онлайн, за 30 секунд

Если не хочется ставить программы и разбираться с командной строкой — всё делается в браузере. Самый эффективный приём для веба: не просто сжать PNG, а сразу пересохранить его в WebP. WebP без потерь примерно на 26% меньше PNG и при этом полностью сохраняет прозрачность.

1

Загрузите PNG

Перетащите файл (или сразу несколько) в онлайн-конвертер PNG → WebP. Ничего устанавливать не нужно, файлы обрабатываются прямо в браузере.

2

Получите WebP

Конвертер пересохранит изображение в WebP, сохранив альфа-канал. Это даёт меньший размер при том же визуальном качестве.

3

Скачайте результат

Готовый файл подключайте на сайт. Для старых браузеров можно оставить PNG-запасной вариант через тег <picture>.

Нужна именно прозрачность и максимальная совместимость со всем подряд? Тогда оставайтесь в PNG, но прогоните файл через квантизатор. А если прозрачность не важна и это фотография — посмотрите в сторону конвертера PNG → JPG: он ужмёт снимок в разы сильнее.

Сожмите свой PNG прямо сейчас

Бесплатный конвертер FormatZ пересохранит PNG в лёгкий WebP за пару секунд — в браузере, без установки и регистрации. Прозрачность сохраняется.

Сжать PNG в WebP
Рабочее место веб-дизайнера с двумя экранами — оптимизация изображений ускоряет загрузку
Один прогон через оптимизатор экономит больше трафика, чем недели ручной подгонки вёрстки. Фото: Pexels

Инструменты для профи: pngquant, optipng, oxipng

Если вы оптимизируете десятки файлов или хотите встроить сжатие в сборку проекта, удобнее командная строка. Вот рабочий набор и точная роль каждого.

pngquant — квантизация (главный выигрыш)

Самый результативный инструмент. Сокращает цвета до палитры и в среднем урезает файл примерно на 64% при высоком визуальном качестве. Флаг --quality задаёт допустимый коридор: если уложиться не удаётся, файл не пересохраняется.

# один файл, результат — image-fs8.png рядом с оригиналом
pngquant --quality=65-85 image.png

# перезаписать на месте все PNG в папке
pngquant --quality=65-85 --ext .png --force *.png

optipng / oxipng — добивка без потерь

Запускают после pngquant, чтобы выжать ещё несколько процентов абсолютно безопасно. optipng — классика; oxipng — его современная переписка на Rust: многопоточный, быстрее и часто сжимает плотнее. Флаг -strip заодно вычищает метаданные.

# optipng: максимальный уровень + удалить метаданные
optipng -o7 -strip all image.png

# oxipng: быстро, в несколько потоков, с чисткой
oxipng -o max --strip safe image.png

zopflipng — когда нужен самый маленький файл

Использует алгоритм Zopfli от Google: сжимает плотнее почти всех остальных (выигрывает примерно в 87% случаев), но работает заметно дольше. Идеален для финальной сборки, где время не критично, а каждый килобайт на счету.

zopflipng --iterations=60 image.png image-min.png

Совет: соберите конвейер

Цепочка «pngquant → oxipng» в одном скрипте даёт лучший баланс размера и качества. На пакете иконок и UI-графики это стабильно −70% к весу — без видимой деградации.

А что с метаданными?

Удаление служебных чанков (дата, имя ПО, XMP, иногда ICC-профиль) — отдельный маленький рычаг. Для обычного скриншота это экономит лишь пару килобайт, но если редактор зашил тяжёлый ICC-профиль или XMP-блок, можно срезать 5–15 КБ. Чистят метаданные те же optipng/oxipng (флаг -strip) или ImageMagick.

Осторожнее с цветом

Если в файле есть осмысленный ICC-профиль (например, для печати или широкого цветового охвата), полная чистка -strip all может сместить цвета на экранах с управлением цветом. Для веба это обычно безопасно; для печати используйте --strip safe или сохраняйте профиль.

PNG-8 против PNG-24: в чём разница

Когда говорят «перевести PNG в PNG-8», имеют в виду именно квантизацию. Разница между режимами — ключ к пониманию, почему файл худеет так сильно.

ПараметрPNG-8 (палитра)PNG-24 / 32 (truecolor)
Число цветовдо 256до 16,7 млн
Размер файлаМаленькийБольшой
ПрозрачностьДа (в т.ч. полупрозрачность*)Полная (альфа-канал)
Идеален дляИконки, логотипы, UI, плоская графикаФото, сложные градиенты
ПотериДа (квантизация)Нет

* Современные квантизаторы (pngquant, TinyPNG) умеют сохранять плавную полупрозрачность в PNG-8, а не только «вкл/выкл» прозрачность, как в старых редакторах.

Вывод простой: иконку, логотип или скриншот интерфейса смело гоните в PNG-8 — потерь вы не увидите, а файл усохнет в разы. А вот фотографию или картинку с тонкими градиентами в 256 цветов лучше не зажимать: появится «полосатость» (бэндинг). Для таких изображений правильнее перейти на WebP или JPG.

Скетчи интерфейса, карандаши и смартфон на столе дизайнера
Плоская графика и UI-элементы — идеальные кандидаты для PNG-8: 256 цветов им хватает с запасом. Фото: Pexels

Когда пора переходить на WebP или JPG

Иногда самый честный способ уменьшить PNG — это перестать использовать PNG. Не для всего, но для многих задач другой формат справится лучше.

  • WebP — для веба по умолчанию. Без потерь он примерно на 26% меньше PNG при идентичном качестве, поддерживает прозрачность и анимацию, и работает в 96%+ браузеров. Для логотипов, иконок и UI это почти всегда правильный выбор. Самый быстрый путь — конвертер PNG → WebP.
  • JPG — для фотографий без прозрачности. Снимок в PNG почти всегда избыточен. JPG ужмёт ту же фотографию в 5–10 раз сильнее. Минус один: прозрачность не поддерживается (прозрачные области станут белыми). Инструмент — конвертер PNG → JPG.
  • AVIF — на острие. Сжимает ещё примерно на 10% плотнее WebP, но поддержка чуть скромнее. Хороший вариант с PNG/WebP-фолбэком для самых тяжёлых изображений.
  • Оставить PNG. Если нужна абсолютная точность пикселей и совместимость со всем подряд (печать, e-mail, старый софт) — PNG, но обязательно прогнанный через оптимизатор.

Правило большого пальца

Нужна прозрачность и сайт → WebP. Фото без прозрачности → JPG. Резкая графика/логотип/печать → PNG (оптимизированный). Это покрывает 95% реальных случаев.

Чек-лист: ужать PNG за 5 минут

Короткий алгоритм, который работает почти всегда. Идите сверху вниз и остановитесь там, где результат вас устроил.

  • Это фото без прозрачности? → переведите в JPG (PNG → JPG) и закончите.
  • Это графика для веба? → пересохраните в WebP (PNG → WebP) — минус ~26% бесплатно.
  • Нужен именно PNG? → прогоните через квантизатор (pngquant / TinyPNG) — минус 60–70%.
  • Добейте без потерь. → optipng/oxipng с -strip — ещё минус несколько процентов и долой метаданные.
  • Проверьте разрешение. → если картинка крупнее, чем показывается, уменьшите её перед сжатием — это часто даёт больше, чем все оптимизаторы вместе.
  • Сравните глазами. → откройте оригинал и результат рядом. Не видите разницы? Значит, всё сделано правильно.

Хотите конвертировать пачкой или попробовать другие форматы? Полный список преобразований — на странице всех форматов FormatZ.

Лучшая оптимизация — та, которую не видно. Если файл стал вдвое легче, а картинка выглядит так же — вы выиграли.
Да. Lossless-оптимизаторы (optipng, oxipng, zopflipng) перепаковывают данные более эффективным алгоритмом и убирают лишние служебные данные — пиксели остаются ровно теми же, экономия обычно 10–25%. Если допустимо чуть-чуть пожертвовать цветом, квантизация палитры (pngquant, TinyPNG) даёт 60–70% при почти неотличимой на глаз картинке.
PNG использует сжатие без потерь, поэтому хранит каждый пиксель точно. Для фотографий и градиентов это даёт огромные файлы — там нечего «схлопывать». Размер также раздувают избыточная битность (24/32 бита вместо палитры), встроенные метаданные и ICC-профили, а ещё слишком большое разрешение.
pngquant — это квантизация с потерями: он сокращает число цветов до палитры (PNG-8), за счёт чего файл худеет на 60–70%. optipng — оптимизатор без потерь: он не трогает цвета, а лишь подбирает лучшие фильтры и сильнее сжимает поток DEFLATE, экономя ещё 10–15%. Их часто запускают по очереди: сначала pngquant, потом optipng.
Да. Квантизаторы вроде pngquant и TinyPNG сохраняют полупрозрачность (альфа-канал) в палитровом PNG. Lossless-оптимизаторы прозрачность не трогают вообще. При переходе на WebP альфа-канал тоже полностью поддерживается, в отличие от JPG, где прозрачности нет.
Для веба чаще всего стоит перейти на WebP: при том же качестве он примерно на 26% меньше PNG без потерь и поддерживается 96%+ браузеров. JPG выбирайте для фотографий без прозрачности — он ужмёт их в разы сильнее PNG. PNG оставляйте для логотипов, иконок, скриншотов и графики с резкими краями, где важна точность и прозрачность.