Batch-convert and compress JPEG, PNG, WebP, AVIF, SVG, TIFF and camera RAW files with pinned local codecs, workers and measured results.
Choosing a format, and what "quality" actually costs you
Four raster formats cover most web delivery, while sanitized SVG output preserves safe vector source. Picking the right output matters more for file size than any slider.
JPEG is built for photographs. It throws away detail your eye is unlikely to miss, which is why a photo saved as JPEG is a fraction of the size of the same photo as PNG. It cannot store transparency, and it is lossy at every quality setting - there is no such thing as a lossless JPEG here.
PNG is built for flat graphics: screenshots, logos, diagrams, anything with sharp edges or large areas of one colour. Its encoder is lossless, so it stores exactly the pixels it is given, and it supports transparency. Save a photograph as PNG and you will usually get a file several times larger than the JPEG for no visible gain.
WebP usually beats JPEG for a similar visual quality and can preserve transparency. AVIF can be smaller again, but its local encoder takes longer. Both outputs are lossy in this studio.
The quality slider applies to JPEG, WebP and AVIF. Around 80 is a useful starting point for photographs, but the honest way to choose is to inspect the measured output, SSIM and PSNR values, then adjust.
Add as many as 50 files, up to 100 MB each. Everything is read locally; nothing is uploaded.
Pick PNG, JPEG, WebP, AVIF or safe SVG output. The panel tells you whether that operation is lossy and why.
Resize by percentage, exact pixels or a social preset, with the aspect ratio locked unless you deliberately unlock it.
Keep Privacy Clean enabled to emit a fresh encoded file without source metadata.
Inspect real before and after bytes, pixel metrics and the comparison view, then download one result or stream the batch as a ZIP where File System Access is available.
Why repeated editing degrades an image, and how to avoid it
Every time a lossy image is decoded and saved again, the encoder makes a fresh set of approximations on top of the approximations already baked into the pixels. This is called generation loss, and it compounds. Open a JPEG, save it, open that, save it again, and repeat: after enough rounds the result is visibly mottled, especially around text and sharp edges.
This matters because it is easy to do by accident. Cropping a photo in one app, resizing it in another and exporting it from a third can put three rounds of JPEG encoding into a file that only needed one.
The way to avoid it is to keep your original and always re-edit from that, rather than from the last export. If you need an intermediate working file, use PNG, because its encoder is lossless and will not add another round of loss. Then make the lossy export once, at the end, from the original.
Converting a JPEG to PNG does not undo anything. The detail the JPEG discarded is gone, and the PNG will faithfully preserve the degraded pixels in a much bigger file. PNG is the right choice for a working copy of something you are still editing, not a repair tool for something already compressed.
Resizing is worth understanding too. Making an image smaller resamples it, which changes pixel values even when the output format is lossless, and the discarded detail cannot be restored by enlarging it again. Enlarging beyond the original dimensions never adds real detail; it only interpolates what is already there.
Frequently asked questions
Are my images uploaded to a server?
No. Pinned codecs, the RAW decoder, resizer and batch workers run on this device. File bytes, names and conversion settings are not sent to analytics or an image service.
Is any conversion here lossless?
PNG encoding is lossless, provided you do not also resize. Safe SVG cleanup keeps vector geometry but removes active and external content. JPEG, WebP and AVIF outputs are lossy, and any resize resamples pixels regardless of output format.
Why did my file get bigger instead of smaller?
Usually because you converted a photograph to PNG, which stores every pixel exactly and cannot compete with JPEG or WebP on photographic content. It can also happen if you raise quality above the level the original was encoded at. The tool reports the real measured sizes either way rather than hiding growth.
What quality setting should I use?
For photographs, around 80 is a useful starting point. Compare measured bytes and perceptual metrics at a couple of settings rather than trusting one rule, because the right answer depends on the image and output codec.
What happens to transparency when I export to JPEG?
JPEG cannot store an alpha channel, so transparent areas are filled with the background colour you choose before encoding. The default is white. If you need transparency, use PNG or WebP.
Can I convert animated GIFs?
GIF is accepted as input, but only its first frame is used and animation is not preserved. GIF is not offered as an output format, because producing a still image with a .gif extension would be misleading.
How many images can I convert at once?
A queue is limited to 50 items and each file is limited to 100 MB. Processing is local, so high-resolution RAW batches on a phone can still be slow. The tool applies a device-aware pixel budget before allocating an unsafe canvas.
Does this remove EXIF metadata?
Yes when Privacy Clean is enabled. Raster exports are freshly encoded from decoded pixels, and sanitized SVG exports remove editor metadata, scripts, event handlers and unsafe external references.
Which RAW files can I open?
The local LibRaw worker accepts DNG, CR2, CR3, NEF, ARW and RW2 inputs, plus TIFF. Camera variants outside those families can still be unsupported, and very large RAW files are subject to the same 100 MB and device-memory limits.
What this tool will not do
HEIC is not supported. The local RAW/TIFF decoder covers DNG, CR2, CR3, NEF, ARW, RW2 and TIFF, but some camera-specific variants can still fail to decode.
GIF is decode-only and single-frame: animation is lost, and GIF is not available as an output format.
JPEG, WebP and AVIF exports are lossy at every quality setting. PNG output without a resize is lossless, and SVG cleanup preserves vector geometry while removing unsafe content.
The bundled JPEG encoder uses MozJPEG 4.1.5. Byte-for-byte equality with a different option set is not claimed.
WebAssembly support is required for raster encoding, RAW/TIFF decoding and high-quality resizing. An unsupported browser reports an error rather than silently using a different codec.
Very large images are clamped to a safe pixel budget for your device, so an extremely large output may come back smaller than requested. The tool says so when this happens.
A queue is limited to 50 files and each source is limited to 100 MB. Available memory can make a high-resolution batch slow or cause an individual conversion to fail.
Colour profiles are not preserved through the canvas, so images with an unusual embedded profile may shift slightly in colour.
Privacy Clean removes source metadata by emitting a fresh raster encoding or a sanitized SVG. It does not erase metadata from the original file.
The ZIP streams directly to a selected file in browsers with File System Access support. Other browsers use a bounded 256 MB in-memory fallback and store already-compressed image entries without another compression pass.