DEV Community

member_250fe3f1
member_250fe3f1

Posted on

Shrinkray: a free, 100% in-browser image compressor (no uploads, open source)

TL;DR — I built Shrinkray: a free, open-source image compressor & converter that runs **100% in your browser. No uploads, no servers, no tracking. Your images never leave your device.

The problem

Most "free" online image compressors upload your photos to a server you don't control. For screenshots, IDs, receipts, or product shots, that's a privacy risk you don't need to take.

Shrinkray

Shrinkray does everything client-side using the Canvas API. Nothing is ever uploaded.

Features

  • 🔒 100% local — files never leave your browser
  • 🖼️ Convert between WebP / JPEG / PNG / AVIF
  • 🎚️ Quality slider + optional resize
  • 📦 Batch mode — drop a whole folder, download all as a zip
  • 📋 Paste from clipboard
  • 📊 Per-image and total savings %
  • ⚡ Installable PWA, works offline
  • 🆓 MIT licensed, zero build step (vanilla JS)

In my tests it gets ~85–90% size reduction on photo-like PNGs by converting to WebP, with no visible quality loss.

How it works

Drag images in → pick a format and quality → Shrinkray re-encodes each one with canvas.toBlob() and shows you exactly how much you saved. Everything happens on the main thread in plain JavaScript — no frameworks, no dependencies beyond JSZip (CDN) for the "download all" zip.

Try it

It's fully open source — issues, stars, and PRs welcome. Would love feedback on which formats/options you'd want next (thinking: drag-to-reorder, EXIF stripping toggle, and an AVIF quality preset).

Built with vanilla JS and a lot of canvas.toBlob(). 🦈

Top comments (1)

Collapse
 
alexshev profile image
Alex Shev

Local-first is a strong selling point for image tools. People often compress IDs, receipts, product photos, or private screenshots without thinking about where the file goes. Making the privacy boundary simple - nothing leaves the browser - is the kind of UX copy that actually matters.