Skip to content

Methodology

How Image processes your files.

How Image works: browser-side decoding and encoding, quality semantics, the target-size search, high-quality resizing, metadata handling, transparency, batch processing and limits.

No upload. No account. Nothing stored.

Local processing

When you choose a file, Image first reads its bytes to find out what it really is — the format comes from the file's signature, not its name — and reads its dimensions and metadata from the header. Oversized images are refused before decoding, so the page never freezes.

The image is then decoded and processed in a Web Worker (a background thread) using the browser's own image decoder and an OffscreenCanvas, so the page stays responsive. Browsers without that fall back to the same steps on the main thread. Nothing is uploaded at any point.

Codecs and formats

Image uses the browser's built-in codecs. It opens JPEG, PNG, WebP, GIF (first frame) and AVIF where the browser supports it, and exports JPEG, PNG and WebP. Each browser's encoders are tested when a tool opens; a format it can't produce is disabled. Browsers silently save PNG when asked for a format they can't encode — Image checks the result and refuses to pass that off as your chosen format.

Not supported in this phase: AVIF export (no browser encodes it natively; a WebAssembly encoder would need a looser security policy), HEIC, SVG (it can contain scripts and external references) and camera RAW. Animated GIF, WebP and APNG are detected and processed only as their first frame, after you confirm.

Quality

JPEG and WebP are lossy: the quality setting (1–100%) controls how much detail is kept. PNG is lossless and has no quality setting; its optional Reduce colours mode builds a palette of up to 256 colours and is labelled lossy. If a re-encoded file comes out larger than the original, Image says so rather than presenting it as compressed.

Target-size algorithm

  1. Encode at high quality (95%). If it fits, that's the answer.
  2. Encode at the quality floor (5%, or 60% when resizing is allowed). If even that is too big, quality alone can't reach the target.
  3. Binary-search quality between the two, keeping the largest result that is at or under the target; stop within 8% of the target or after 8 encodes.
  4. If allowed, shrink the dimensions by √(target ÷ size) × 0.92 and repeat, up to 6 times, never below 16 px on the short edge.

Success is reported only when the output's byte count is at or under the target. Sizes use decimal units (1 KB = 1,000 bytes), the stricter reading.

Resizing and orientation

Large reductions are done in steps — halving until within 2× of the target, then a final high-quality pass — which avoids the jagged results of a single browser downscale. Phone photos stored sideways with an EXIF orientation flag are turned upright when opened, and exports are written upright with no flag, so they never appear double-rotated.

Metadata

Image reads EXIF (camera, dates, software, orientation, presence of GPS), XMP, IPTC, comments, PNG text and colour profiles directly from the file. GPS is reported only as present — coordinates are never decoded, shown or looked up. Re-encoded downloads contain no metadata. Remove Metadata rewrites JPEG, PNG and WebP files losslessly (image data untouched), keeps the colour profile unless you remove it, and verifies the output by reading it back.

Colour and transparency

Browsers decode images into standard sRGB for processing; exports are untagged sRGB. Wide-gamut photos (Display P3) may lose some saturation when re-encoded — Image doesn't claim professional colour fidelity. PNG and WebP keep transparency; converting a transparent image to JPEG always asks which background colour to use.

Batch processing and limits

Batches run in order with one or two background workers (one when any image is over 12 megapixels). Each file succeeds or fails on its own, cancelling stops the workers immediately, and ZIP files are assembled in the browser. Memory is released as soon as each image is finished.

Limits: up to 16,384 px per edge; up to 50 megapixels on desktop and 16.7 megapixels on phones, tablets and low-memory devices. Larger images are refused with “This image is too large to process safely on this device.”

References