✓ EXIF, GPS and all other metadata are removed from the output.
Drop images here
or click to browse — PNG, JPEG, WebP, GIF, HEIC, AVIF, SVG — you can also paste images (Ctrl+V) anywhere on this page
Get an AVIF into a file every program on your machine will open — with the alpha intact and no further quality lost.
Your files never leave your browser — all processing is local.
✓ EXIF, GPS and all other metadata are removed from the output.
Drop images here
or click to browse — PNG, JPEG, WebP, GIF, HEIC, AVIF, SVG — you can also paste images (Ctrl+V) anywhere on this page
Bit depth is the loss nobody expects from a lossless target, and it is the most consequential one here. The source format is specified for 10- and 12-bit samples with an HDR transfer function; the conversion ends in an 8-bit buffer whichever of the two decode paths runs. The browser's own decoder draws into an 8-bit canvas, and the bundled WASM fallback returns 8-bit ImageData. So the output is lossless with respect to those eight bits and nothing beyond them: a gradient that was perfectly smooth in a 10-bit source can show visible stepping in a file three or four times its size. If the picture is an HDR grade, that range is not merely compressed — it is gone before the encoder starts.
Animation stops at the first frame. A multi-frame source is detected, the remaining frames and their timing are discarded, and the converter warns that only one frame was converted, because this route writes a plain single-image file rather than an APNG. Two details are worth knowing about the decode itself. The browser is asked first; if it cannot decode the format at all, a WASM AV1 decoder is loaded and a note tells you the fallback ran — which means the conversion works even where the file cannot be displayed. On that fallback path the converter reads the irot and imir orientation properties out of the container itself and applies them, because the WASM decoder returns the picture unrotated.
Alpha survives in full, with no background color applied anywhere, and no further quality is lost from this point on. That last point is worth stating precisely: lossless describes what happens from here, not what happened before. Whatever the original encoder smoothed away, the haloes it left at high-contrast edges and any film grain it synthesized are now the picture, and they are recorded exactly and permanently.
On 2026-09-12 the script measured a 1280 × 854 source at quality 85, 491,861 bytes, decoded it and wrote PNG with "optimize (oxipng)" on: 1,823,978 bytes, about 3.7 times as large. Two things inflate that ratio. Lossless storage of a photograph is simply expensive, and the compressor must now record the previous encoder's smoothing and ringing as though they were detail, and those resist prediction just as much as real texture does. The measurement had "optimize (oxipng)" on, while that checkbox is off by default — leave it off and the browser's own encoder will usually produce something a little larger still. Flat illustrations and screenshots grow far less, because row filters and palette reduction have something to work with.
Do not do it to publish. The source was already the small one; this multiplies the bytes and adds nothing, and if some client cannot read it, a JPG fallback costs a fraction of what this does. Do not do it for archiving: the result is not more faithful to the scene than the file it came from, only larger, and it has lost the metadata an archive would be indexed by. Do not do it hoping to recover detail, sharpness or dynamic range. Do not run it over a folder of 12-megapixel photos unless you have the disk space for tens of megabytes each. It is exactly right when a desktop editor, an office suite, a print pipeline or an upload form refuses the source outright, when transparency has to survive that handover, or when you want a stable intermediate you can edit and re-save repeatedly at no further cost.
Conversion happens entirely in your browser — no upload, no queue, no watermark. Drop in as many files as you like and download them individually or as a zip.
Because the source may have stored 10 or 12 bits per channel and the decode path here ends at 8. The extra levels that made the gradient continuous are quantized away before encoding, and a lossless format can only preserve exactly the values it was handed, not the ones it never saw.
Yes. The browser's own decoder is tried first, and when it refuses, a bundled WASM AV1 decoder takes over and a note tells you it did. On that path the orientation properties are read from the container and applied by hand, so the result still comes out the right way up.
No. It means nothing further is lost from this point on. The smoothing, edge haloes and any synthesized grain left by the original encoder are recorded exactly, so you get a faithful — and much larger — copy of an approximation, not a restoration of the original scene.
No. Conversion happens inside your browser using the canvas API and a Web Worker — files never leave your device. There is no upload step, no queue and no file size limit beyond your machine's memory.
No — and that's a feature. Re-encoding through the canvas strips all metadata: GPS location, camera model, timestamps and color profiles. The output contains pixels only, which is usually what you want before sharing an image publicly.
Yes. Drop or paste any number of files; each is converted in the background with its own progress and download button, and you can grab everything at once as a .zip archive.
It depends on the target. The converter always decodes to raw pixels and re-encodes, whichever formats are involved, which is also how metadata gets stripped. For lossless targets (PNG, and GIF within its 256-color limit) the pixels stay identical to what was decoded; for JPEG, WebP and AVIF the quality slider controls the trade-off, and converting a file that is already lossy adds one more generation of loss.