The AVIF Converter runs entirely in your browser. When you add an image it is never uploaded anywhere – all decoding and encoding happens on your own machine using WebAssembly builds of the same encoders professional tools use (libavif, libwebp, MozJPEG, OxiPNG and libjxl). That makes the tool both private and fast, and it is why you get full access to the encoders' real parameters.
1. Quick start
Drag in or click to choose. Multiple files at once works.
AVIF, WebP, JPEG, PNG or JPEG XL. The parameters below the buttons change per format.
Adjust quality and the other controls. The result updates automatically.
Compare before/after, zoom in, and download individually or as a ZIP.
2. Files in and out
Reads: JPG, PNG, WebP, GIF, AVIF, BMP, HEIC/HEIF (iPhone photos), JPEG XL and TIFF. Writes: AVIF, WebP, JPEG, PNG and JPEG XL.
- HEIC, JPEG XL and TIFF are decoded with self-hosted libraries that load the first time you open such a format. Everything else is decoded by the browser itself.
- EXIF rotation is applied automatically so portrait photos are oriented correctly.
- Metadata is stripped – the finished file contains no EXIF, GPS location or similar.
- Transparency is kept for AVIF, WebP, PNG and JPEG XL. JPEG has no transparency and is always flattened onto a white background.
.heic/.heif images – they are converted to JPEG, AVIF, WebP, PNG or JPEG XL locally in your browser, with no upload and no extra app.3. Shared settings
Three controls apply regardless of format and sit below the parameter panel:
| Setting | What it does |
|---|---|
| Target size (KB) | Enter e.g. 200 and the tool automatically finds the highest quality whose file fits under the limit (a binary search over the quality value). Leave empty to control quality yourself. Only shown for lossy modes – not for PNG or lossless WebP/AVIF. |
| Max width (px) | Limits the image width. The image is scaled down proportionally so the width never exceeds the value. Leave empty for the original width. |
| Max height (px) | Limits the height the same way. If you set both width and height, the image is scaled to fit within both, keeping its proportions. Never upscales. |
4. Preview & comparison
Below each image is an interactive comparison between the original (left) and the result (right):
- Drag the centre handle to wipe between original and converted.
- Fit fits the image to the window. 1×, 2×, 4×, 8× are real pixel zoom – at 1× one image pixel equals exactly one screen pixel, so you see compression artefacts at true scale. If the image is larger than the window you can drag to pan. You can also zoom with the mouse wheel.
- The background swatches (only shown if an image has transparency) change the backdrop behind the image – transparent (checkerboard), black, white or a custom colour (click the pencil swatch or paste a HEX value). Use them to inspect how the alpha channel compressed, e.g. fringing around edges.
- The expand button (⤢) opens the comparison full-screen with quick sliders for the most important parameters.
- Rotate the original with the ↺ (counter-clockwise) and ↻ (clockwise) buttons on each image. Rotation is in 90° steps, baked into the output file, and the image re-converts immediately – handy because EXIF rotation is stripped on export.
- The pencil icon next to the file name lets you rename it, and ✕ removes a single image. When a naming scheme is active (see Filenames & list), the final export name is shown on a
→line under the file name.
5. AVIF
AVIF (libavif/AV1) usually produces the smallest files at a given visual quality and supports transparency and high bit depth. Best for the web when maximum compression is the goal.
| Setting | What it does | Tips |
|---|---|---|
| Lossless | Encodes pixel-perfect with no quality loss. Produces much larger files. | Only for graphics that must be exact. Leave off for photos. |
| Quality (0–100) | Higher = better image and larger file. | 40–60 is usually enough for web photos. Default 50. |
| Effort (0–10) | How hard the encoder searches for the best compression. 10 = best but slowest, 0 = fastest. At the same quality setting, higher effort gives a clearly better result: a smaller file and/or noticeably better image quality, because the encoder can use more tools. Low effort takes shortcuts that can be clearly visible. | Raise for final export, lower while experimenting. |
| Chroma subsampling (advanced) | How much colour information is discarded. 4:2:0 = smallest file, 4:4:4 = full colour. | Use 4:4:4 for screenshots, logos and text with sharp colour edges. |
| Bit depth (advanced) | Bits per colour channel. 10/12-bit reduces visible banding in smooth gradients. | 8-bit for normal web use; 10-bit for skies/gradients. |
| Alpha quality (advanced) | Separate quality for the transparency channel. −1 = same as image quality. | Leave at −1 unless you see edge problems. |
| Sharpness (advanced) | Sharpens the image (0–7) before encoding. | 0 in most cases. |
| Denoise level (advanced) | Smooths noise (0–50). Can give a smaller file but a softer image. | Go easy – high values blur detail. |
| Tune (advanced) | What the encoder optimises for: Auto, PSNR (measurable accuracy) or SSIM (perceived quality). | SSIM often looks best. |
| Chroma delta-Q (advanced) | Spends more bits on colour where the eye is sensitive. | Can help saturated colours. |
| Sharp YUV (advanced) | Better colour edges when subsampling is used. | Turn on with 4:2:0 and sharp edges. |
| Tile cols/rows (log2) (advanced) | Splits the image into tiles for parallel de/encoding. | Almost never needed – leave 0. |
6. WebP
WebP is a good middle ground: smaller files than JPEG/PNG and support in every modern browser. It has both a lossy and a lossless mode.
| Setting | What it does | Tips |
|---|---|---|
| Lossless | Encodes exactly (like PNG). Best for graphics and sharp edges with transparency. | For photos: leave off and use quality. |
| Quality (0–100) | In lossy mode: image/size balance. In lossless mode: how much effort goes into compression. | Default 75. |
| Method (0–6) | Compression effort. 6 = smallest file but slowest, 0 = fastest. | 4 is a good balance; raise for export. |
| Near-lossless (0–100) | Shown in lossless mode. 100 = off. Lower values pre-process the image for a noticeably smaller file with near-invisible loss. | 60–80 often saves a lot on graphics. |
| Alpha quality (0–100) | Quality of the transparency channel. | Lower for a smaller file if the edges can take it. |
| SNS strength (advanced) | Spatial noise shaping – distributes bits where the eye notices most. | Default 50. |
| Filter strength / sharpness / type (advanced) | Controls the deblocking filter that smooths block edges. | Defaults work almost always. |
| Auto filter (advanced) | Lets the encoder pick the filter strength automatically. | – |
| Segments (1–4) (advanced) | Number of regions the image is split into for different treatment. | 4 (default). |
| Passes (1–10) (advanced) | More analysis passes can improve bit allocation when targeting a size. | 1 is usually enough. |
| Preprocessing (advanced) | None, segment smoothing or pseudo-random dithering before encoding. | Dithering can hide banding. |
| Partitions / Partition limit (advanced) | Data partitioning for decoding and a limit on size per partition. | Leave 0. |
| Alpha compression / filtering (advanced) | Whether and how the transparency channel is compressed/filtered. | Default. |
| Image hint (advanced) | Hints the encoder about image type (photo, picture, graph). | "Photo" for photographs. |
| Sharp YUV (advanced) | Sharper colour edges when subsampling. | Turn on for sharp text. |
| Exact (advanced) | Preserves RGB values even in fully transparent pixels. | Only if hidden RGB data matters. |
| Emulate JPEG size / Low memory / Delta palette (advanced) | Special flags for compatibility, memory use and palette images respectively. | Leave off normally. |
7. JPEG
JPEG (via MozJPEG) is universally compatible and best for photographs where transparency isn't needed. The encoder is unusually capable and exposes trellis optimisation among other things.
| Setting | What it does | Tips |
|---|---|---|
| Quality (0–100) | Image/size balance. | 75–85 for photos. Default 75. |
| Progressive | The image loads gradually sharper and is often slightly smaller. | Leave on for the web. |
| Auto chroma subsampling | Lets the encoder pick subsampling based on quality. | On by default. |
| Chroma subsampling (1–4) | Shown when auto is off. 2 = 4:2:0 (smallest file), higher keeps more colour. | Raise for images with sharp colour edges. |
| Optimize coding (advanced) | Builds optimal coding tables – smaller file with no quality loss. | Leave on. |
| Baseline (advanced) | Forces the simplest JPEG variant (opposite of progressive). | Only for very old systems. |
| Arithmetic coding (advanced) | Smaller file but not supported by all software. | Avoid for sharing. |
| Smoothing (0–100) (advanced) | Softens the image before encoding; can hide noise/banding. | 0 in most cases. |
| Colour space (advanced) | Grayscale, RGB or YCbCr. | YCbCr for colour photos; Grayscale for black & white. |
| Quant table (0–8) (advanced) | Different models for how detail is prioritised (e.g. PSNR-HVS, ImageMagick). | 3 (ImageMagick) is a good default. |
| Trellis quantisation (advanced) | Multipass, optimise zeros/table and loop count – fine-searches the best quantisation for a smaller file. | Turn on multipass for final export. |
| Separate / Chroma quality (advanced) | Lets you set a separate quality for the colour channels. | Lower chroma quality for a smaller photo file. |
8. PNG
PNG is lossless and best for graphics, screenshots and images with sharp transparency. Optimised with OxiPNG. Since the encoder has no quality slider, you control size via bit depth and optimisation level.
| Setting | What it does | Tips |
|---|---|---|
| Transparency | On = keep the alpha channel. Off = flatten the image onto a white background (smaller file, no transparency). | Turn off if you want a solid PNG. |
| Bit depth (per channel) | Fewer bits per channel = fewer colours = smaller file. Done via posterisation (8 → 1 bits). | 4-bit is often enough for simple graphics; 8-bit for photos/gradients. |
| Optimisation level (OxiPNG 0–6) | How hard the file is shrunk losslessly. Higher = smaller file but slower. | 2 is a good balance; 4–6 for final export. |
| Interlace (Adam7) (advanced) | Progressive PNG that loads gradually. Usually a slightly larger file. | Leave off unless you need it. |
| Optimise alpha (advanced) | Clears hidden colour values in fully transparent pixels for a smaller file. | Safe to turn on. |
9. JPEG XL
JPEG XL (libjxl) is a modern format with very efficient compression, transparency support and both lossy and lossless modes. Note: most browsers cannot yet display .jxl (only Safari 17+), so it is mainly useful for archiving or future use. In the app the result is decoded back so the preview still works.
| Setting | What it does | Tips |
|---|---|---|
| Lossless | Encodes pixel-perfect with no quality loss. Larger files. | For graphics that must be exact. Leave off for photos. |
| Quality (0–100) | Higher value = better image and larger file. | Default 75. 70–85 is usually enough for photos. |
| Effort (1–9) | How hard the encoder works. 9 = best but slowest, 1 = fastest. | Default 7. Raise for final export. |
| Progressive (advanced) | The image can be shown progressively sharper while loading. | Optional. |
| Lossy modular (advanced) | Uses the modular mode instead of VarDCT. Can be better for graphics/non-photo. | Leave off for ordinary photos. |
| Edge-preserving filter (−1–3) (advanced) | Smooths block edges. −1 = auto. | Leave at −1. |
| Decoding speed tier (0–4) (advanced) | Optimises the file for faster decoding at the cost of quality. 0 = best quality. | Leave at 0 unless you have specific needs. |
| Photon noise (ISO) (advanced) | Adds synthetic film grain on decode, which can shrink the file for noisy photos. | 0 in most cases. |
10. Filenames & list
The “Filenames & list” panel (below the download buttons once you’ve added images) generates a live-updating list of the finished filenames and at the same time controls the names used for downloads and in the ZIP. Everything can be combined:
| Feature | What it does |
|---|---|
| Prefix | Text before the name. A path such as images/ creates a folder inside the ZIP. |
| Suffix | Text after the name, before the extension (e.g. -web). |
| Find & replace | Replaces text in the name. With Regex enabled the find field is treated as a regular expression, and groups can be reused in the replacement with $1, $2 … |
| Sequential number | Off, Append (photo-01, photo-02 …) or Replace name (a shared base name + number). Set the start, number of digits and separator. |
| Lowercase / Spaces → dashes | Web-friendly filenames. |
In the prefix, suffix and base name you can use placeholders that expand per file:
{name}– the original filename{n}– the running number (with the chosen padding){w}/{h}– the output width and height in pixels{format}– the file extension (avif/webp/jpg/png){date}– today’s date (YYYY-MM-DD)
The list can be copied with one click or downloaded as a .txt file. If the panel is left untouched, the images keep their normal names – nothing changes.
11. Which format should I choose?
| Format | Best for | Characteristics |
|---|---|---|
| AVIF | Web, maximum compression | Smallest file size, transparency, high bit depth |
| WebP | Web with broad compatibility | Good compression, lossless mode, transparency |
| JPEG | Photos, universal compatibility | No transparency |
| PNG | Graphics, screenshots, sharp transparency | Lossless, larger files |
| JPEG XL | Archiving and future-proofing | Very efficient, transparency, but only displays in Safari 17+ so far |
12. Colour & privacy
Colour management: images are converted to sRGB during processing (the browser's working canvas is sRGB), and the finished file contains no embedded colour profile. That's the right web default and matches Photoshop's "Convert to sRGB" – colours display consistently across browsers. Wide gamut (Display P3) is therefore not preserved.
Privacy: no images, no settings and no statistics leave your machine. There is no server, no login and no tracking. Everything – code, WebAssembly encoders and fonts – is served from the same domain, so once the page has loaded no third-party requests are made at all.