AVIF to ICO Crop Converter
Load an AVIF image, drag the crop handles to define exactly the area you need, preview the result, then download an ICO icon file. Everything runs in your browser — your image never leaves your device.
Drop an AVIF here
or Browse Files · AVIF supported
What This Tool Does
This tool loads an AVIF image directly in your browser, presents an interactive crop overlay with draggable handles, and converts the selected area to an ICO file. No server upload is required. The full workflow — loading, cropping, encoding — runs entirely in client-side JavaScript using the HTML5 Canvas API. AVIF files use AV1 compression that requires full pixel decoding before the canvas can draw them; this tool uses createImageBitmap() to guarantee the decode is complete before drawing, preventing the silent blank-canvas problem that affects standard Image element loading with AVIF. The output is an ICO file with an embedded PNG image, compatible with Windows Vista and later, all major browsers for favicon use, and any icon-aware application.
Who This Is For
- Web developers who have AVIF source artwork and need a cropped favicon in ICO format
- Designers preparing Windows application icons from next-gen AVIF source files
- Anyone converting a specific region of an AVIF photo to an icon without installing software
- Developers who need a quick crop-and-convert workflow that stays entirely in the browser
AVIF vs ICO: Format Comparison
| Property | AVIF | ICO |
|---|---|---|
| Primary use | Web images, photos | Application icons, favicons |
| Compression | Lossy or lossless (AV1) | PNG or BMP embedded (varies) |
| Transparency support | Yes (alpha channel) | Yes (32-bit RGBA) |
| Multiple sizes in one file | No | Yes — standard for icons |
| Browser favicon support | Limited (not universal) | Universal — every browser |
| Windows icon support | No | Yes — native |
| Typical file size | Very small (best compression) | Small (PNG-embedded) |
| Best for | Web delivery, high-quality photos | Favicons, Windows icons, app icons |
Frequently Asked Questions
new Image() and FileReader.readAsDataURL(), the browser fires the onload event before the AV1 pixel decoding completes. Calling ctx.drawImage() at that point silently draws a blank canvas — no error, no warning, just empty output. createImageBitmap(file) is a Promise that resolves only after the full pixel decode is ready, so the canvas always receives real pixel data.createImageBitmap support automatically.