Image Compressor
Shrink an image file with no perceptible quality loss, entirely in your browser.
What is this?
Shrinks an image file with no perceptible quality loss — everything runs in your browser, using the native <canvas> element (the same technology behind this catalog's Base64 Encode/Decode and Image Steganography). The image is never sent to any server: picking a larger or smaller file doesn't change that, processing is always 100% local.
Two independent control axes
There are two different ways to reduce an image file's size, and this tool treats them as separate decisions. Compression quality (JPEG/WebP only) controls how much visual detail is discarded — it never changes the image's width/height in pixels, only how visually "compressed" it looks. Resizing genuinely changes width/height in pixels (as absolute values or a percentage of the original) — an independent decision from quality. Combining the two is usually far more effective than adjusting quality alone: a 4000×3000 photo at high quality is still large; resized to 1200px wide before compressing, the result is much smaller at the same perceived visual quality.
Supported formats
JPEG and WebP are lossy formats — they accept an adjustable quality control (axis 1 above); the lower the quality, the smaller the file and the more detail is discarded. PNG is lossless by nature — the browser API used here (canvas.toBlob) simply ignores any quality value for PNG, so only resizing (axis 2) shrinks a PNG's file size. The output format always matches the uploaded image's format — this tool never converts between formats, only compresses within the original one.
"Hit target size" mode — how it works
Instead of adjusting the slider by hand, you enter the maximum size you want in KB and the tool tests configurations on its own until it finds the closest result, always through binary search (at most ~15 attempts, never an unbounded loop): it first tries lowering only the quality at the original dimensions; if even the minimum quality isn't enough, it also reduces dimensions, searching for the largest scale still compatible with the target, then maximizes quality within it. If even the smallest accepted configuration still exceeds the target, the tool shows the best achievable result and warns that the exact limit wasn't reached — it never gets stuck in an endless search.
Privacy and EXIF metadata
Re-encoding an image via <canvas> strips the original EXIF metadata (camera model, date, and — on phone photos with GPS enabled — location coordinates) as a side effect of the process itself, not a separate feature. If you use this tool before sharing a photo publicly, the result comes out without that metadata. The photo's orientation (portrait/landscape) is respected automatically, even straight from a phone — the image never comes out sideways.
Frequently asked questions
Because they're deliberately separate axes. Quality controls how much visual detail is discarded during compression (JPEG/WebP); pixel dimensions are a different decision, controlled only by resizing. Mixing the two into a single control would hide which of the two is actually causing the size reduction on each adjustment.
PNG is lossless by definition — every saved pixel is exactly the original pixel, no approximation. The browser API itself (canvas.toBlob) ignores any quality value passed for PNG. The only real way to shrink a PNG's file size is reducing the number of pixels (resizing).
Not in this version — the output format always matches the uploaded image's format. Converting between formats is a different decision from compressing within the original format, and it's out of scope for this tool.
The tool tests the lowest quality and smallest resize it accepts applying; if the file is still larger than the requested target even then, it shows that result (the smallest size actually achievable) and warns that the exact limit wasn't reached, instead of retrying forever or returning an unexplained error.
No — the tool only accepts JPEG, PNG, and WebP. GIF, AVIF, BMP, and other formats aren't supported in this version.
No. All reading, resizing, and re-encoding happens in your browser via <canvas> — the image never travels over the network at any point, including during "Hit target size" mode, which only tests configurations locally.
It can happen with an image already heavily compressed at the source (e.g., a JPEG saved at low quality by another program) re-encoded here at a higher quality, or with a PNG with no resizing applied — in these cases, the tool warns you and the recommendation is to lower the quality or apply resizing.
Nexinon Principles
Privacy
Your data never leaves your browser.No account needed
Use it now, no account or password.Free
No usage limits, no paid plan.Trustworthy content
Full explanation behind every tool, not just the result.