Compress a photo to a JPEG under 50 KB
Drop a JPG, PNG, WebP or GIF and download a file that fits a 50 KB upload limit β or type any target size you need. Everything happens on your device, so a 5 MP photo is done in about a second.
Before / after
Waiting for a photoYour compressed JPEG shows up here with the exact file size before you download it.
Drop a photo to see the before and after sizes.
How it hits 50 KB
No upload, no queue, no watermark β the whole pipeline runs on your own device.
Drop a photo
JPG, PNG, WebP or GIF up to 25 MB. The file is decoded locally with the browser's image decoder β it is never sent anywhere.
Binary-search the quality
The long edge is capped at your max-edge value, then the JPEG quality is searched between 0.30 and 0.95 until the encoded blob is at or under your target β the highest quality that still fits wins.
Download the JPEG
The download button only unlocks when the measured blob size is at or below the target. Open the file any time and check its size in your file manager.
Built for form upload limits
Honest numbers, not guesses
Sizes are read from the real encoded blob (blob.size) before you download β the status line shows the exact quality and byte count used.
Transparency handled
JPEG has no alpha channel, so transparent PNGs are flattened onto white or black β your choice β and the status line tells you it happened.
Graceful when the target is tight
If 0.30 quality still misses, the tool automatically retries once at 70% of your max edge, then suggests a concrete pixel width instead of handing you a file that fails the upload.
Phone-friendly canvas
The photo is drawn straight into a canvas at the target dimensions and the decoded bitmap is released right after, which keeps iOS Safari from crashing on 12 MP photos.
Zero network requests
After the page loads there is no server call at all β no API route, no analytics on your image, nothing to leave your device.
Readable on any screen
The before/after card collapses to a single column on a 375px phone and splits on desktop, with 44px tap targets throughout.
FAQ
Is my photo uploaded anywhere?
No. The page uses your browser's own canvas encoder, so the file stays on your device. You can even turn off Wi-Fi after the page loads and it still works.
Why is my result slightly smaller than 50 KB?
The tool picks the highest JPEG quality that still fits the target, and JPEG sizes move in steps β so a finished 47β50 KB file is normal. Raise the target if you need a little more detail.
It says it could not reach the target. Now what?
Lower the max long edge (1200 px or 900 px often does it), pick a slightly larger target, or crop the photo so less detail has to be squeezed into the same bytes.
Can I compress a HEIC photo from my iPhone?
Not directly β browsers can't decode HEIC. In iOS Photos, tap Share β Copy Photo (or export as JPG) to get a JPEG, then drop that here.
What happens to animated GIFs?
Only the first frame is compressed, because the output is a still JPEG. The status line notes when that happened.
Is the JPEG good enough for a passport or visa form?
This tool controls file size, not the pixel or DPI rules some forms require. Set the max long edge to the size the form asks for (for example 600 px or 1200 px) as well as the KB target.