Compress PNG files with a lossless pass first
Compress png graphics when the file is a screenshot, a diagram, or a logo and you want fewer bytes without a blurry re-encode. Output on this page starts as PNG. If you leave max side at 0, leave target size at 0, and leave Reduce colours off, the pass is lossless OxiPNG. Effort defaults to 2. Metadata stripping starts on. The PNG stays in this tab.
Loading tool…
or drop / paste
How to compress png graphics
- Add a PNG, or a JPEG or WebP you intend to save as PNG. Drop, paste, or Choose files. Up to one hundred files can share the same settings.
- Leave output on PNG. That is the default. Switching to JPG or WebP leaves the lossless path, because those formats encode differently.
- Leave max side at 0 and target size at 0 if you want the lossless pass. Either control, once set above zero, means the pixels may be scaled or packed to hit a size.
- Leave Reduce colours off for a lossless result. Turn it on only when OxiPNG is still too big and you accept a posterised picture. Effort stays between 1 and 4, default 2.
- Leave Strip metadata on to drop text chunks, then press Compress images. Download the PNG, or a ZIP if you processed more than one file.
Compress PNG options explained
Lossless mode is specific. PNG in, PNG out, max side 0, target size 0, and Reduce colours off: OxiPNG repacks the file and the picture stays the same. Effort only changes how hard that pack tries.
Reduce colours is lossy on purpose. It posterises to 32 levels, then OxiPNG runs on that flatter picture. Use it for flat icons and simple screenshots, not for photos with smooth gradients.
Target size 0 and max side 0 keep the lossless path available. A target above zero can posterise and then scale if the PNG is still too big. A max side above zero scales the longest edge before the encode, so the result is a new bitmap.
PNG effort runs from 1 to 4 and defaults to 2. Higher effort spends more time in OxiPNG. It does not change colours by itself. Strip metadata defaults to on and drops text chunks from the PNG.
When the pass stays lossless
OxiPNG can shrink a PNG by rewriting how the rows are stored. That does not blur text or shift a pixel, as long as you did not ask for a new size, a target that forces a reduction, or a colour cut. Those three are the gates. Leave them alone and the download is the same picture in a tighter file.
A PNG that is already well packed may barely shrink. That is an honest result, not a failed run. Screenshots with huge flat areas usually shrink more than photos that were saved as PNG. If the photo is a JPEG at heart, compress jpeg will often make a much smaller file.
Colour reduction is lossy on purpose
Reduce colours posterises each channel to 32 levels and then hands the flatter image to OxiPNG. The file can drop a lot, and fine gradients turn into bands. The control says so because this is not a hidden extra pass. You opt in.
A target size can also posterise a PNG if the ordinary encode is still over the cap, then scale the bitmap down a ladder if it is still too big. If you need the pixels untouched, leave the target at 0 and do not tick Reduce colours. Use effort alone.
Effort, and files that are not PNG yet
Effort 2 is the default because it is the middle of a 1 to 4 range. Effort 4 can take longer on a large screenshot and sometimes saves more bytes. It still will not posterise. If you are in a hurry and the file is simple, effort 1 is enough to see whether a lossless pack helps at all.
A JPEG or WebP added here is encoded out as PNG, because that is the default output. Wrapping a photo in PNG often makes it larger, not smaller. Do that only when a tool demanded PNG. For a JPEG camera file, stay on compress jpeg.
Common targets
Limits, formats and output
| Accepted input | PNG, JPEG, WEBP |
|---|---|
| Files per batch | 1–100 |
| Soft size warning | 50 MB each |
| Hard stop | 500 MB total in memory |
| Output | The chosen image format, or a ZIP for a batch |
| Account | None. The tool runs in this tab. |
Your file never leaves your device
This PNG is compressed by a script that stays in this tab. The work runs in a Web Worker in this tab, using WebAssembly for the heavy parts, and the result comes back as a local blob. This site does not upload the file, store it, or log its name.
To verify: load the page, turn on airplane mode, and drop the file again. It still finishes. Or open DevTools, choose Network, and watch the run: there is no upload. The architecture is described on How it works.
Frequently asked questions
Is compress png always lossless?
No. It is lossless only when the input is PNG, the output stays PNG, max side is 0, target size is 0, and Reduce colours is off. OxiPNG then repacks the file. Any of those other controls can change the pixels on purpose.
What does posterise mean here?
Each colour channel is cut to 32 levels, so close shades become one shade. That is what Reduce colours does before OxiPNG. It is lossy. Leave it off for logos with subtle shading and for any PNG you still need to match exactly.
Should I raise PNG effort to 4?
Try 2 first. Effort 4 asks OxiPNG to search harder. The picture does not change if you are still on the lossless path. On a huge screenshot it simply takes longer. If the byte count barely moved at 2, 4 may not be worth the wait.
Will a target size stay lossless?
Do not count on it. A PNG target that is still too big can posterise and then scale the image down. That is how the tool chases a number. Leave target size at 0 when the picture must stay identical.
Does this strip the text in the file?
Strip metadata starts on and drops PNG text chunks. The visible pixels, including words drawn in the screenshot, stay. Only the hidden text notes go. Turn the toggle off if you still need those notes.
Can I run a batch of PNGs?
Yes, up to one hundred, with one effort, one target, and one colour choice for the whole list. Download a ZIP when more than one PNG is ready. Check one file first if you turned colour reduction on.
Last updated 2026-09-26. By Tam.