pngquant Installation

Compiling on Linux, *BSD and macOS using GNU/Make

(For instructions for Windows or Rust, see sections below.)

To get the code:

git clone --recursive

You will need libpng installed with development headers. On Linux install libpng-dev package. On macOS brew install libpng.

There's an optional ./configure step (see sections below). Run:


It will create pngquant executable in the current directory. If you'd like to install it system-wide:

sudo make install

By default it will be installed in /usr/local/bin. To install it in another directory run ./configure --prefix=dir && make.

pngquant uses GNU Makefile. To compile on FreeBSD you will need to use gmake.

Avoid Linux distros that ship with libpng 1.2. It is old and buggy. libpng 1.6 or later is required.

Custom static libpng

Extract libpng source code as a subdirectory of pngquant source directory. Build static libpng (./configure --enable-static && make), and then ./configure && make pngquant.

Compiling via Rust/Cargo (all platforms, including Windows)


Install Rust 1.36 or later:

On Windows also install msys-git and Visual C++ Build Tools with Windows 8 SDK enabled, and reboot.


Get the code:

# Unix version
git clone --recursive

# Windows version
git clone -b msvc --recursive

And then build:

cd pngquant
cargo build --release

This will create executable in target/release/pngquant(.exe).

You can build with additional features:

cargo build --release --features=sse,lcms2

The features are:

Compilation with OpenMP

cargo build --release --features=openmp # or
cargo build --release --features=openmp-static

On macOS you may need to install gcc (brew install gcc) and run export CC=gcc-9 first, because clang doesn't support OpenMP (yet).

Compilation with Cocoa image reader

macOS version can use Cocoa to read images. This adds support for color profiles and other image formats as input. However, it also disables support for preserving PNG metadata.

cargo build --release --features=cocoa

Compilation with Little CMS 2

Little CMS library is used by default.

It's linked dynamically if pkg-config is working (e.g. install liblcms2-dev). Otherwise uses static build as a fallback.

Set export LCMS2_STATIC=1 or build --features=lcms2-static to force static linking.

Compilation of libimagequant.a only

If you want to use pngquant's conversion algorithm without loading/saving PNG files, then you can run make or cargo build --release in the lib/ directory.

The library doesn't need libpng nor zlib.

Return to home page.