Convert PNG images to JPG with adjustable quality control. Reduce file size while preserving clarity — batch processing runs privately in your browser.
Drop one or more PNG files onto the upload area, set the JPEG quality slider, and click Convert All. Each file is decoded, drawn onto an HTML canvas, and re-encoded as JPEG using your browser's built-in JPEG encoder. Nothing is uploaded. There is no server round trip, no queue, no account, and no temporary copy of your image sitting on someone else's disk — the conversion happens inside the page you are already looking at, and the converted file exists only as an object URL in your own tab until you download it or close the page. The file size limit is 50 MB per file, and the tool accepts PNG input only.
Most of the time the interesting part of a PNG→JPG conversion is not the conversion itself. It is the two things the conversion silently decides for you: what happens to the transparent pixels, and how much detail the encoder is allowed to throw away. This page is about getting both of those right.
A PNG can carry a fourth channel alongside red, green and blue: alpha, which records how opaque each pixel is. A value of 0 is fully transparent, 255 is fully opaque, and everything between is partial — the soft edge around an anti-aliased logo, the fade at the bottom of a gradient, the feathered shadow behind a product cutout.
Baseline JPEG has no alpha channel at all. There is nowhere in the file format to record "this pixel is see-through". So a converter cannot preserve transparency; it can only decide what colour to put underneath it. This tool composites every image onto an opaque white background before encoding. Concretely, the canvas is filled with #ffffff and your PNG is drawn on top, so:
The background colour is fixed at white in this tool; there is no matte colour picker. That is the right default for the common cases (posting to a forum that rejects PNGs, attaching to a document, uploading to a system that only accepts JPEG) and the wrong one if your logo is white or near-white, or if the image will sit on a dark page. If you need a different matte, composite the PNG onto your chosen background colour first in an image editor, flatten it, and then convert the flattened PNG here.
The classic failure is a logo that was exported with a transparent background, converted to JPG, and then placed on a coloured page. It arrives with a white rectangle around it. This is not a bug in the converter and it is not fixable after the fact — the transparency information is gone from the file, and the white is now real image data. If you are ever going to place the image on a non-white background, do not convert it to JPEG. Keep the PNG, or use WebP, which supports alpha.
A subtler version affects images that were already flattened onto white: the edges look fine at full size but show faint grey fringing when the image is scaled down, because JPEG's compression smears the high-contrast boundary between the shape and the white field. Raising the quality slider reduces it.
JPEG was designed for continuous-tone photographic content. Its compression works by transforming the image in 8×8 pixel blocks and discarding the high-frequency detail your eye is least sensitive to. That assumption holds beautifully for a photograph of a face or a landscape, where neighbouring pixels are already similar, and holds badly for anything with hard edges and flat colour.
| Source image | Best format | Why |
|---|---|---|
| Photograph, product shot, scanned artwork | JPEG | Smooth tonal gradients compress extremely well; PNG stores them almost losslessly and pays a large size penalty for it |
| Logo, icon, flat-colour illustration | PNG (or SVG) | Large areas of identical colour compress better losslessly; JPEG adds visible noise around edges and cannot hold transparency |
| Screenshot containing text or UI | PNG | Text edges are the worst case for JPEG — letterforms pick up a shimmering halo that makes small type harder to read |
| Line art, diagrams, charts, maps | PNG | Thin dark lines on white are exactly the high-contrast edges JPEG smears |
| Image with any transparency you still need | PNG or WebP | JPEG cannot store an alpha channel |
| Photograph with a small transparent border you do not need | JPEG | The white matte is harmless and the size saving is large |
A practical test: zoom into the image and look for edges where a dark colour meets a light colour across one or two pixels. Lots of those edges means JPEG will cost you visible quality. Very few means JPEG will cost you almost nothing and save a great deal of space.
For photographs, a PNG stores essentially every pixel and a JPEG stores an approximation, so the JPEG is normally dramatically smaller. The tool shows the before and after size for every file along with the percentage change, so you can see the actual result for your image rather than a rule of thumb.
The percentage occasionally comes out positive — the JPEG is larger than the PNG. That is not a malfunction. It happens when the source PNG was an efficient one: a flat-colour graphic, a screenshot with few colours, or an 8-bit palette PNG. PNG's filtering plus DEFLATE can encode those in very few bytes, while the JPEG encoder has to spend bits describing the noise that its own transform introduces at the edges. If you see a size increase, that is the tool telling you this particular image should have stayed a PNG.
The slider runs from 10 to 100 and defaults to 92. It is passed straight through to the browser's JPEG encoder as the quality parameter. The number is not a percentage of anything meaningful — it is a knob on how aggressively detail is discarded, and the relationship between the number and the resulting file size is steeply non-linear. Dropping from 100 to 90 typically removes a large fraction of the bytes for very little visible change; dropping from 50 to 40 removes far less and hurts far more.
| Quality | Reasonable use | What to expect |
|---|---|---|
| 100 | Intermediate file you will edit again | Much larger than 95 for essentially no visible gain; still lossy |
| 92 (default) | General purpose, print-ish, archival copies | Artefacts are hard to see even when zoomed |
| 80–85 | Web images, blog headers, product photos | Noticeably smaller; artefacts visible only on close inspection of edges |
| 60–75 | Thumbnails, email attachments, upload size caps | Blocking becomes visible in flat areas like skies |
| Below 50 | Only when a hard byte limit forces it | Obvious 8×8 blocking and colour smearing |
Two things are worth knowing about how browsers encode JPEG. First, colour is usually stored at lower resolution than brightness — your eye is far more sensitive to luminance detail than to chroma detail, so encoders exploit that. It is why saturated red text on a dark background is the single hardest thing to compress as JPEG and often looks smeared even at high quality settings. Second, quality settings are not comparable between encoders: "quality 80" in your browser, in Photoshop, and in a command-line tool will not produce the same file. Judge by the output, not by the number.
Every JPEG save is a fresh lossy encode. Decoding a JPEG gives you pixel values that no longer sit neatly on the encoder's transform grid, so re-encoding them discards a new round of detail on top of the detail already lost. Do that repeatedly — save, open, crop, save, send, someone else saves it again — and the artefacts compound until edges are visibly mushy and flat areas develop blotches. This is generation loss, and it is why a photo that has been passed through several chat apps looks the way it does.
The defences are simple:
Canvas-based conversion produces a clean, newly encoded JPEG. That is usually what people want, but it means some things in the original file do not survive:
Pixel dimensions are preserved exactly. This tool does not resize, crop or rotate — the output has the same width and height as the input.
You can drop in a batch. Files are converted one after another and each row shows its own status, its original size, its converted size and the percentage change, so a failure on one file does not stop the rest. Every file in a batch uses the same quality setting; if some images need a different setting, convert them as a separate batch.
"Download All" saves each completed file individually rather than bundling them into a ZIP archive. Browsers often ask for permission the first time a page tries to save multiple files in quick succession — allow it, or use the per-row Download button. Output files keep the original name with the extension changed from .png to .jpg.
.jpg.