TinySquish

About TinySquish

Who makes it

TinySquish is built and maintained by Nur Adli. It started from a simple need: compress images quickly without handing them to someone else's server.

How it works

Everything runs as plain JavaScript in your browser. JPEG and WebP are encoded with the browser's own encoders through the Canvas API. PNG uses UPNG.js for color quantization and pako for DEFLATE compression. A service worker caches the app so it keeps working offline.

Limitations

  • Three formats. TinySquish reads and writes PNG, JPEG and WebP. It doesn't produce AVIF or JPEG XL, and animated images aren't supported.
  • 20 images per batch. Clear the list to start the next batch; there is no daily limit.
  • Your device does the work. Very large images (tens of megapixels) need a lot of memory and may fail on older phones.
  • Metadata isn't copied. Re-encoded files drop EXIF data such as camera details and GPS location, which is usually what you want when sharing.

Open source

The full source code, tests and the benchmark script are on GitHub under the MIT license. Third-party components keep their own licenses (pako: MIT and Zlib, UPNG.js: MIT, DM Sans font: SIL Open Font License).

Contact

Found a bug or want a feature? Open an issue on GitHub Issues.