# Image Convert — AO tool

> Convert, compress, and resize images — entirely on your machine. Runs entirely client-side: no upload, no server, no file limits, no sign-up.

Human page: https://abstractobjective.dev/tools/image-convert/
Status: live · Category: image

## Input and output
- In: jpg, jpeg, png, webp, gif, bmp, avif, heic, heif
- Out: webp, jpg, png, avif, gif, bmp

## Programmatic use (the AI-facing twin)
All computation happens locally in the page context.

- `window.AOImageTool.convertBlob(blob, {format, quality, maxDim}) -> Promise<{blob, width, height}>`
  Convert any supported image Blob. format: webp|jpg|png|avif|gif|bmp. quality: 0..1 (ignored for png/gif/bmp). maxDim: longest-side pixel cap, 0 to keep original size.

## Notes
- HEIC/HEIF input uses libheif (LGPL-3.0) compiled to WebAssembly, fetched only when a HEIC file is dropped.
- AVIF output uses @jsquash/avif (Apache-2.0), fetched only when AVIF is selected.
- GIF and BMP output use AO's own encoders — no third-party code.
- HEIC output is deliberately absent: encoding HEVC is patent-encumbered.

## Properties
- Privacy: files never leave the browser tab.
- Limits: none imposed by us; the practical ceiling is your device's memory.
- Cost model: client-side compute — free without caps, sustainably.

---

## How it works

Your browser already contains a full image-processing engine. This page uses it: decode, resize with high-quality sampling, re-encode — all inside this tab's memory. Close the tab and nothing remains anywhere, because nothing was ever sent anywhere.

Where the browser can't do something, we bring the code rather than sending your file away. **HEIC** — the format iPhones shoot in — has no native browser decoder, so this page fetches one (libheif, compiled to WebAssembly) the first time you drop a HEIC file, and never otherwise. **AVIF** output works the same way: browsers can read AVIF but not write it, so we ship the encoder. **GIF and BMP** are written by our own encoders, which exist partly so that no third-party licence has to be trusted for them.

## What goes in and what comes out

**In:** JPEG, PNG, WebP, GIF, BMP, AVIF, and HEIC/HEIF.
**Out:** WebP, AVIF, JPEG, PNG, GIF, BMP.

Two honest absences. **HEIC output** is missing on purpose: encoding it requires patent-encumbered code we cannot ship freely, and the world converts away from HEIC rather than into it. And if your browser cannot write a format — Safari cannot write WebP — this tool will **tell you so and fail the job**, rather than handing you a PNG with the wrong file extension.

## Limits

There are none that we impose: no file-size ceiling, no batch limit, no daily quota, no account. The only real ceiling is your own device's memory, and when a file is too large to hold, the tool says that plainly instead of freezing.

The quality slider applies to WebP, AVIF and JPEG. PNG, GIF and BMP ignore it — PNG and BMP are lossless, and GIF quality is governed by its 256-colour palette rather than a quality setting.
