DEV Community

Akshay
Akshay

Posted on

I Built a Free Privacy-Focused Bulk Image Compressor That Runs Entirely in Your Browser

I created a polished Medium-style version already. Here’s a DEV.to optimized version — more developer-focused, slightly more technical, cleaner formatting, and written in a style that performs well on DEV Community.


Compress massive images without uploading anything to a server

Every developer eventually runs into this problem.

You have:

  • Huge product photos
  • Design assets from Figma
  • DSLR images
  • Screenshots for documentation
  • Client uploads that are absurdly large

And suddenly:

  • Your CMS rejects uploads
  • Your website becomes slow
  • Your Git repository balloons in size
  • Your email attachment limit explodes

So you search for an “online image compressor”.

Then comes the part nobody talks about:

You’re uploading potentially sensitive files to random third-party servers.

I didn’t love that idea.

So I built ImageSquash Pro — a completely client-side bulk image compressor that works directly inside the browser.

No uploads.
No backend.
No analytics.
No tracking.

Just drag, drop, compress, and download.


🔥 Why I Built It

A client once sent me around 20 RAW product images.

The folder size?

~1.2 GB

They needed optimized versions for the web immediately.

Most online tools failed because they:

  • had file limits
  • required payment for batch processing
  • froze on large images
  • destroyed image quality
  • uploaded everything to their servers

So instead of fighting existing tools, I decided to build one optimized for:

  • privacy
  • speed
  • large batch processing
  • simplicity

That became ImageSquash Pro.


⚡ What Makes It Different

Most image compressors work like this:

Upload → Server Processing → Download
Enter fullscreen mode Exit fullscreen mode

ImageSquash works like this:

Browser → Local Processing → Download
Enter fullscreen mode Exit fullscreen mode

Everything happens directly on your machine using browser APIs.

That means:

✅ Your files never leave your computer
✅ No internet required after initial page load
✅ Compression happens locally on your CPU
✅ No waiting for uploads
✅ No privacy concerns

You can literally disconnect your WiFi and the app still works.


🖼️ Features

📦 Bulk Compression

Compress dozens of images at once.

No annoying “one file at a time” workflow.


🔒 Fully Private

No backend server.

No cloud processing.

No telemetry.

No analytics.

No hidden uploads.


🎛️ Adjustable Compression

Choose:

  • WebP
  • JPEG
  • PNG

And customize:

  • quality
  • dimensions
  • compression preset

📊 Compression Statistics

See:

  • original size
  • compressed size
  • savings percentage
  • total reduction

In real time.


📁 ZIP Export

Download the entire batch as a ZIP file.

One click.


⌨️ Keyboard Shortcuts

Ctrl + Enter → Compress All
Ctrl + D → Download ZIP
Enter fullscreen mode Exit fullscreen mode

🛠️ Tech Stack

The project is intentionally simple.

No framework.

No build process.

No unnecessary dependencies.

Just browser APIs.

Built With

  • HTML5 Canvas API
  • FileReader API
  • JSZip
  • Vanilla JavaScript

🧠 Core Compression Logic

Here’s the simplified version:

const canvas = document.createElement("canvas");

canvas.width = targetWidth;
canvas.height = targetHeight;

const ctx = canvas.getContext("2d");

ctx.drawImage(img, 0, 0, targetWidth, targetHeight);

canvas.toBlob(
  (blob) => {
    // compressed image blob
  },
  "image/webp",
  0.35
);
Enter fullscreen mode Exit fullscreen mode

The browser handles resizing and re-encoding completely locally.

No server involved.


📉 Real Compression Results

One test batch:

Original Compressed
1.62 GB 4.21 MB

Single images around 80MB often compress down to roughly 200KB depending on settings.

Perfect for:

  • websites
  • portfolios
  • blogs
  • ecommerce
  • documentation
  • web apps

🔐 Why Privacy Matters

A surprising number of image tools upload files silently.

That’s risky when working with:

  • client assets
  • confidential documents
  • medical files
  • legal paperwork
  • internal company screenshots

I wanted a tool where privacy wasn’t just a policy.

I wanted privacy enforced by architecture.

With ImageSquash:

The safest upload is the one that never happens.


🚀 Live Demo

https://tutorialsandroid.github.io/image-squash-pro/
Enter fullscreen mode Exit fullscreen mode

💻 GitHub Repository

https://github.com/TutorialsAndroid/image-squash-pro
Enter fullscreen mode Exit fullscreen mode

📌 Future Improvements

Things I’d love to add:

  • AVIF support
  • HEIC support
  • Web Workers for background compression
  • Drag-to-reorder batches
  • GPU acceleration experiments
  • Folder upload support

🤝 Open Source

Contributions are welcome.

If you have ideas, optimizations, or feature suggestions, feel free to open an issue or submit a PR.


Final Thoughts

I originally built this as a utility for myself.

But it became something much more useful:

A fast, lightweight, privacy-focused tool that solves a real problem without forcing users to trust a random server.

And honestly, I think more web apps should work this way.

Top comments (0)