PNG to JPG Converter

Convert PNG to JPG without uploading anything.

Runs entirely in your browser

Loading the tool…

Your file is opened by this page and never uploaded. It is not sent anywhere, and the page keeps working with the network off.

PNG is lossless and carries transparency; JPEG is neither, and is very often a third of the size for a photograph. This page opens on JPEG output, so choose a file and you have the converted picture.

Transparency is the thing to know before you convert. JPEG has no alpha channel at all, so anything transparent in the PNG comes out as solid white. For a photograph or a screenshot that is exactly what you want. For a logo meant to sit on a coloured background it is not, and PNG to WebP keeps the transparency while still cutting the size.

The conversion happens in the tab: the picture is decoded, drawn to a canvas and re-encoded by your own browser. Nothing is uploaded, which for photographs matters more than for most files.

How to use it

  1. Choose a PNG file. Nothing is uploaded: it is read in this tab.
  2. Check whether it has a transparent background: JPG will fill it with white.
  3. Set the quality: 85 suits a photograph, 90 or more a screenshot with text.
  4. Press Download to save the JPG.

Questions

Why did my transparent background turn white?

Because JPEG cannot store transparency. Every pixel gets a colour, so anything see-through is composited onto white on the way out. If you need the transparency, convert to WebP instead, which keeps it and is usually smaller than the PNG was.

Will converting lose quality?

Some, and it is not recoverable. JPEG is a lossy format: it throws away detail to get the size down, and converting again later compounds it. The quality slider controls how much. For a photograph 80 to 90 is usually indistinguishable; for a screenshot with sharp text, PNG or WebP will look better at any setting.

What quality should I pick for a JPG?

For a photograph, 80 to 90: below that the blocks and smearing start to show in skies and skin, above it the file grows a lot for little you can see. For a screenshot or anything with small text, 90 or more, because JPEG blurs the sharp edges of letters first. If it still looks rough at 95, the picture is one JPEG handles badly and PNG or WebP is the better format for it.

Why is my JPG bigger than the PNG was?

Because the picture is the kind PNG is good at: flat colour, a few shades, hard edges, like a logo, a diagram or a screenshot of a mostly white page. PNG stores runs of identical pixels almost for free, and JPEG does not. For those pictures keep the PNG, or convert to WebP, which is smaller than both.

Does converting remove the photo's metadata?

Yes. The picture is redrawn and encoded afresh, and the new JPG carries none of the PNG's text chunks or embedded data, which is also true of any camera information a PNG might have kept. Nothing is uploaded either way: the conversion happens in this tab, with the page forbidden by its own security policy from opening a connection.

PNG or JPG: what changes when you convert

PNGJPG
CompressionLossless: every pixel kept exactlyLossy: detail traded for size
TransparencyYes, full alphaNo: becomes white here
Best atScreenshots, logos, diagrams, textPhotographs
Size, for a photographLargeOften a third of the PNG or less
Size, for a flat graphicSmallOften larger, with fuzzy edges
Saving againNo lossA little more loss each time
Opens inEverythingEverything

The short version: convert a PNG to JPG when it is a photograph and the size matters, for an email attachment, an upload form with a limit, or a web page. Keep it as PNG when it has transparency, text or sharp lines, and keep the PNG you started from either way, since the JPG cannot be turned back into it.

The other conversions

The same tool opening on a different output format. Any of them will convert to any of the three once you are there.

Your data stays on your device

Everything above runs inside your browser as WebAssembly compiled from Rust. Nothing you type is uploaded, logged or stored on a server. You can load this page once, go offline, and it still works.

This page makes no requests at all, to anywhere. That is not a promise in the copy: it is a Content-Security-Policy header your browser enforces, and connect-src on it is none. Open the network tab and watch nothing happen.