HeyDeer pngdeer

Smaller PNGs. Same picture.

8–12% smaller than even TinyPNG at the same quality. Free and open source.

Drop PNGs here

Nothing is uploaded. Images are compressed locally.

Original
pngdeer
Original Compressed by pngdeer
Research

The best open-source PNG compressor we've measured.

We ran pngdeer, TinyPNG and eight open-source quantizers on 180 PNGs: icons, UI screenshots, illustrations, photos, cut-outs and 3D renders. Every output was scored with SSIMULACRA2, a perceptual metric where 90 means indistinguishable at 1:1.

smaller than TinyPNG at the same quality (median image)
SSIMULACRA2 points above TinyPNG at TinyPNG's file size
images where pngdeer reaches TinyPNG's quality at all

Quality at TinyPNG's file size

Median SSIMULACRA2 points above or below TinyPNG when each tool's output is as big as TinyPNG's, and how many images each can bring up to TinyPNG's quality.

Held outThe parameters were tuned on 109 images. The other 71 were collected afterwards and never used for tuning; both sets agree.
Generous to the othersEach open-source tool gets its best of ten settings per image, picked after the fact. pngdeer's results are searched at compression time, as you get them here.
A second opinionScored with butteraugli instead, which the search never looks at, pngdeer's files are still 6–9% smaller than TinyPNG's at the same quality. TinyPNG ran through its API in October 2026.
How it works

Every palette size, judged like an eye would.

01

Searches the palette

pngdeer tries palette sizes from 2 to 256 colors, with and without dithering, and keeps the smallest file that still reaches the quality.

02

Scores what you'd see

Quality is SSIMULACRA2, measured in-process. Colors are matched in Oklab, and transparent pixels are judged over light and dark backgrounds.

03

Stays on your device

The compressor is WebAssembly, using every core. Your images never leave the browser, and the command line writes the same bytes.

Command line

Same bytes in your build.

The browser and the command line run the same Rust code, down to the math library, so a file compressed here and in your pipeline comes out identical.

Pass --target 85 for a fixed quality instead of the automatic one.

Try it on your own pictures.

Free, open source, and nothing to install.

Compress a PNG