Compress image for upload
Every platform enforces a different ceiling. Pick yours and the compressor opens with the right target already filled in.
Limits that actually get enforced
These are the numbers each platform rejects uploads over, not the numbers in their marketing. They also change: Discord raised its free tier from 8MB to 10MB, and several services quietly apply a lower ceiling on mobile than on desktop. Where a limit is applied to the whole message rather than the individual file — email being the obvious case — the per-image number you should aim for is considerably lower than the headline.
| Platform | Limit | Practical target |
|---|---|---|
| Discord | 10MB | 4MB |
| 25MB | 10MB | |
| 5MB | 2MB | |
| 8MB | 3MB | |
| A website | 200KB | 160KB |
| A YouTube thumbnail | 2MB | 1MB |
| A passport or visa photo | 200KB | 160KB |
| 20MB | 8MB |
The practical target column is deliberately below the hard limit. Encoding overhead, metadata and the occasional stricter check on the receiving end all eat into the headroom, and an upload that fails at 99 percent is far more annoying than an image that is slightly smaller than it strictly needed to be. Aim at that column when you compress image for upload and the first attempt goes through.
Each row links to a page that opens this compressor with the matching target already filled in, so you can compress image for upload without looking the number up twice. The limits themselves are checked against what the platforms actually reject rather than what their help pages claim, because the two disagree more often than you would expect — several services quietly enforce a lower ceiling on mobile than on desktop.
Compress once, not repeatedly
The most common mistake when you need to compress image for upload is doing it in stages: shrink a bit, try the upload, get rejected, shrink again. Each lossy pass compounds the damage from the last, and three rounds of moderate compression look distinctly worse than one round of heavier compression that lands at the same file size.
Start from the original every time. If a target turns out to be too aggressive, change the number and run it again from the source rather than re-compressing the output. This tool always works from the file you dropped in, so simply adjusting the target and pressing the button again does the right thing.
Dimensions matter as much as bytes
A byte ceiling is only half of what platforms enforce. Instagram resamples anything wider than 1080 pixels, Discord previews cap out around 800 pixels before you have to click through, and most email clients render inline images at a few hundred pixels regardless of what you attached. Sending a 4000 pixel photograph to any of them means the far end throws away most of what you uploaded, after you spent the bandwidth sending it.
So the sensible order is to decide the dimensions the destination will actually display, resize to that, and only then compress image for upload. Doing it that way gives the encoder far fewer pixels to spread its budget across, which means a higher quality setting survives — the same file size buys visibly better results. This tool reports the final dimensions whenever it has had to resize on your behalf, so you can see when a target was tight enough to force that trade.
The one case to be careful with is documents. Scans of passports, certificates and forms are often checked for a minimum resolution as well as a maximum file size, and shrinking dimensions to hit a byte limit can fail the resolution check instead. When both constraints apply, keep the pixels and let quality absorb the difference.
Local processing
Nothing you drop onto this page leaves your device. The image is decoded, re-encoded and handed back entirely inside the browser tab. There is no upload, no queue, and no temporary copy sitting on someone else's disk waiting for a retention policy to delete it.
That matters more than it sounds. The files people most often need to shrink are the ones they should be most careful with: passport scans, signatures, identity documents, medical forms. Handing those to an unknown server in exchange for a smaller file is a poor trade. Because the work is local, you can compress image for upload with the network disconnected and get the same result.
It also means there is no queue to wait in and no daily allowance to run out of. Server-side compressors have to ration free use because every file costs them CPU time; here the CPU is yours, so you can compress image for upload as many times as you like, on as many files as you like, without an account.