Compress JPEG
Shrink JPG and JPEG photos with a quality slider or an exact target size in kilobytes.
Compress JPEGLossless by default, with the alpha channel carried through untouched. Convert to WebP if you want a smaller file still.
PNG files are accepted. Transparency is preserved. Paste from clipboard with Ctrl+V (Cmd+V on a Mac).
Keep the original format, or convert on the way out to compare which one is smallest.
Removes text chunks, timestamps and colour profile comments from the output.
Compress without changing the pixel size of the image.
Only used when the output format cannot store an alpha channel. Off means transparent areas become black in JPEG output.
Ready. Add a file to begin.
Lossless mode · PNG output · 0 files
No files yet. Results will appear in this table as soon as you add one.
Your files are processed by your own browser. Nothing is uploaded to a server, so nothing can be stored, read or shared.
More tools
Each one runs in the browser the same way, with no upload and no account.
Shrink JPG and JPEG photos with a quality slider or an exact target size in kilobytes.
Compress JPEGRe-encode WebP images at a lower quality, or convert JPEG and PNG into WebP.
Compress WebPChange pixel dimensions by width, height or percentage, with the aspect ratio locked.
Resize an imageCombine several photos into one PDF, reorder the pages and choose paper size and margin.
Build a PDFWrite a formatted document in the browser and export it to PDF, DOCX or HTML.
Open the editorSpecification
Every capability written out as text, including the ones where the answer is no. A specification that only listed the wins would not be worth reading.
| Attribute | This tool |
|---|---|
| Supported input formats | PNG |
| Output formats | PNG, WebP, JPEG |
| Compression type | Lossless by defaultPNG output preserves every pixel exactly. It becomes lossy only if you convert to JPEG or WebP. |
| Quality control | Applies to JPEG and WebP output onlyPNG output ignores it entirely, because lossless encoding makes no quality decision. |
| Exact output file size | Yes, for lossy outputA target size cannot apply to lossless PNG output, where the size is dictated by the content. |
| Resize / image dimensions | Yes — max width and heightAspect ratio preserved. The resizer page adds exact pixel and percentage modes. |
| Batch / bulk processing | UnlimitedFiles are encoded in parallel across a Web Worker pool and can be downloaded as one ZIP. |
| Maximum file size | No limit set by this siteBounded in practice by your device's memory, since each image is held uncompressed while it is processed. |
| EXIF and metadata | Stripped by defaultCamera model, timestamps and GPS coordinates are removed. You can switch it off. |
| Transparency / alpha channel | Fully preservedThe 8-bit alpha channel is carried through to PNG and WebP output untouched. |
| Chroma subsampling control | Not availableThe browser's encoder chooses it and exposes no setting. We will not add a control that cannot affect the output. |
| Progressive JPEG control | Not availablecanvas.toBlob gives no control over progressive encoding. Use MozJPEG or ImageMagick if you need it. |
| Colour profile handling | Converted to sRGBA browser canvas works in sRGB, so wide-gamut images are converted. Correct for the web, wrong for print masters. |
| Bit depth | 8 bits per channelThe maximum a browser canvas provides. HDR and 10-bit output need AVIF, which browsers cannot write. |
| Animation support | Not supportedA canvas decodes only the first frame of an animated file, so animation is out of scope rather than half-supported. |
| Where processing happens | In your browserNo upload endpoint exists in the compression path. Disconnect from the network after the page loads and it still works. |
| File retention | None — nothing is receivedThere is no copy to retain or delete, because no file is ever transmitted. |
| Watermark | NeverThe output contains your image and nothing else. |
| Account, quota or cost | NoneNo sign-up, no daily cap, no paid tier withholding a feature. |
| Browser support | Chrome, Edge, Firefox, SafariDesktop and mobile. Requires Canvas and Web Workers, which every current browser provides. |
Drag the handle to compare, and zoom in to inspect the detail at full size.

How it works
Drag files onto the drop zone, click it to browse, or paste an image straight from the clipboard. Batches of any size are fine.
Pick a quality level, an exact target size in kilobytes, or a maximum width and height. Defaults are tuned for the web if you would rather not change anything.
Every file is listed with its old size, new size and percentage saved. Save them one at a time or grab the whole batch as a ZIP archive.
Features
Queue as many PNG files as you like. A Web Worker pool handles them in parallel so a large batch does not freeze the page.
The quality slider maps directly to the encoder setting. Move it and the output genuinely changes — there are no cosmetic controls here.
Ask for 200 KB and the encoder searches for the highest quality that fits under your limit, then reports what it actually achieved.
Camera model, lens, timestamps and GPS coordinates can be removed on the way out. Useful before publishing a photo taken on a phone.
Write the result as JPEG, PNG or WebP regardless of what you put in, so you can test which format is smallest for a given image.
The whole pipeline runs in your browser through the Canvas API. Turn off your network connection after the page loads and it still works.
The output is your image and nothing else. There is no account, no daily quota and no paid tier holding back a feature.
The layout, the drop zone and the results table are all usable on a phone, and mobile browsers run the same encoder as the desktop ones.
In depth
Lossless compression rewrites the file so it takes up less space while every pixel value survives exactly. Decode the result and you get the original back, byte for byte. PNG, GIF and lossless WebP work this way, and so does a ZIP archive.
Lossy compression throws information away on purpose. JPEG converts the image to a frequency representation, then discards the high-frequency detail your eye is least likely to miss. The result cannot be reversed: the discarded detail is gone. That is also why lossy formats reach file sizes lossless ones cannot approach — a photo saved as PNG is routinely five to ten times larger than the same photo saved as JPEG at a sensible quality.
Neither one is better. Photographs, with their smooth gradients and noise, suit lossy encoding. Screenshots, logos, line art, charts and anything with large flat areas and hard edges suit lossless encoding, because lossy encoders produce visible haloes around sharp boundaries.
JPEG has no alpha channel. It cannot store transparency in any form. When a transparent PNG is converted to JPEG the transparent pixels have to become something, and most tools silently fill them with black — which is why a logo exported to JPEG so often arrives with an unwanted dark box around it.
If your image has transparency you have three sensible options: keep it as PNG, use WebP (which supports alpha and is typically 25–35% smaller than PNG for the same image), or flatten it onto a known background colour deliberately rather than letting an encoder choose for you.
PNG's own compression is lossless and works best on images with few distinct colours and large uniform regions. A screenshot of a text document compresses beautifully. A photograph saved as PNG does not, because virtually every pixel differs from its neighbour and there is no redundancy for the algorithm to exploit.
PNG compresses in two stages. First it filters each row of pixels, replacing each value with its difference from a neighbouring pixel — so a smooth gradient becomes a long run of near-identical small numbers. Then it runs DEFLATE over the result, which is the same algorithm a ZIP archive uses.
That design explains exactly which images PNG is good at. Flat colour, repeated patterns, sharp edges and text all produce long predictable runs after filtering, and DEFLATE collapses them dramatically. Photographic noise produces nothing predictable at all, which is why a photograph in PNG is enormous.
It also explains why re-compressing a PNG gives modest results: the algorithm is deterministic, and if the original encoder chose good filters there is little left to find.
The quality number in a JPEG or WebP encoder is not a percentage of anything. It is an index into a set of quantisation tables that control how aggressively detail is discarded. The relationship to file size is steep and non-linear.
For a typical 12-megapixel phone photograph the curve looks roughly like this:
Diminishing returns set in fast at the top of the range. Going from quality 100 to quality 90 usually halves the file for no perceptible change; going from 90 to 80 saves far less and costs slightly more. If you only remember one number, use 80.
A digital image has exactly one physical property: its pixel dimensions. A 3000 × 2000 photograph contains six million pixels whether its metadata claims 72 DPI or 300 DPI.
DPI is a printing instruction stored in a metadata field. It tells a printer how many of those pixels to place per inch of paper, which determines the printed size — 3000 pixels at 300 DPI is a 10-inch-wide print; the same file at 72 DPI is a 41-inch-wide print of the same six million pixels. Changing the number changes nothing about the file except a handful of bytes in a header.
So "save this at 72 DPI for the web" does not make a file smaller. Reducing pixel dimensions does. If a print shop asks for 300 DPI at A4, what they actually need is about 2480 × 3508 pixels; supply that many pixels and the DPI tag can be corrected in seconds.
Questions
Every answer below is present in the page source, expanded, so it can be read without opening anything.
In the default Lossless mode, yes: the image is decoded to raw pixels and re-encoded as PNG, so every pixel value and every alpha value survives exactly. That mode discards nothing. If you switch the output format to JPEG or WebP with a quality setting, you are no longer doing lossless compression, and the tool labels it accordingly rather than pretending otherwise.
Yes, for PNG and WebP output — both formats carry a full alpha channel and it is copied across untouched. JPEG output cannot store transparency at all, so if you choose it, transparent pixels must be filled. The Flatten transparency option decides whether they become white or black; leaving it off and exporting to JPEG is what produces the black box people see around badly converted logos.
It depends entirely on the content. Screenshots, diagrams, logos and anything with large flat areas often drop 20–60% in lossless mode. A photograph saved as PNG will barely move, because there is almost no repetition for a lossless algorithm to exploit — for a photograph the real win is converting it to WebP or JPEG, which routinely cuts it by 80% or more.
Usually because it is a photograph in the wrong container. PNG stores every pixel exactly, so a 12-megapixel photo has to record twelve million distinct colour values with no shortcuts. Screenshots are also larger than people expect when they are taken on a high-density display, since a screenshot of a 1440-point-wide window on a 2× screen is really 2880 pixels wide.
For the web, usually yes. Lossless WebP is typically 25–35% smaller than PNG for the same image with the same alpha channel and no visual difference whatsoever. Every browser released in the last several years supports it. Keep PNG when the file has to be opened by older desktop software, or when it is a source asset you will edit again.
For screenshots, almost always. A screenshot captured at 2880 pixels wide and displayed in an 800-pixel column is carrying more than three times the pixels it needs, and no encoder setting will fix that. Cap the dimensions first, then compress.
No. The file is read into memory by your browser, decoded onto a canvas, re-encoded, and handed straight back to you as a download. There is no server involved in the processing at any point, and no copy of your file exists outside this browser tab.
No. This tool does not perform colour quantisation or palette reduction, so it will not introduce the banding you sometimes see from tools that convert to 8-bit PNG. That means the savings in lossless mode are more modest than a quantising tool would claim, but the output is genuinely identical to the input.
With the Strip metadata option on, text chunks, creation timestamps and embedded comments are not carried into the output, because the file is rebuilt from raw pixels. Screenshots in particular can carry the application name and window title, which is worth removing before publishing.
Yes. Add as many as you like — they are queued and processed in parallel across Web Workers, so the interface stays responsive. Each file gets its own row in the results table, and Download all packages the finished batch into a single ZIP.
In lossless mode, no — not at any zoom level, because no pixel has changed. If you convert to JPEG or WebP at a quality setting, then yes: sharp edges and text will soften slightly, which is exactly why lossless mode is the default here.
Because the original was already encoded by a very well-optimised tool, and a browser's PNG encoder does not always beat it. When that happens the tool reports the increase honestly instead of hiding it — and the sensible response is either to keep the original or to switch the output to WebP.
Related topics
Related concepts, formats and guides across the site. Every link goes to a page that covers the term properly.
From the blog
Longer explanations from the blog.
PNG stored the same photograph in 1274.1 KB where JPEG needed 67.5 KB — nineteen times larger. On a flat graphic PNG won. On a smooth gradient PNG lost to JPEG by a factor of two, which surprises most people.
9 min read
Resize before you compress. Measured on one photograph: half the width at quality 80 produced a 16.4 KB file, while full width at quality 40 produced 20.6 KB and looked far worse. The order of operations matters more than the settings.
8 min read
A photograph from a phone can carry the coordinates of the place it was taken, the camera serial number and the exact timestamp. Removing that data is straightforward. Removing it carelessly rotates your photos sideways.
9 min read