ToolPipo Lab: image target size compression test Sources and original graphics: ToolPipo, CC0-1.0. No third-party photographs or system fonts. Bundled fflate 0.8.3: MIT, see FFLATE-LICENSE.txt. 1KB=1024 bytes; 1MB=1048576 bytes. A: 12 conditions; B:9; C:3; unchanged:1. results.json records actual downloads from the unchanged Tool UI, and 3 runs each for A 500KB JPEG/WebP/PNG. Canvas output may differ across Chromium versions, platforms and other browsers. Pixel deltas use max RGBA channel difference, threshold0, against a reference resized to OUTPUT dimensions. They are not perceptual scores or full-resolution comparisons. C JPEG is flattened against #ffffff. PNG/WebP keep transparency. Regenerate exact source pixels/PNG bytes with Node24: node generate-fixtures.cjs ./regenerated Compare regenerated sources.json SHA-256 with sources.json. Full measurement reproduction from the repository (pnpm install; install Playwright Chromium if needed): node scripts/generate-image-compression-article-fixtures.js node scripts/measure-image-compression-article.js node scripts/package-image-compression-article.js node scripts/render-image-compression-article.js Do not expect byte-identical JPEG/WebP across different browsers. See environment in results.json. Outputs are the actual downloaded files. crops/*.png are lossless decoded crops of the same source-relative region. Their native dimensions and source mapping are in crops.json. PNG resize means fewer pixels; zero encoding delta does not restore lost resolution. Unchanged control contains the source Comment metadata unchanged. Re-encoded PNG/JPEG/WebP does not retain that source Comment.