Image Compressor

Client-sideNo sign-upFree

Compress JPG, PNG, or WebP images entirely in your browser, with a quality slider and download.

How this tool works

1

Upload an image

JPG, PNG, or WebP - read locally, never uploaded.

2

Choose an output format and quality

JPEG and WebP support an adjustable quality slider; PNG stays lossless.

3

Compare before and after

Side-by-side thumbnails and file sizes show exactly how much was saved.

4

Download the result

Save the compressed file directly, ready to attach or upload elsewhere.

Quick facts

Category
Converters
Best for
Shrinking a screenshot or photo before attaching it to an email or ticket, without uploading it anywhere
In-content slot

About this tool

Upload a JPG, PNG, or WebP image to compress it using the browser's own Canvas API: the image is drawn onto a canvas and re-encoded through canvas.toBlob() with an adjustable quality setting for JPEG and WebP output. Before and after file sizes are shown side by side with the percentage reduction, alongside preview thumbnails of both versions, so you can judge the visual trade-off before downloading. This is genuinely different from a server-based compressor like TinyPNG or Squoosh's server mode: the image is read, processed, and re-encoded entirely on your own device using standard browser APIs - it's never uploaded anywhere, which matters for screenshots containing sensitive information or images you'd rather not hand to a third-party server at all. PNG output has no meaningful quality slider since PNG is a lossless format - the toggle only affects size for JPEG and WebP output. Runs entirely client-side.

Why use this tool

Never uploaded anywhere

Unlike server-based compressors, the image is processed entirely on your device.

Adjustable quality for JPEG and WebP

Dial in the exact trade-off between file size and visual quality.

Side-by-side comparison

See both versions and the percentage size reduction before deciding to download.

Format conversion included

Compress a PNG down to a smaller JPEG or WebP, not just re-encode the original format.

Frequently asked questions

Server-based compressors upload your image to their servers, compress it there, and send back the result - convenient, but it means the image (and anything in it) leaves your device. This tool draws the image onto an HTML canvas and re-encodes it using the browser's own Canvas API entirely on your machine, so nothing is ever transmitted anywhere.

PNG is a lossless format by design - the quality parameter that canvas.toBlob() accepts is defined by the spec to only affect lossy formats like JPEG and WebP, and every browser ignores it for PNG output. If you want a smaller file from a PNG source, switch the output format to JPEG or WebP, which will show real size reduction as you lower the quality slider.

No - this tool only affects encoding quality, not pixel dimensions, so a 4000×3000 image stays 4000×3000 pixels after compression, just encoded more efficiently. If you also need to resize the image down, do that with an image editor first, since a smaller pixel count combined with compression produces a much smaller file than either change alone.

Explore more free tools

Formatters, converters, validators, and generators - all free and running entirely in your browser.

Browse more tools