Skip to content

Comparison

An honest comparison with the tools people usually reach for. No benchmark numbers are quoted here: v0.1.0 ships no benchmark suite, and any file-size percentage would depend on the test image. The right check is to run the shared test vectors yourself — they are the same inputs and bounds in every language.

dusimagez Squoosh (web) Sharp / Pillow / ImageMagick TinyPNG (online)
Offline (no upload) yes yes (in-browser) yes no — images are uploaded
Languages Rust, JS, Python, Go, PHP, Kotlin, Swift JS (browser) one per library API clients
Compress to an exact target size yes (quality search + downscale, or honest failure) no (manual quality slider) no (you write the loop) no
Before/after report yes (saved_bytes, saved_percent, quality_used, resized) file size shown in UI you compute it size shown in UI
Presets (Web / Social / Print / Archive) yes no no no
Batch with per-item errors yes (bulk_compress) one file at a time you write the loop API, per-file
PNG palette quantise yes yes yes (with options) yes
Subsampling / progressive / effort control yes partial yes no
Formats in JPEG, PNG, WebP, GIF, BMP, TIFF, AVIF broad broad JPEG, PNG, WebP
HEIC no (v0.1.0) yes (browser decode) depends on build yes
  • Use dusimagez when compression is part of your program — a server, a CLI pipeline, a mobile app, or a build step — and you want the same behaviour in every language, a target byte budget, and a report you can log or show.
  • Use Squoosh when you have one image and want to eyeball the result in a browser. It is the best manual tool; it is not a library.
  • Use Sharp / Pillow / ImageMagick when you already depend on one of them and only need basic quality settings. They are general image libraries; dusimagez is a compressor with a target-size search, presets and a report built in.
  • Use TinyPNG when you are fine uploading images to a third-party service and want zero setup. Do not use it for private images — they leave your machine.
  • No HEIC; AVIF encode is lossy-only / 8-bit; GIF output is first-frame only — see Formats.
  • No resize/crop/convert/watermark beyond what compression needs. For the full toolkit (resize, crop, convert, watermark, annotate, palette, collage, pixelate), see the sibling project dusrelimage.
  • No streaming: the whole image lives in memory, guarded by max_pixels / max_dimension.