AVIF to TIFF Crop Converter
Load an AVIF image, drag the crop handles to define exactly the area you need, preview the result, then download a lossless TIFF. 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 a lossless TIFF 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 img.decode() 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 uncompressed 24-bit RGB TIFF, the format expected by professional print workflows, photo editing software, and archival systems.
Who This Is For
- Photographers who need to deliver a specific cropped region of an AVIF as a TIFF for print production
- Designers converting next-gen AVIF source artwork to TIFF for press workflows that require TIFF input
- Archivists extracting a portion of an AVIF image for lossless preservation in TIFF format
- Anyone who needs to trim and convert an AVIF to TIFF without installing Photoshop or GIMP
AVIF vs TIFF: Format Comparison
| Property | AVIF | TIFF |
|---|---|---|
| Compression | Lossy or lossless (AV1) | Lossless (or uncompressed) |
| Quality loss on re-save | Yes (lossy mode) | No — lossless round-trip |
| File size | Very small (best compression) | Larger — every pixel stored |
| Print production support | Not supported by press tools | Industry standard |
| Editing/post-production | Not a production editing format | Preferred — no generational loss |
| Transparency support | Yes (alpha channel) | Yes (alpha channel) |
| Color bit depth | Up to 12-bit per channel | 8, 16, or 32-bit per channel |
| Best for | Web delivery, modern browsers | Print, archiving, post-production |
Frequently Asked Questions
new Image() and a data URL, the browser fires the onload event before AV1 pixel decoding completes. Calling ctx.drawImage() at that point silently draws a blank canvas — no error, no warning, just empty output. img.decode() is a Promise that resolves only after the full pixel decode is ready, so the canvas always receives real pixel data.