pngquant.org Open in urlscan Pro
2a01:488:66:1000:53a9:244:0:1  Public Scan

Submitted URL: http://pngquant.org/
Effective URL: https://pngquant.org/
Submission: On December 30 via api from US — Scanned from FR

Form analysis 0 forms found in the DOM

Text Content

PNGQUANT

pngquant is a command-line utility and a library for lossy compression of PNG
images.

The conversion reduces file sizes significantly (often as much as 70%) and
preserves full alpha transparency. Generated images are compatible with all web
browsers and operating systems.


FEATURES

 * High-quality palette generation using a combination of vector quantization
   algorithms.
 * Unique adaptive dithering algorithm that adds less noise to images than the
   standard Floyd-Steinberg.
 * Easy to integrate with shell scripts, GUIs and server-side software.
 * Fast mode for real-time processing/large numbers of images.

Original PNG: 75,628 bytes pngquant: 19,996 bytes (73% smaller)


DOWNLOAD

The latest stable version of pngquant CLI is 3.0.3 (old C releases, Rust crate).
The latest stable version of libimagequant is 4.x and the Rust library is
released directly to crates.io (changelog, feed).


GUI

 * ImageOptim — macOS GUI for pngquant and other tools
 * SuperPNG Photoshop plug-in — Mac and Windows. Comparison with "Save for Web"
 * Pngyu — macOS and Windows GUI with batch processing option
 * PNGoo — Windows GUI for batch conversion
 * ImageOptim API — image compression web service that automatically uses
   pngquant.


COMMAND-LINE

 * Binary for macOS (v3.0.3) — you can run brew install pngquant too.
 * Binary for Windows
 * Binary for Linux (v3.0.3)
 * Package for Debian
 * Various Linux packages, Snap
 * Latest source code (to build on other platforms)


SOURCE CODE

The latest version is written in Rust. There is also a previous version written
in C99. Both are available under the GPL or a commercial license. The project is
hosted on GitHub.

git clone --recursive https://github.com/kornelski/pngquant.git


AUTHORS

pngquant is developed by Kornel Lesiński and contributors. It has evolved from a
project by Greg Roelofs and Jef Poskanzer.

Please submit bug reports or feature requests on GitHub.


DONATE

Donations are welcome via PayPal. Thank you for your support!


MANUAL

 * batch conversion of multiple files: pngquant 256 *.png (recursive processing)
 * Unix-style stdin/stdout chaining: … | pngquant 16 | …
 * Running from PHP

To further reduce file size use oxipng or ImageOptim.


OPTIONS

See pngquant -h for full list of options.

--ext new.png

Set custom extension for output filename. By default -or8.png or -fs8.png is
used.

--quality min-max

Instructs pngquant to use the least amount of colors required to meet or exceed
the max quality. If conversion results in quality below the min quality the
image won't be saved (if outputting to stdout, 24-bit original will be output)
and pngquant will exit with status code 99.

min and max are numbers in range 0 (worst) to 100 (perfect), similar to JPEG.



pngquant --quality=65-80 image.png

--speed N, -sN

Speed/quality trade-off from 1 (brute-force) to 10 (fastest). The default is 3.
Speed 10 has 5% lower quality, but is 8 times faster than the default.

--version

Print version information to stdout.

-

Read image from stdin and send result to stdout.

--

Stops processing of arguments. This allows use of file names that start with -.
If you're using pngquant in a script, it's advisable to put this before file
names:

pngquant $OPTIONS -- "$FILE"


ALGORITHM

pngquant uses modified version of Median Cut quantization algorithm and
additional techniques to mitigate deficiencies of Median Cut.

Instead of splitting boxes with largest volume or number of colors, boxes are
selected to minimize variance from their median value.

Histogram is built with addition of a basic perception model, which gives less
weight to noisy areas of the image.

To improve color further, histogram is adjusted in a process similar to gradient
descent (Median Cut is repeated many times with more weight on poorly
represented colors).

Finally, colors are corrected using Voronoi iteration (K-means), which
guarantees locally optimal palette.

pngquant works in premultiplied alpha color space to give less weight to
transparent colors.

When remapping, error diffusion is applied only to areas where several
neighboring pixels quantize to the same value, and which are not edges. This
avoids adding noise to areas which have high visual quality without dithering.


SEE ALSO

 * libimagequant — embeddable quantization library that powers pngquant
 * Overview of PNG optimisation tools
 * Posterizer — image quantizer for millions of colors
 * RGBA image comparison tool