DEV Community

Cover image for Why I built MediaShed
Sriharsha Gangisetty
Sriharsha Gangisetty

Posted on • Originally published at mediashed.world

Why I built MediaShed

Me and my team deal with images a lot. Compress a bunch of photos for our website. Convert PNGs someone sent into WebPs. Cut out backgrounds for product shots. Turn a HEIC into something a CMS will actually accept. Convert a GIF with transparent background to animated WebP.

Every one of those is a different tool. TinyPNG does compression but won't touch animated WebPs. Squoosh is nice but one file at a time. remove.bg slaps a watermark on unless you pay. CloudConvert does batch but uploads everything. None of them do AVIF.

So I'm constantly bouncing between three or four sites for what should be one workflow. They all want me to upload my files. Some want me to sign up or pay for basic stuff. Almost none of them handle animations well.

At some point I figured it'd be faster to just build the thing myself than keep juggling all these sites.

What MediaShed does

Three tools, one site:

  • Image compressor — JPEG, PNG, WebP, AVIF, animated GIF, animated WebP. Target a file size, strip metadata, compare before and after.
  • Image format converter — Convert between formats with quality and resize controls.
  • Background remover — Runs AI models right in the browser. Multiple models to pick from depending on what you need.

Everything runs in your browser. Your files never leave your device. No sign-up, no watermark, no file limit.

Why the browser?

I already use libvips for image processing in a Go media service I maintain. When I found wasm-vips which is libvips compiled to WebAssembly, the idea clicked.

No API keys. No server costs. No cold starts. The tool works offline after the first load.

It's not perfect

It works best on desktop. Phones have tighter memory limits and browsers on iOS need specific server headers just to run the engine. It's getting better but it's not fully there yet on mobile.

The background remover models aren't perfect either. The fast one handles simple cutouts well but struggles with fine detail. The larger models do better with hair and edges but you'll still sometimes need to clean up the result. They're running in your browser, not on a GPU cluster, there are tradeoffs.

What's next

I want to get mobile working better, add smarter quality detection for animated images, and probably build a video tool at some point. I'm also looking into fine-tuning my own background removal models, the off-the-shelf ones are good but I think I can do better for specific use cases.

If you're tired of bouncing between five different image sites, try it out: mediashed.world. Everything runs in your browser. Nothing gets uploaded.

Top comments (0)