Skip to main content

Image Compressor

New

Compress JPEG, PNG, and WebP images client-side using the Canvas API.

imagecompressoptimizejpegpngwebp
Read the guide
Shortcuts:⌘ KSearch

Drag & drop JPG, PNG, WEBP, or GIF files here

Compression happens locally in your browser using canvas.toBlob().

Frequently Asked Questions

Are my images uploaded to a server when I compress them?

No. The component loads the file locally, draws it to a canvas, and exports with canvas.toBlob(). Nothing in this tool sends the image anywhere.

Why did my GIF turn into a PNG, and why is the animation gone?

GIF input is intentionally exported as PNG in this tool. Because it uses a canvas snapshot, only a rendered frame is kept and animation is not preserved.

Can a compressed image ever end up larger than the original?

Yes. The UI even handles that by showing a ratio like “larger” when the new blob is bigger. That can happen depending on format and quality settings.

Does this tool resize the image too?

No. It keeps the original pixel dimensions and only recompresses the drawn canvas output. There is no width or height resize control.

What happens when I move the quality slider?

The new percentage is applied to all loaded images after a short debounce of about 250ms. In other words, the tool recompresses the whole current batch with the new quality level.

Related Tools