Pick the cap your form demands. Every file is compressed in your browser — nothing is uploaded, nothing is watermarked, and there is no signup.
Most compressors ask you to guess a quality setting and check the result. This one works backwards: you give it a number in kilobytes, and it searches for the highest quality that still fits under that number. If quality alone cannot get there, it steps the resolution down until the file fits.
Upload forms reject on one dimension only: bytes. A quality slider gives you no idea where you will land, so people either over-compress and get a blurry result, or under-compress and get rejected. Setting the target as a number turns it into a constraint the encoder can solve, and the result lands just under the cap instead of far below it.
There is no upload endpoint behind this page. The image is decoded, redrawn and re-encoded by your own browser using the Canvas API. Close the tab and no copy of the file exists anywhere else — which matters when the file is a passport scan or an unreleased product photo.
No fixed limit. Very large photos are decoded at full resolution and then scaled; a 40MB phone photo may take a second or two longer than a screenshot.
Once the page is loaded, yes. Compression uses only browser APIs, so you can go offline before dropping the file.
PNG transparency is flattened to white for JPG output, because most upload portals expect a solid background. Choose WebP if you need to keep the alpha channel.
The encoder binary-searches quality in six passes per scale step, so the output lands within a few percent below your target rather than tens of percent below it.