Skip to main content

PNG to JPG converter

Convert PNG images to JPG format

No watermarkFree & unlimited
All processing happens in your browser. No data is sent to any server.

PNG stores every pixel exactly and carries an alpha channel; JPG approximates detail in 8x8 blocks and has no alpha at all. This page bridges the two by decoding your PNG with the browser's own decoder, painting a white rectangle onto a canvas, drawing the PNG over it and re-encoding that canvas as JPEG at the quality you pick. The white step is the part people are surprised by: anything transparent comes out solid white rather than see-through. The rest is a straight trade of file size against block artifacts, and the slider decides where you land.

Key facts about PNG to JPG converter

Key facts about PNG to JPG converter
What changesPNG's lossless deflate stream is discarded and the pixels are re-encoded as JPEG DCT blocks - a re-encode, not a repackage.
TransparencyThe canvas is filled #FFFFFF before your PNG is drawn, so transparent pixels become white and semi-transparent ones become colour blended into white.
Quality settingThe 30-100 slider is handed straight to the JPEG encoder; 90 is the default and keeps screenshot text readable.
Typical size deltaA 1920x1080 interface screenshot of roughly 450 KB as PNG lands near 150-220 KB as JPG at quality 90.
Worst case for JPGSharp text, hairlines and flat colour blocks pick up ringing halos along their edges - the screenshot-saved-as-JPEG look.
MetadataNo EXIF, ICC profile or XMP packet reaches the JPG; the encoder starts from bare canvas pixels.
Optional downscaleMax-dimension presets of 3840, 2560, 1920, 1280, 800, 480 and 200 px resize before encoding, which saves more bytes than lowering quality.
Size ceiling500 MB per file on paper, but the canvas is the real limit - Chrome stops near 16,384 px on a side and iPad Safari much earlier.

What happens to your file

Your PNG becomes a blob: URL, an <img> element decodes it with the browser's built-in PNG decoder, a <canvas> in this tab receives the pixels, and canvas.toBlob with the image/jpeg type produces the result. Those are four browser APIs running on your own CPU: no Pages Function, no API endpoint, no request carrying image bytes anywhere. The download link points at another blob: URL in the same tab, and a multi-file ZIP is assembled in page memory.

About this tool

  1. 1

    Add the PNG files

    Drop up to 20 PNGs or browse for them. Anything that is not .png is rejected with a toast before decoding starts.

  2. 2

    Set the quality

    The slider starts at 90. Under about 70 the blocking shows on flat backgrounds; over 95 the file grows fast for almost no visible gain.

  3. 3

    Downscale if the target has a size cap

    Halving the longest side removes roughly three quarters of the pixels, which beats any quality reduction.

  4. 4

    Convert, then check the white areas

    Open the side-by-side view and confirm nothing you wanted transparent turned into a white box, then download the .jpg or the ZIP.

Specs & compatibility
Input and outputTakes .png only (image/png) and returns .jpg with the image/jpeg type; any other extension is refused before decoding.
Conversion pathPNG to JPG runs in three steps: an <img> element hands the file to the browser's own PNG decoder; the pixels land on a 2D canvas in this tab; then canvas.toBlob with the image/jpeg type returns the finished file.
Browser supportThe PNG side decodes in every browser ever shipped, while writing the JPG is just as universal, since every canvas implementation encodes JPEG.
Controls for this pairA 30 to 100 quality slider (steps of five, default 90) drives the JPG encode, max-dimension presets from 3840 down to 200 px resize the PNG first, and the strip-metadata toggle is moot on this pair.
Batch, caps and namingTwenty PNG files per run at 500 MB each; one result downloads as a single JPG, several as converted-jpg-files.zip, zipped by JSZip 3.10 in page memory.
Device ceilingThe canvas caps it: past roughly 16,384 px a side Chromium refuses the bitmap and iPhone Safari gives up sooner, so an oversized PNG fails before any JPG bytes exist.
  • A logo on a transparent background will show a white rectangle on any coloured page - keep the PNG for that, or convert to WebP instead.
  • A photo exported as PNG by a design tool is the ideal input here: PNG is storing camera noise losslessly and JPG discards precisely that.
  • The estimated output under the slider is a rough curve; the measured size appears beside the result after conversion.
  • If EXIF or the embedded ICC profile has to survive, this canvas route cannot deliver it - only pixels cross into the JPEG.
  • Shrinking a folder of PNG screenshots before attaching them to a bug report or a mail thread with a size cap.
  • Meeting an upload form that accepts JPG only, such as older job portals and some print-order sites.
  • Getting design-tool PNG exports of photographs down to a size a CMS will accept.
Yes, and it replaces it with white rather than leaving it undefined. The canvas is painted #FFFFFF before your image is drawn, so a transparent background becomes a white background and a soft shadow becomes that shadow blended into white. When the transparency matters, convert the PNG to WebP or AVIF instead - both keep the alpha channel.
Almost always, and the gap widens with photographic content. A flat two-colour icon is the rare case where PNG wins, because deflate compresses long runs of identical pixels better than DCT blocks do. For screenshots, gradients and camera images, expect a third of the PNG size or less at quality 90.
Leave it at 90 unless you have a reason. Drop to 75-80 when the file must fit a hard size cap and the content is photographic. Below 60 is thumbnail territory only, because the block edges start showing on any flat area of colour.
You can, but the original pixels are gone. The JPG already discarded detail, so a PNG made from it is a lossless copy of a lossy image: identical artifacts, much bigger file. Keep the source PNG.
No. Decode, white fill, draw and JPEG encode are all browser calls inside this tab, and the result is a local blob: URL. Disconnect from the internet once the page has loaded and the conversion still works.
That is the fill doing its job. A JPEG file has no way to mark a pixel transparent, so something must sit behind the logo, and white is the least surprising choice. For a logo that has to sit on a coloured surface, PNG, WebP or SVG are the right formats.
View all

Need the opposite? Try JPG to PNG

Updated

We use anonymous analytics to improve ToolChamp. No personal data is stored or sold. Privacy Policy