Compress images
Choose the file size you have to come in under and this tool finds the highest JPG quality that fits. Anything that cannot reach the target is marked in the results rather than quietly handed back. The photos are read and re-encoded in this browser tab — nothing is uploaded.
Image compressor
Choose a photo to begin.
What the upload screen is actually limiting
Read the limit off the page that rejected you before you start compressing. Most people arrive here from one of five places, and they do not all measure the same thing.
An email attachment is usually capped as a total across the whole message, not per file, and the sending and receiving services can have different caps — a message that leaves your outbox happily can still bounce at the other end. If you are attaching eight photos, divide the cap by eight and use that as your target rather than sizing each photo against the whole allowance.
A job application or a government form normally caps each file separately, and often states pixel dimensions alongside the kilobytes. Where both are given, the pixel dimensions come first: get the photo to the right size, then bring the file weight down. A form that wants a headshot at fixed dimensions is a different job — see passport photos for that.
A forum, board or marketplace avatar tends to have the tightest cap of the lot, sometimes well under 100KB, because the picture is only ever shown a few dozen pixels across. That is the one case where dropping the long edge hard costs you nothing at all.
Photos going onto a web page have no hard cap, which is exactly why they end up as the reason the page is slow. Here the useful target is the width the picture is actually displayed at, not a number somebody handed you. And when you are sending over mobile data, the size you send is the data you spend, on your side and on the other person's.
If compressing does not fix the rejection, the problem was probably never the file size — check the accepted formats and any pixel requirements. Guessing at an unstated limit by shrinking further and further wastes quality; the number is nearly always printed somewhere on the form.
Which target size to pick
Pick the option that matches the stated limit, or the one just below it. If the form says 200KB, that is the 100KB option — 300KB would come back over the line. Leave the long edge limit on its default 1600px to start with.
The figures below were measured with this tool on 2026-09-05 in Chrome 152, using one 4000×3000 landscape photo of 742KB, running every combination of the two menus. The sizes are the ones the tool itself printed.
| Target | Left as is (4000×3000) | Long edge 1600px (1600×1200) | Long edge 1200px (1200×900) |
|---|---|---|---|
| Under 100KB | 100KB | 97KB | 91KB |
| Under 300KB | 285KB | 202KB | 124KB |
| Under 500KB | 471KB | 202KB | 124KB |
There is a reason the 1600px column gives 202KB for both the 300KB and the 500KB target. Once that photo is scaled to 1600×1200, even the highest quality this tool will use comes out at 202KB — so whichever target you set above that, you get the same file. Raising the target does not buy you more quality. After you have cut the long edge, the pixel count decides the file size, not the target.
The other end of the table is worth knowing too. Holding the photo at 4000×3000 and demanding 100KB, the tool had to go all the way down to quality 30, its floor, and only just squeezed under. The same 100KB at 1600px landed somewhere between quality 85 and 90 — a far better-looking file at an identical weight. Unless something really is going to be viewed wider than 1600px, the resized one is the better trade every time. At 800px the same 100KB target came out at 63KB, with room to spare.
How far quality has to drop to halve the size
Here is the same photo re-saved at nothing but different quality settings — one 1200×900 shot, measured with this tool.
| Quality | File size | Against quality 90 |
|---|---|---|
| 95 | 259 KB | 128% |
| 90 | 203 KB | 100% |
| 85 | 153 KB | 75% |
| 80 | 119 KB | 58% |
| 70 | 90 KB | 44% |
| 60 | 71 KB | 35% |
| 50 | 60 KB | 29% |
Going from 90 to 70 more than halves the file. How much of that you can see depends on the photo and how large it is displayed. Carry on from 70 down to 50, though, and you save only another 30KB while blotches start appearing in the smooth areas — sky, skin, a plain wall. The savings are concentrated at the top of the range and the damage is concentrated at the bottom, which is an awkward combination if you are turning the dial by hand.
So this tool does not ask you for a quality number. You give it a target and it hunts for the highest quality that fits underneath: it tries a setting, sees whether the result is under the target, and halves the remaining range each time, eight attempts in total. It will not go above quality 95 or below 30. If even 30 will not fit, you get that file anyway with Could not reach the target size next to it, so you can decide what to give up rather than being handed something silently over the line. Browsers encode JPG slightly differently, so your own numbers may sit a few KB either side of the table.
Resizing is not the same as lowering quality
A phone photo today is around 4000 pixels across. The space it gets on a web page, in a document or in an application form is often less than a third of that. The extra pixels are thrown away when it is displayed, but they are paid for in full in the file.
The same photo again, quality held at 85, with only the width changing:
| Width | File size |
|---|---|
| 1200px | 153 KB |
| 1000px | 104 KB |
| 800px | 70 KB |
| 600px | 43 KB |
Two thirds of the width gives you less than half the size, because the height comes down with it and the pixel count falls by the square. That is why cutting the long edge is the first thing to try and lowering the quality is the second. What you do have to check afterwards is small text and fine pattern — those are what a resize costs you.
Together they go a long way. Quality 90 down to 85 plus a width of 800px gave 70KB, against 203KB for the same photo at 1200px and quality 90 — a third of the weight.
One warning: a resize cannot be undone. If the photo will ever be printed, cropped into or looked at large, save the compressed copy and keep the original where it is. This tool always writes a new file, so that happens by default.
When compressing makes the file bigger
This is what PNGs do. A 1654×2339 document PNG of 621KB — text on white — comes out at 907KB as a JPG at quality 95, heavier than what went in. It has to drop to quality 80 before it fits under the original at 594KB. A 1200×900 PNG drawing using only a handful of flat colours is 14KB, and as a JPG it is 18KB even at quality 30, the lowest this tool goes: there is no setting at which it gets smaller. The two formats are built for opposite pictures. PNG records long runs of identical colour very cheaply; JPG records gradual colour change very cheaply. Feed either one the other's material and it does badly.
The tool will not hand you a file bigger than the one you gave it. It searches under whichever is smaller, your target or the original size, and if no result comes out below the original it marks the row Already under the target — left alone and writes nothing. So you never download something heavier — but you can end up with nothing changed at all. When that happens, check whether the file is a PNG. A flat graphic or a screenshot saved as PNG is usually already as small as it is going to get, and leaving it alone is the right answer.
Re-saving a JPG as a JPG does the same thing on a smaller scale. A 1200×900 JPG of 337KB, re-saved at quality 95, came back at 340KB — 3KB heavier. The original had already been written at high quality, so asking for a higher one adds file weight without adding any detail. That is why the original size is used as a ceiling. It is also why you should not run a photo through this tool twice: each pass throws away detail, and the second pass starts from what the first one left.
Photos of documents and screens behave differently
Anything with writing in it resists compression in a way scenery does not. The 4000×3000 landscape photo — 12 megapixels — reached 100KB at quality 30. The 1654×2339 document image — 3.9 megapixels, a quarter as many — stopped at 329KB at that same quality 30. A third of the pixels, three times the weight. The reason is the edge of every letter: black to white in a single pixel step, which is the shape JPG is worst at. Scenery is mostly gradual change, which is the shape it is best at.
So documents miss their target often. Put that page in at its original size with a 300KB target and you get Could not reach the target size and a 329KB file. Asking for 100KB, a 1600px long edge gave 203KB and 1200px gave 138KB, both still over; only 800px got under, at 99KB. But at an 800px long edge that page is 566px wide, so the letters are a third of their original height. If the form will take 500KB, the 493KB version at full size is the better answer. If it genuinely has to be under 100KB, crop out just the part of the document that is needed — that keeps the text readable at a size where the whole page could not be.
Low quality also puts blotches around letters. On a photograph you would let that pass; on text it decides whether the thing can be read. Open the saved file and look at the smallest writing on it. If it is not readable, move the long edge up one step and the target up one step, and run it again.
Where people get caught out
Picking a target guarantees that size
The target is what it aims at, not a promise. Quality stops at 30, and some pictures — documents, screenshots, anything full of hard edges — are still over the line at that point. Those rows say Could not reach the target size and you get the smallest version the tool could make. Read the results list before you attach anything; the before-and-after sizes are printed on every row.
My original gets overwritten
It does not — the original is only read. Press Save and a new JPG appears in your downloads folder with -compressed added to the name, while the file you picked stays exactly where it was. If you do not like the result, run the original again with different settings. Rows marked as left alone have no Save button, because no new file was made for them.
The compressed copy is the same photo, just lighter
Two things are gone from it. The camera details (EXIF) do not survive — no capture date, no location, no camera model — because the photo is drawn onto a canvas and written out fresh. That is usually welcome when the picture is going to a stranger, and a nuisance if you rely on dates to sort your library, which is another reason to keep the original. Some image detail is gone as well: the pixel dimensions can match and it is still not the same file.
Everything above runs in this browser tab: 20 photos at a time, each one 10MB or less, 25 megapixels or less and 6,000px or less on its long edge. Results are always JPG. If you need a transparent background kept, compressing to JPG is the wrong step — convert to PNG instead.