Why convert to WebP or AVIF at all
JPEG is still the default export from cameras and design tools, but it is a 1990s still-image codec. A 12-megapixel phone JPEG is often two to four megabytes before anyone has edited it. WebP (lossy or lossless) and AVIF (AV1 stills) typically land smaller at a similar viewing distance — which is why CDNs, documentation sites, and app stores keep asking for them. The catch is the encoder. Online tools that “convert to WebP” usually mean: upload, transcode with ImageMagick or libvips, email you a link. That is a privacy problem for passports, kids, interiors, and work screenshots, and it is a reliability problem when the queue is busy.
Shift’s product job is the codec change, not a generic “compress my vacation.” Crush exists for size-first JPG/PNG/WebP. Here the default call to action is Convert, the default output is WebP, and AVIF is honest about device support. If you only needed a smaller JPEG, you are in the wrong tool — and the UI will not pretend otherwise.
What happens to a file inside this tab
After you choose files, Shift checks size and magic bytes (JPEG SOI, PNG signature, RIFF/WEBP, AVIF ftyp brands). HEIC is refused with a pointer to HEIC Local. Each image is decoded with createImageBitmap (orientation when the browser supports it). A canvas is sized to the optional max width/height, the bitmap is drawn, then encoded. WebP/JPG/PNG use canvas.toBlob. AVIF uses a single-thread WASM encoder so it does not hang waiting for cross-origin isolation. Object URLs are revoked after download. Close the tab and the pixels are gone.
Quality is a slider from 10% to 100%, default 85%. PNG ignores it (lossless). AVIF quality is mapped onto the encoder’s 10–100 scale. Batch mode processes files one after another so a cheap phone is less likely to OOM than a worker pool would. The ZIP path is JSZip in-process — the same family pattern as Crush and Folio, with Shift filenames.
When WebP is the right output
Use WebP when the consumer might be an iPhone, a WordPress media library, a Slack upload, or an older Android WebView. Browser encode support is the reason Shift defaults here. A typical 24-megapixel JPEG from an iPhone export, converted at 85% with a max width of 1920, is usually a few hundred kilobytes of WebP that still looks like a photograph. Read the dedicated JPG to WebP page if that is your only job today.
When AVIF is worth it — and when it is not
AVIF often beats WebP on still photos at the same visual quality, especially large hero images. It is also the codec that breaks silently: a phone may report image/avif and hand you a JPEG-in-disguise. Shift’s badge (“AVIF encode: yes/no”) is the product surface for that. If the badge is no, do not hunt for a hidden toggle. Convert to WebP, or open the WebP vs AVIF comparison, or drop the same photo on compare to weigh WebP and AVIF at one quality. Going the other way — AVIF you received from a designer, back to JPG for email — is covered on AVIF to JPG.
Batch ZIP, memory, and why a file can get bigger
Two or more successful converts unlock Download ZIP. The archive is assembled in this tab; it is not a mailbox attachment we generate for you. Filenames pick up a -shift suffix and the real extension, so you can tell the original JPEG from the WebP sitting next to it. If two inputs share a stem, Shift keeps the ZIP entries unique instead of overwriting.
Memory is the only quota. Files over about 25 MB get a warning. Files over 80 MB are refused so Safari does not kill the tab. Four 48-megapixel exports at full resolution will also fail on a tired phone even if each file is under the byte cap — that is why max width exists. 1920 px is the web-hero default; 1280 is enough for cards and blog inline images. Empty max fields keep the pixel grid, which is rarely what you want.
Sometimes the WebP or AVIF is larger than the JPEG you started with. That happens with already-small screenshots, heavy chroma-subsampled JPEGs, or quality 95% on a graphic. Lower quality, cap width, or switch to PNG for UI with type. Shift reports original size → new size on the result row so you can decide without guessing from the filename.
iPhone, batch, and what this site is not
iOS Safari is a first-class path: file picker, Share-sheet download, orientation, memory copy. Details live on iPhone photos. Batch ZIP is for a folder of product shots, not a 200-file dump on a 3 GB phone — use max width. Shift does not strip GPS (that is Strip), does not merge PDFs (Folio), does not remove backgrounds, and does not add watermarks. HEIC is refused on purpose after reading the ftyp brand. Animated WebP/AVIF is not a v1 pipeline — you get a still frame if the browser hands one over.
What Shift will refuse
Empty files, renamed text, PDFs, videos, and HEIC/HEIF. Magic bytes are checked, not only the extension, so.jpg that is actually a ZIP is rejected with a sentence instead of a blank canvas. If decode fails after the header looked fine, the row shows an error and the rest of the batch continues. There is no server-side job to resume after a crash: reload and convert again.
Legal pages: Privacy, Terms, About, Contact. Step-by-step encoding is on the conversion guide.