PNG-8 at 124 colors encoded a red-text test poster in 48,481 bytes at an edge error of 0.13 Delta E, smaller and cleaner than every JPEG export. For flat graphics like this one, an export tool that converts everything to JPEG ships bigger files with dirtier red text.
Reality
- Evidence55
- Adoption
- Insufficient
- Hype gap+5
- Incentives55
- Confidence60
Headless Chrome 149 wrote the same 1,345,909-byte PNG via canvas.toBlob at quality 0.1 and at 1.0, one developer's measurements show. A PNG export slider only changes the file if the tool downscales, quantises colours or switches to WebP or AVIF.
Reality
- Evidence55
- Adoption
- Insufficient
- Hype gap+15
- Incentives30
- Confidence60
A byte-level walk of a 1.51 MB screen recording puts the untouchable palette tables at under 4 percent of the file. The 38 percent floor has to be explained by redraw rectangles that average 59 percent of the canvas.
Reality
- Evidence58
- Adoption
- Insufficient
- Hype gap+22
- Incentives40
- Confidence60
No major browser encodes AVIF from a canvas, and the spec says to hand back a PNG without throwing. The only support test that works is reading blob.type on the blob you get back.
Reality
- Evidence64
- Adoption25
- Hype gap+8
- Incentives40
- Confidence58
The HTML spec tells a browser to fall back to image/png when it cannot encode the type you asked for, and Safari cannot encode WebP, so the only thing between your users and a mislabeled download is a check on blob.type.
Reality
- Evidence62
- Adoption
- Insufficient
- Hype gap−10
- Incentives22
- Confidence58
Where the decode happens decides the key layout and where variant metadata lives. The storage surface's missing conditional write decides who gets to mark a thumbnail ready. Both matter more than the price sheet.
Reality
- Evidence36
- Adoption
- Insufficient
- Hype gap−14
- Incentives58
- Confidence44
The HTML spec mandates the silent substitution, blob.type is the only record that it happened, and a user-agent lookup table cannot stand in for the check.
Reality
- Evidence62
- Adoption
- Insufficient
- Hype gap0
- Incentives28
- Confidence58
A default flip to AVIF plus the retirement of `domains` turns a routine Next.js upgrade into a production image incident. The fix is boring config, applied before the deploy.
Reality
- Evidence14
- Adoption
- Insufficient
- Hype gap+58
- Incentives32
- Confidence22