Convert JPG to PNG
Get a PNG holding exactly the pixels the JPEG decodes to. No quality is recovered.
How it works
This tool decodes the JPEG to raw pixels and re-stores those pixels in a PNG without losing any of them. It is worth being blunt about what that does and does not mean, because most pages offering this conversion imply an upgrade.
What JPEG already threw away
JPEG discarded information when the file was first written: it subsampled the chroma channels, usually to half resolution in each direction, and quantised the high-frequency coefficients of every 8×8 block. That information is not in the file. Nothing can read it back.
Blocking in smooth gradients, ringing around text and hard edges, and the faint mosquito noise along contours are all baked into the pixel values, and the PNG will reproduce them perfectly.
Three to eight times larger
Expect the PNG to be considerably larger. Three to eight times is typical for a photograph, and more is common. PNG compresses with DEFLATE over filtered rows, which needs local predictability, and photographic pixels are not predictable.
There is an irony worth knowing: JPEG's own artifacts make this worse. The 8×8 block boundaries and the ringing introduce high-frequency structure that was not in the original scene and that PNG's filters handle badly, so a heavily compressed JPEG can produce a larger PNG than a lightly compressed one of the same image. The result panel shows the byte delta; a large positive number here is the expected outcome, not a fault.
Stopping generation loss while editing
There are still good reasons to do it. The strongest is avoiding generation loss during editing: every time a JPEG is opened, changed and saved again it is re-quantised, and the damage accumulates across a handful of rounds until it is visible. Converting to PNG once and editing from there stops the decay, and you export back to JPEG a single time at the end.
Beyond that, plenty of pipelines demand PNG and nothing else: favicon and app-icon tooling, some print submission portals, several game engines and CMS uploaders, and most desktop icon formats. And PNG carries an alpha channel, so if the next job is cutting out a background or adding a soft shadow, the format needs to support transparency before the editor can write any.
The oxipng effort slider
The optimisation effort slider controls oxipng, a lossless recompression pass that runs after the PNG is written. It searches row-filter strategies and compression parameters looking for a smaller encoding of the identical pixels. Level 0 does almost no searching and is nearly instant; level 6 is exhaustive and can take many seconds on a large image for a further few percent.
The output pixels are bit-identical at every level. Effort only trades time for file size. Decoding uses a WebAssembly build of libjpeg-turbo and everything happens in a Web Worker on your machine, so no image data reaches the network.
Questions
Will converting to PNG improve the quality of my JPG?
No. The detail JPEG removed is not stored anywhere in the file, so no converter can restore it. PNG is lossless, which here means it faithfully preserves the compression artifacts along with everything else. The only thing it prevents is further loss from this point on.
Why is the PNG so much bigger than the JPG?
Because JPEG is lossy and PNG is not. JPEG reaches its size by discarding detail; PNG has to encode every pixel exactly, and photographic pixels compress poorly. Three to eight times the size is normal for a photo. If size matters more than losslessness, keep the JPG.
Is my image uploaded to a server?
No. Open developer tools, switch to the Network tab, and run a conversion. You will see the page's own code and the decoder being fetched, and no request containing your file. The image is read locally and processed in a Web Worker.
Does the PNG have transparency?
It has an alpha channel, fully opaque everywhere, because the JPEG it came from had no transparency to carry over. What that buys you is the ability to erase regions to transparent in an editor afterwards without a further lossy re-save.