Why PNG files are heavy in the first place
PNG is lossless: every pixel is stored exactly, and the only saving comes from a general-purpose compressor similar to ZIP. A typical PNG from a screenshot tool or design app is stored as truecolour with an alpha channel, which means 4 bytes per pixel before compression. A 1920×1080 screenshot is about 8 MB of raw pixel data, and even after compression it often lands between 1 and 3 MB.
Most of that information is unused. A screenshot of a web page might contain a few hundred distinct colours. A logo might have a dozen, plus the anti-aliased shades along its edges. Storing each pixel as a full 32-bit value is overkill for that kind of image, and that is the gap this tool exploits.
How palette quantization works
Instead of storing a colour for each pixel, an indexed PNG keeps a palette of up to 256 colours and stores each pixel as a single byte pointing into it. The work is in choosing the palette. The tool repeatedly splits the image's colours into groups along the direction where they differ most, until it has as many groups as the level you picked, and then uses the average of each group as a palette entry. Every pixel is then mapped to its nearest entry.
Transparency is part of the same process: each palette entry carries its own alpha value, so a soft shadow or anti-aliased edge over a transparent background survives as several semi-transparent palette colours rather than a hard cut-out.
The three buttons set the palette size:
- High · 256: the most colours a palette PNG can hold. Icons, logos, UI screenshots and diagrams typically look identical to the original.
- Medium · 128: still clean on flat graphics and illustrations with limited colour sets. Worth trying for interface screenshots.
- Low · 64: for simple artwork such as charts, line drawings and icons with few colours. Subtle gradients start to show steps.
The image is then written out with PNG's standard compression and keeps its original filename.
Images that suit it, and images that do not
Quantization is at its best on content that was created digitally:
- App and website screenshots, especially ones with large flat areas.
- Logos, icons and badges with transparency.
- Charts, diagrams, maps and UI mock-ups.
- Pixel art, which often survives even the Low setting untouched.
It struggles with smooth gradients and photographs. The tool maps each pixel to its closest palette colour without dithering, so a sky or a soft vignette that needs thousands of shades turns into visible bands. For photos, a lossy format does a better job: run them through PNG to JPG if no transparency is needed, or keep transparency with PNG to WebP.
Checking the result
Each file row shows the original and new size side by side. If quantization cannot make a file smaller, the tool hands back the original untouched and the row says the original was kept. This happens with PNGs that were already indexed or heavily optimised by another tool, and with images packed with fine noise.
To judge quality, open the original and the result next to each other in compare images and drag the slider across gradients and edges. If you see banding, step up one level; if Medium looks identical to High, take the smaller file.
Practical notes
- Text and metadata chunks from the original, such as the creating software or embedded comments, are not carried over, because the image is decoded and written afresh. A file returned unchanged because it could not be made smaller keeps them.
- Only PNG input is accepted. Files up to 50 MB each work, but very large images take longer: every pixel has to be analysed to build the palette, so a 6000×4000 PNG can take noticeably longer than a screenshot.
- Processing happens in a background worker in your browser where supported. Nothing is uploaded, and a batch can be downloaded as a single ZIP.
- Shrinking the dimensions first often matters more than the palette. A 2× retina screenshot resized to its display size has a quarter of the pixels before quantization even starts.