Join the discussion
Write your take first — we'll ask for email only when you're ready to publish.
- Hacker News
- I've created a similar tool, for compressing and converting, but it can handle not just images but animations as well.by skrellm
- Hi, I think your idea is interesting and I was wondering if you would consider adding a way to edit the photo in terms of things like brightness, exposure, contrast or filters. Additionally, do you think there would be friction between ppl switching to another website for their files espeically when a lot of people (myself included) can do it directly on their computer through apps like preview?by TM_0624789
- Built the same thing with a different tradeoff — Canvas API instead of WASM — so a couple of notes from that side.
The privacy claim is stronger than you're stating it. Canvas re-encoding doesn't just avoid the upload, it strips EXIF as a side effect: GPS coordinates, device model, timestamps all disappear because you're drawing pixels to a new surface and calling toBlob(). For photos straight off a phone that's often the actual risk, not the upload. Worth saying explicitly — users don't know their images carry location data.
Two things Canvas gets wrong that WASM probably saves you from, and I'd be curious which side you landed on:
- Canvas is sRGB by default. An image tagged Display P3 gets silently converted on draw, so saturated colors shift. You need colorSpace: 'display-p3' on getContext to preserve it, and support isn't universal. - toBlob() quality is browser-dependent for JPEG. Quality 0.8 in Chrome and Safari are not the same file. Fine for "make it smaller", not fine if someone is matching a target size.
For HEIC I ended up with a split: Safari decodes it natively through the OS at zero library cost, and Chrome/Firefox lazy-load a WASM libheif build only after a HEIC file is actually detected. Meant the other 95% of visits never download the decoder. If you're already fully WASM you may not care, but the conditional load was worth the complexity for us.
by popovychjob