Supporting HEIC uploads: the decoder is 1.46 MB, but most visitors never download it A developer measured the real cost of adding HEIC upload support to a browser-based image tool, finding that Chromium 149 and a Firefox 151 build fail every native decode path (, img.decode(), createImageBitmap, and WebCodecs ImageDecoder) while only Playwright's WebKit 26.5 build on macOS succeeds by handing files to the system decoder. The lazy-loaded libheif WASM bundle is 1,461,926 bytes uncompressed and about 510 KB over gzip, but repeat visits cost only 1,095 bytes via 304 responses, so the decoder is paid only by visitors who upload a HEIC and fail a native decode. The developer also found JPEG at quality 80 (662 KB in Chromium) far cheaper than PNG (13.52 MB) for a 12MP sample, and noted all figures come from a single M4 machine with no real-phone decode timing measured. My tool sites only accept JPG, PNG and WebP. Every time an iPhone user drops a HEIC file on the upload box, it gets rejected, and I have been putting off fixing that for months. The reason is boring: Chrome cannot read HEIC, so reading it in the browser means shipping a decoder. I pay for bandwidth by the gigabyte, so before writing any code I wanted the actual byte count. For the measurements I used the HEIC reader in ImgIng https://imging.ai/ https://imging.ai/ on an Apple M4 with 16 GB, driving the browsers bundled with Playwright 1.61.1 in headless mode, with HEIC files I generated from synthetic images using macOS sips not photos from a phone . I tried four native paths: