How to compress an image on this page
- Read the limit note above the square first. About 80 MB. Desktop Chrome or Firefox. iPhone and large files may fail.
- Drop one JPEG, PNG, WebP, or HEIC on the square, click it, or paste from the clipboard with Ctrl/Cmd+V. Nothing leaves the tab.
- Pick JPEG or WebP. Drag quality. 0.75 is the default crush. Leave max edge empty to keep the pixel size, or type a longest side to shrink first.
- Watch the before/after sizes. The preview is the compressed file, artifacts included.
- Click Compress image, then download. There is no watermark and no signup.
Need a different format without crushing on purpose? Use Convert image. Need a quarter turn or a box fit? Use Rotate / resize. Need to cut a still? Use Crop image. Same drop, still local. A JPEG-first alias lives at /compress-jpg.
What this page actually does
The browser decodes the still in this tab. HEIC goes through a maintained libheif build (the heic-to library). JPEG, PNG, and WebP use the browser decoder. We draw the pixels onto a canvas — optionally scaled to a max edge — then encode a new JPEG or WebP at the quality you picked. Close the tab and the bytes are gone.
This is a new file of the pixels. Metadata is not copied. JPEG fills empty pixels with white. WebP can keep alpha. We do not write PNG or HEIC out: PNG is a format convert (and often larger), and HEIC encode is not in this tab.
Quality, max edge, and size
JPEG and WebP are lossy. The slider is the crush. 0.90 is close to a phone snapshot. 0.75 is the usual email or form size. Drop toward 0.50 when the file just has to go through. WebP is often smaller than JPEG at the same visual quality. Some older apps still refuse WebP — pick JPEG for those.
Max edge is optional. Empty keeps the current size (then we still cap a huge still so the tab stays alive). A number is the longest side after scale, aspect kept. That is a size helper, not the rotate/resize clinic. Geometry verbs live at /rotate-image and /crop-image.
The readout is live: original bytes against the encoded file, plus the pixel size. A second pass on an already-small JPEG can come out larger. Drop quality or pick WebP. That is honest, not a bug.
Why the limits are loud
A browser is not Photos.app. Keep the drop under about 80 MB. Use a desktop. An iPhone tab has a tight memory ceiling. A 48 MP HEIC can decode into hundreds of megabytes of raw RGBA before we encode anything. If the tab reloads or the page goes white, the browser gave up. That is not a silent upload.
Output is capped at an 8192-pixel edge and about 25 megapixels so a huge still does not take the machine with it. The readout says when we cap. That is a safety ceiling, not a print shop.
What this is not
This is not a format converter, not a crop tool, and not ImageMagick. One still at a time. Hundreds belong in Preview or magick mogrify -quality 75 on a machine you control. Convert format without crushing on /convert-image. Quarter turns and resize on /rotate-image. Cut a rectangle on /crop-image. Video shrink is /compress-video. PDFs have their own clinic at /pdf.
FAQ
Does the photo leave my computer?
No. Decode, scale, and encode run in this tab. The privacy page says the same thing.
Can I paste a screenshot?
Yes. Focus this tab and press Ctrl+V (Cmd+V on a Mac). We take the first image on the clipboard. HEIC rarely lands there; drop those.
Can I compress several files at once?
No. One still. Convert image is the batch verb, and it changes format — it does not try to crush.
Why is this not on Convert image?
Convert picks JPEG or PNG and keeps quality high. This page is size: a lower default quality, WebP out, an optional max edge, and a live before/after so you can see the crush before you download.
Can I still use /compress-jpg?
Yes. That URL is a thin alias of this tool with JPEG as the default empty label and output. Same decoder, same crush.
Do you add a watermark or ask for an email?
No. The download link is a normal file.
Is my job counted?
Each successful apply increments a number in localStorage, key once:jobs. Sliding quality to preview size does not count. Nothing is posted to a server.