🖼️→AVIF
Convert Any Image to AVIF
Upload JPG, PNG, HEIC, WebP, SVG, PSD, ARW, TIFF, GIF & more → high-quality AVIF instantly.
Best compression • Lossy or Lossless • 100% browser-based & private.
Learn more about convert image to avif.
⬆️
Drag & Drop or Click to Upload
Supports ALL common formats including HEIC, WebP, ARW, SVG & PSD*
📸 Original Image
✨ AVIF Result
78
đź“‹ How to Use This Tool
- Drag & drop your image or click the upload area to select a file (JPG, PNG, HEIC, WebP, ARW, etc.)
- Adjust the Quality slider (lower = smaller file, higher = better quality)
- Turn on Lossless Mode for perfect quality with no compression loss
- Click Convert to AVIF — conversion happens instantly in your browser
- Check the live size comparison and savings percentage
- Click Download .avif to save the converted file
*Note: AVIF encoding works best in Chrome, Edge & Opera (2026+). Firefox & Safari may show “not supported” for encoding.
File: ${file.name}
Size: ${(file.size / 1024 / 1024).toFixed(2)} MB
Type: ${file.type.split(‘/’)[1]?.toUpperCase() || file.type}
`;
converterArea.classList.remove(‘hidden’);
savingsLine.classList.add(‘hidden’);
avifPreview.src = ”;
avifStats.innerHTML = ”;
};
reader.readAsDataURL(file);
}
async function convertToAVIF() {
if (!selectedFile) return alert(“Please upload an image first”);
convertBtn.disabled = true;
convertBtn.innerHTML = ‘Converting to AVIF… ↻‘;
try {
const img = await loadImage(URL.createObjectURL(selectedFile));
const canvas = document.createElement(‘canvas’);
canvas.width = img.naturalWidth;
canvas.height = img.naturalHeight;
canvas.getContext(‘2d’).drawImage(img, 0, 0);
const quality = losslessToggle.checked ? 1.0 : (parseInt(qualitySlider.value) / 100);
canvas.toBlob(blob => {
if (!blob || blob.type !== ‘image/avif’) {
throw new Error(“AVIF encoding not supported in this browser”);
}
avifBlob = blob;
if (avifObjectURL) URL.revokeObjectURL(avifObjectURL);
avifObjectURL = URL.createObjectURL(blob);
avifPreview.src = avifObjectURL;
const origMB = (selectedFile.size / 1024 / 1024).toFixed(2);
const avifMB = (blob.size / 1024 / 1024).toFixed(2);
const savings = (((selectedFile.size – blob.size) / selectedFile.size) * 100).toFixed(1);
avifStats.innerHTML = `
AVIF Size: ${avifMB} MB
Mode: ${losslessToggle.checked ? ‘Lossless’ : `Lossy (${Math.round(quality*100)}%)`}
Resolution: ${img.naturalWidth} Ă— ${img.naturalHeight}
`;
savingsLine.innerHTML = `Original: ${origMB} MB → AVIF: ${avifMB} MB (-${savings}% savings)`;
savingsLine.classList.remove(‘hidden’);
downloadBtn.disabled = false;
convertBtn.disabled = false;
convertBtn.innerHTML = ‘Convert to AVIF →‘;
}, ‘image/avif’, quality);
} catch (err) {
console.error(err);
alert(“AVIF encoding failed.\n\nThis browser may not support AVIF encoding yet.\nTry Chrome / Edge / Opera (recommended).”);
convertBtn.disabled = false;
convertBtn.innerHTML = ‘Convert to AVIF →‘;
}
}
function loadImage(src) {
return new Promise((resolve, reject) => {
const img = new Image();
img.onload = () => resolve(img);
img.onerror = () => reject(new Error(“Failed to load image”));
img.src = src;
});
}
function downloadAVIF() {
if (!avifBlob) {
alert(“Please convert first”);
return;
}
const url = URL.createObjectURL(avifBlob);
const a = document.createElement(‘a’);
a.href = url;
a.download = (selectedFile.name || ‘image’).replace(/\.[^.]+$/, ”) + ‘.avif’;
document.body.appendChild(a);
a.click();
setTimeout(() => {
document.body.removeChild(a);
URL.revokeObjectURL(url);
}, 100);
}
function resetAll() {
if (avifObjectURL) URL.revokeObjectURL(avifObjectURL);
selectedFile = null;
avifBlob = null;
avifObjectURL = null;
fileInput.value = ”;
converterArea.classList.add(‘hidden’);
savingsLine.classList.add(‘hidden’);
origPreview.src = ”;
avifPreview.src = ”;
origStats.innerHTML = ”;
avifStats.innerHTML = ”;
downloadBtn.disabled = true;
}
qualityValue.textContent = qualitySlider.value;
Latest posts by allbesttool.com (see all)
- Why Ziptie? On Choosing a Search Performance Tool - February 8, 2026
- AdSense Approval Checker tools - May 23, 2024
