Convert between PNG, JPEG and WebP

Change an image’s format, with a plain statement of what that format can and cannot store

The tool loads here. It needs JavaScript, because the work happens on your device.

Your files and your privacy

Your images are never uploaded. Each file is read into this browser tab, decoded and re-encoded by the browser’s own image pipeline inside a Web Worker, and handed back as a download. The page’s Content-Security-Policy restricts connect-src to this origin, so the browser itself would block an upload even if the code attempted one.

What this tool does

Convert an image from one format to another using the encoders your browser already ships with. PNG, JPEG and WebP can be written; JPEG, PNG, WebP and GIF can be read. Before anything is written, the panel states whether the conversion is lossy and what will happen to transparency.

Converting decodes your picture into plain RGBA pixels and asks a different encoder to write them out again, which means a conversion carries only what the destination format can represent. PNG is written by a lossless encoder and keeps an alpha channel. JPEG is lossy at every setting and has no alpha at all, so transparent pixels are flattened onto a background colour you pick before encoding. WebP keeps alpha but is written in lossy mode by the browser, even at quality 100. The panel names each of those consequences for the exact conversion you asked for.

How to use it

  1. Choose the image, or several images, that you want to convert.
  2. Pick the output format. The note under the picker describes what that encoder does with detail and with transparency.
  3. If you chose JPEG, set the background colour that transparent areas will be flattened onto. It starts at white.
  4. Select Convert and read the warning panel, which lists every consequence of this particular conversion.
  5. Download the converted file, or a ZIP when you converted more than one.

Example use cases

Supported input and output

Accepts

Produces

What this tool will not do

Common mistakes

Technical notes

Decoding uses createImageBitmap, which handles every input type the browser can read and behaves identically inside a Web Worker. The bitmap is drawn once into an OffscreenCanvas and encoded by the browser through convertToBlob, with canvas.toBlob as the fallback. Because a canvas holds nothing but RGBA pixels, anything a source format carried beyond pixels survives only if the destination encoder can represent it: for a format without an alpha channel the canvas is filled with your chosen matte colour before the bitmap is drawn, which is why transparency becomes a flat colour rather than black in one browser and white in another.

Frequently asked questions

Which conversions are lossless?
Only writing to PNG, and only when you do not also change the pixel dimensions. Every JPEG export is lossy, WebP is lossy in the browser encoder at any quality, and any resize resamples the image regardless of format.
What happens to transparency when I convert to JPEG?
JPEG has no alpha channel, so every transparent pixel is filled with the background colour you choose before encoding. If you need to keep transparency, convert to PNG or WebP instead.
Can I convert HEIC photos from an iPhone?
No. HEIC and HEIF are not accepted, and neither are AVIF, TIFF or camera RAW, because a browser cannot decode them without help from the operating system. Export a JPEG from your phone first.