Most online image compressors upload your file to a server, process it there, and send the result back. That works, but it means waiting on a round trip and trusting a third party with your image.
WebPMagic does the conversion in the browser instead. When you add a file, JavaScript decodes it — using createImageBitmap() where available, so EXIF rotation is honoured — and draws it onto an off-screen <canvas> at your chosen size. Redrawing also discards the EXIF blocks and embedded colour profiles that bloat camera files. The canvas is then handed to canvas.toBlob(), which invokes the browser's built-in encoder for the format you picked.
Because the encoder is the browser's, output can differ very slightly between Chrome, Firefox and Safari on the same settings. The difference is normally a few percent in file size and invisible on screen — and it's the same encoder those browsers use to display the result, so nothing is lost in translation.
Two trade-offs worth knowing
Memory, not bandwidth, is the ceiling. Everything runs locally, so the practical limit is your device's RAM rather than a server quota. A modern laptop handles a 50 MB photo without complaint; an older phone may pause on a print-resolution file. Scale it down first if that happens.
Re-encoding can backfire. Converting an already-compressed file at high quality occasionally produces a larger result, because the encoder faithfully preserves the artifacts already baked in. The savings column tells you the moment that happens, and dropping quality to 75–80 almost always fixes it.