AO

tool · live · runs on your machine

Image Convert

Convert, compress, and resize images — entirely on your machine. Nothing is uploaded — your files never leave this tab. No sign-up, no size cap, no daily limit.

Drop files here or click to choose · or paste from clipboard

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.

For machines

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.

A machine-readable description lives at index.md. Third-party components and their licences are listed on the licences page.