KBSnap

Convert PNG to JPG

PNG → JPG usually cuts the file by 70–90%

  • No upload
  • Exact target size
  • Batch ready

Drag images here, or click to choose

JPG / PNG / WebP / HEIC · up to 25MB each · batch supported

Files never leave your device — everything runs in your browser.

Quality (lossy targets)
92%
Background for transparency
Remove EXIF / GPS

What changes in a PNG → JPG conversion

This is the right direction for photographs and screenshots of photos, and the wrong direction for logos, icons and anything with a transparent background. If the source has alpha, pick a background colour first — white is the safe default, black is almost always a mistake.

What you lose

  • Transparency (filled with your chosen background colour)
  • Exact pixel values — JPG is lossy
  • Sharp edges on text and line art

What survives

  • Colour profile, converted to sRGB
  • The full pixel dimensions

Transparent pixels need a colour

JPG has no alpha channel, so every transparent pixel becomes a solid colour. White is the safe default for documents and print; pick the exact page colour if the image will sit on a coloured background. Skipping this step is why converted logos come out with black boxes.

Batch conversion

Drop a folder and every supported file is converted with the same settings. Progress is per file, failed files are retryable, and the whole set downloads as one ZIP. Nothing is queued on a server, so there is no upload time and no retention window.

Frequently asked questions

Does converting PNG to JPG reduce quality?
Slightly. The image is decoded once and re-encoded once, which is one generation of loss. Set quality to 90 or higher to keep it invisible.
How many files can I convert at once?
Up to 200, with 4 concurrent workers. Each file keeps its own name, with the new extension appended.
Why does my PNG file fail to open?
The file may be corrupt, or it may be a format the browser cannot decode natively (TIFF, for example). Re-export it from the app that created it.
Are my files uploaded?
No. The conversion runs on a worker thread inside your tab. You can verify in DevTools → Network: dropping a file produces no request.

Related sizes & tools