Image Compressor

Say what the file has to be, and it is: the highest quality that fits under your limit, checked byte by byte before you download. One photo or a whole folder. Nothing is uploaded; it all runs in your browser.

1. Add images

or drop files here, or paste a screenshot JPG, PNG, WebP, GIF, BMP, AVIF · HEIC in Safari · as many as you like

    2. I need each file to be

    Quality is lowered first. Only when that is not enough are the pixels reduced, and the receipt says by how much. Turn this off to keep the exact pixel size no matter what.

    3. Extras (optional: file type, metadata, size cap)

    Change file type?
    Hidden data
    px · leave empty to keep dimensions unless the target forces it

    4. Compress

      Add images and set a limit.

      About this image compressor

      How to use it

      1. Add one image or many: choose, drop, paste a screenshot, or pick a whole folder.
      2. Type the limit a form, email or app gave you, or tap one of the common sizes. Choose "just smaller" when there is no limit.
      3. Open Extras only if you need to: change the file type, keep the camera details, or cap the longest side.
      4. Press Compress. Each file gets a receipt: what it was, what it is now, and whether every check passed.

      What makes it different

      JPG, WebP or PNG?

      For photos, JPG is the universal choice and WebP is 25–35% smaller at the same look but not accepted by every form. For logos, screenshots and anything with transparency, WebP keeps the transparency at a fraction of PNG's size; keep PNG when a system demands it or when the image must stay pixel-perfect.

      Why did my photo get smaller in pixels?

      Because you allowed it. A 12-megapixel photo cannot become 50 KB at full size in any format; the page lowers quality to its floor, then reduces the pixels until the limit is met, and prints the new dimensions. Untick "shrink the pixel size too" if the dimensions matter more than the limit.

      Privacy

      Compression runs on your device with the browser's decoders and small WebAssembly encoders (MozJPEG, libwebp). No image, name or size is sent anywhere. Load the page, go offline, and it still works.

      Related