Compress image to 50KB
Give it a ceiling, not a quality number. The encoder quality is binary-searched and the image is downscaled when quality alone cannot get there, and the size you see is the size you download.
PNG is not offered here: it is lossless, so there is no quality knob to search.
Keeping resolution can make small targets unreachable on large photos — it will say so rather than guess.
createImageBitmap in this tab, drawn onto a canvas, and re-encoded with canvas.toBlob once per search step — all on your own CPU. The download link points at a blob: URL in the same tab. No server, no Pages Function, no model download.50 KB is the point where quality alone stops being enough. A phone photo squeezed into 51,200 bytes at its original pixel count lands around JPEG quality 0.11, which is a wall of blocking artifacts — so this page searches two dimensions at once. It bisects the encoder quality parameter at full resolution, and if the best it can do there is below a comfort threshold it steps down a resolution rung and bisects again, repeating up to four times. On the reference photo that means 675x450 at quality 0.72 rather than 1500x1000 at quality 0.11: a quarter of the pixels, but a picture rather than a mosaic. Everything happens in this tab, and the size in the result strip is the encoded file's real byte length.
Key facts about Compress image to 50KB
| What 50 KB means here | 51,200 bytes, checked against the encoded blob's byte length before the download link appears |
|---|---|
| Measured example | a 1500x1000 noisy photo of 1.29 MB lands at 50,873 bytes as JPEG — quality 0.72 at 675x450 |
| Same photo as WebP | 50,462 bytes at quality 0.64, also at 675x450 — the two encoders converge at this ceiling |
| Why quality alone fails here | holding 1500x1000 forces quality to about 0.11, which puts visible 8x8 blocking on every flat area |
| Rungs typically used | two to three of the thirteen, i.e. 45-67% of the original longest side |
| Search cost | 45-55 canvas encodes per image at this ceiling, against 11 when one rung is enough |
| Encode time | about 200 ms for the JPEG search and 1.5 s for the WebP search on a desktop browser |
| Keep-resolution mode | available, and at 50 KB it is the mode most likely to produce a visibly damaged file — the page says so rather than hiding it |
| Transparency | composited onto white before encoding; a logo with a transparent background comes out on a white card |
| Batch | 20 images per run, searched one at a time so a phone does not run out of memory |
| Already under 50 KB | returned untouched when the format already matches, so a 30 KB JPEG is not re-encoded for nothing |
| Format restriction | JPEG and WebP only — PNG is lossless and has no quality parameter to search |
What happens to your file
Nothing leaves the browser. The file is read as a blob in this tab, decoded by createImageBitmap, drawn to a canvas element, and re-encoded by canvas.toBlob once for each of the 45-55 search steps — all of it on your own CPU, in the same tab you are reading this in. This page makes no network request after the page itself has loaded: no upload endpoint, no Cloudflare Pages Function, no WebAssembly model pulled from a CDN. The finished file exists as a blob: URL in page memory and is discarded when you close or reload the tab, so there is no copy for anyone to delete later.
About this tool
- 1
Leave the target on 50 KB
That is what this page defaults to. Other presets are there because the search is the same for any ceiling, but every number quoted on this page was measured at 50 KB.
- 2
Choose the output format
JPEG for maximum compatibility with upload forms. WebP when the destination accepts it — at 50 KB the two land within a few hundred bytes of each other on photographs, so compatibility usually decides it.
- 3
Leave Downscale too switched on
At this ceiling it is what separates a usable image from a blocky one. Switch to Keep resolution only when the destination validates pixel dimensions.
- 4
Add your images
Drop or browse for up to 20. HEIC files from an iPhone are converted to JPEG before the search starts, with a progress indicator while that happens.
- 5
Run the search
The progress bar counts through the images. Each finished row shows the achieved bytes in green when it is under 50 KB and amber when it is not.
- 6
Check the settings the search chose
For a single image the stats strip reports the quality figure and the output pixel dimensions. If the dimensions dropped further than you wanted, re-run with Keep resolution and compare.
| Accepted input | JPG, PNG, WebP, BMP, GIF, AVIF, TIFF, plus HEIC/HEIF converted to JPEG on the way in |
|---|---|
| Output formats | JPEG or WebP |
| Per-file ceiling | 50 MB; the practical cap is the canvas, around 16,384 px a side in Chromium and lower on iOS Safari |
| Batch size | 20 files per run |
| Target presets | 20, 50, 100, 200 and 500 KB, plus a 5-20,000 KB custom field |
| Quality search range | 0.05 to 0.95, bisected in 10 steps per resolution rung |
| Comfort threshold | the downscale ladder stops once quality reaches 0.55, after four extra rungs, or at a 400 px longest side |
| Browser support | any browser with canvas.toBlob; WebP output needs Chrome, Edge, Firefox or Safari 14+ |
| Account or install | none — no signup, no watermark, no daily quota |
- 50 KB is a common ceiling on government and university application portals — they usually also cap the pixel dimensions, so read the form before switching off the downscale ladder.
- If the result comes back at 49 KB with quality 0.9, the source was easy; if it comes back at 49 KB with quality 0.35, you are near the limit of what 50 KB can hold for that picture.
- Cropping tightly to the subject is worth more than any setting here — half the frame removed is half the bytes before the encoder even starts.
- Photographs of grass, gravel, fabric or crowds are the expensive cases; a portrait against a plain wall will reach 50 KB at much higher quality.
- Run the same image at 50 KB and at 100 KB and compare the two quality figures: it tells you exactly what the extra 50 KB is buying you.
- A scanned document usually looks better at 50 KB as a downscaled grayscale-ish JPEG than as a full-size one — let the ladder do its work rather than locking resolution.
- Two-dimensional search over quality and resolution
- Quality comfort threshold so small targets stay legible
- Achieved byte count measured from the finished blob
- JPEG and WebP with an encoder MIME-type check
- 20-file batch, each with its own settings
- Untouched passthrough when the file already fits
- Application and examination portals that cap each uploaded photo or document scan at 50 KB.
- Product thumbnails on a marketplace listing where every row loads dozens of images.
- Email signatures and newsletter assets that must stay tiny across thousands of sends.
- Forum and wiki uploads with a strict per-attachment ceiling.
- Cutting an image set down for a slow or metered connection.
- Getting a batch of screenshots small enough to paste into a ticket system with an attachment limit.
Related tools
View allWorks well with this6
More in Images12
Updated