Skip to content

Android

The Chrome that encoded your AVIF is not the app that must open it.

WebViews lag. Samsung Internet lies. Shift’s badge is the honest signal on this device.

The iPhone page is Safari and Files. This page is the other pocket: Chrome, WebView, Samsung Internet, cheap Androids with 3 GB of RAM. Shift already probes AVIF twice — native 1×1 checked with ftyp/avif, then WASM. If both fail, the button dies and WebP still works. That sentence is the product. Buttons: guide.

Three runtimes people mix up

Chrome stable. Decode of AVIF is usually fine. Encode via canvas.toBlob('image/avif') is the liar: some builds return a JPEG with an AVIF name. Shift rejects that blob when magic bytes are wrong.

In-app WebView. Instagram, a marketplace, a bank. They ship an old Chromium. They accept JPG. They may accept WebP. They often do not accept AVIF upload. Do not debug Shift against a store WebView.

Samsung Internet and forks. Same lie, different UA. Trust the badge, not the file extension you typed.

What Shift does on this origin

Drop JPG/PNG/WebP/AVIF, pick output, quality, optional max width, convert, download or ZIP. Nothing is posted. Airplane mode works after WASM has loaded. AVIF off is not a paywall. Long compare: WebP vs AVIF. Back to a boring file: AVIF to JPG.

The ceiling

Shift cannot update the WebView inside a shop app. It cannot make a 2019 phone encode AVIF in time before the tab dies. 48 MP JPEGs on 3 GB RAM: cap width to 1280 or 1920. Sequential encode exists because parallel decode kills the tab. That is heap, not quota.

Steps

  1. Open Shift in Chrome, not inside the messenger WebView.
  2. Read the AVIF badge. If it says no, pick WebP.
  3. Cap max width if the source is a 48 MP camera JPEG.
  4. Convert. Open the output in Files or Downloads on this phone before you upload elsewhere.
  5. If the destination is a form inside another app, prefer JPG. Chat pipe: WhatsApp. Mail: email.

What looks like a bug and is not

  • AVIF button off — probe failed. Use WebP.
  • .avif that opens as JPEG — native encode lied. Badge should have said no.
  • Tab died on four 48 MP photos — heap. Fewer files, smaller width.
  • Home Screen icon still a website — no extra codec.

Add to Home Screen is still Chrome’s engine

The icon looks like an app. It does not gain a new AVIF encoder. The probe is the same. Treat it as a bookmark.

Files app versus Downloads versus the camera roll

Shift writes into Downloads through the browser. The camera roll still holds the JPEG you started with. A gallery app that “does not show WebP” is a gallery limit, not a failed convert. Open the file from Downloads.

Play Store WebView forms

Marketplace and bank apps embed a WebView. Upload JPG there. Fighting AVIF inside that form wastes a retry. Convert here in Chrome, save, then pick the JPG in their picker.

Low-RAM phones

3 GB devices die on four 48 MP stills. Sequential encode is already the law in ConverterApp. Cap width. Close other tabs. There is no cloud queue when the tab vanishes.

Sharing to another Android

Nearby Share / Bluetooth sends the file you point at. If you point at Recents, you send JPEG. Point at the Shift download. Their gallery may still refuse AVIF preview — they can still keep the file.

Honesty limits

Shift does not update WebView, does not patch Samsung Internet, does not decode HEIC. Success is: a badge you believed, a file you opened on this phone, then a destination that matches that codec. iPhone path: iPhone. Chat: WhatsApp. Mail: email.

Why native toBlob lies on Android

Feature detect is not enough. A browser can claim image/avif and still hand you a JPEG, an empty blob, or a WebP with the wrong type. Shift encodes a 1×1, then reads magic bytes for an ISO-BMFF ftyp with an avif brand. No brand, no badge. The WASM encoder is the second chance. If WASM is blocked or times out, AVIF stays off. That is honest. Shipping a file named .avif that starts with JPEG SOI is how other tools burn a morning.

Firefox on Android and Chrome on Android are not the same probe. Run the badge on the browser you will convert in. Do not convert in Chrome and assume Samsung Internet will write the same bytes.

Intents, pickers, and scoped storage

Android pickers talk in intents. A shop app’s “upload photo” intent often filters to JPEG and PNG. Your WebP sits in Downloads and never appears in that grid. That is the filter, not a missing file. Open the system Files app, browse Downloads, pick the -shift name. If the form still rejects the type, convert to JPG here and pick that.

Scoped storage means one app cannot see another app’s private folder. Shift’s download is the browser’s download. WhatsApp’s recode lives in WhatsApp. The camera roll is the camera. Point at the folder you saved.

Gallery apps that hide WebP

Some OEM galleries index JPEG and PNG and skip WebP. The file is on disk. The album is a view. Open Downloads or a file manager. If you needed them to see a picture in a gallery, send JPG. If you needed them to keep a modern still for a website, send WebP as a file and say so.

Unknown destination, default WebP

You encoded AVIF in Chrome. Their phone is a three-year-old store WebView. They see a blank. Default output on Shift is WebP for this reason. Use AVIF when the other side named AVIF and you watched the badge stay yes. Unknown phone, unknown form, unknown mail client: WebP or JPG.

Reverse path if someone sent you an AVIF this phone will not draw: AVIF to JPG. Compare the two codecs without the delivery story: WebP vs AVIF.

What this page is not

This is not a second iPhone chapter. Share sheet and HEIC live on iPhone. This is not GPS wipe. This is not a PDF binder. Shift changes codec in this tab. Android decides which runtime opens the next form. Convert stays on the homepage.

If a form inside another app rejects WebP, do not reopen Shift inside that WebView and try AVIF. Leave the shop app. Convert to JPG in Chrome. Save. Come back to their picker. The badge you trusted in Chrome does not travel into their embedded Chromium.

Android questions

The AVIF button is off on my phone. Is Shift broken?

The probe failed: native encode lied or WASM timed out. Convert to WebP. That is the truthful path, not a paywall.

Chrome encoded AVIF. The shop app shows nothing.

Shop WebViews lag Chrome. Upload JPG or WebP to that form. Do not argue with a WebView about AVIF.

Samsung Internet wrote a file named .avif that opens as JPEG.

Native toBlob lied. Shift checks ftyp/avif magic. If the badge said no, believe it. Re-encode with WASM or pick WebP.

Does Add to Home Screen give Shift a codec Android lacks?

No. It is still this website. The probe is the same.