DEV Community

Mack
Mack

Posted on

Why I Built a Privacy-First Image Converter (No Uploads, No Backend)

Every image converter I tried wanted me to upload my files to some random server. Screenshots with sensitive data, personal photos, client mockups — all shipped off to who-knows-where so a server could do what my browser is perfectly capable of doing locally.

So I built PixConvert — a free, open-source image converter that runs entirely in your browser. No uploads. No backend. No tracking.

The Problem With Online Converters

Most image conversion tools follow the same pattern:

  1. Upload your file to their server
  2. Server converts it
  3. You download the result
  4. Your original image now lives on someone else's infrastructure

Even if they promise to delete it, you're trusting a stranger with your data. And for what? Converting a PNG to JPG is not a hard computation. Your browser can do it natively.

How PixConvert Works (It's Embarrassingly Simple)

The entire conversion pipeline uses the Canvas API — a built-in browser feature that's been supported everywhere for over a decade.

Here's the core idea in about 10 lines:

function convertImage(file, outputFormat, quality) {
  return new Promise((resolve) => {
    const img = new Image();
    img.onload = () => {
      const canvas = document.createElement("canvas");
      canvas.width = img.width;
      canvas.height = img.height;
      canvas.getContext("2d").drawImage(img, 0, 0);
      canvas.toBlob(resolve, `image/${outputFormat}`, quality);
    };
    img.src = URL.createObjectURL(file);
  });
}
Enter fullscreen mode Exit fullscreen mode

That's it. Load the image onto a canvas, export it in the target format. The browser does all the heavy lifting. No libraries. No WebAssembly. No dependencies.

What It Supports

  • Input: PNG, JPG, WEBP, GIF, BMP
  • Output: PNG, JPG, WEBP, GIF, BMP, ICO
  • Batch conversion: Drop up to 10 images at once (free tier)
  • Resize: Optional width/height controls
  • Quality slider: Fine-tune JPG/WEBP compression
  • ZIP download: Grab all converted files in one click

Why Zero Dependencies Matters

PixConvert has no node_modules. No build step. No framework. It's vanilla HTML, CSS, and JavaScript.

This means:

  • No supply chain risk — there's nothing to compromise
  • It loads instantly — no 2MB bundle to download
  • It works forever — no dependencies to break or go unmaintained
  • Anyone can audit it — the source is short and readable

In an era where a left-pad incident can break half the internet, I think there's value in software that stands on its own.

Privacy by Architecture, Not by Promise

PixConvert doesn't have a privacy policy because it doesn't need one. There's no server to receive your data. No analytics. No cookies. No telemetry.

Open DevTools, check the Network tab — you'll see zero requests after the page loads. Your images never leave your device. That's not a policy; it's a technical fact.

Try It / Contribute

If you're tired of uploading your images to strangers, give it a shot. And if you build something similar — where the browser does the work and the server stays out of it — I'd love to hear about it.


What other tools do you wish ran client-side instead of requiring uploads? Drop your ideas in the comments.

Top comments (0)