{
 "study": "AEOeye WebP vs AVIF encoding test (October 2026)",
 "run": "2026-10-24",
 "method": [
  "20 real UI screenshots (10 desktop JPEG screenshots of software pricing pages, 10 PNG screenshots of web pages), resized to 1200 px wide and cropped to at most 900 px tall, saved as lossless PNG sources.",
  "JPEG reference: ffmpeg -q:v 3 (roughly quality 85, libjpeg, no mozjpeg tuning).",
  "WebP: cwebp 1.6.0 -q 75 -m 4 (the encoder default quality and method).",
  "AVIF: avifenc 1.4.2 (libaom 3.14.1), speed 6, single thread; for each image the lowest quality from 30,40,...,90 whose SSIM met or exceeded the WebP file was kept — i.e. AVIF at equal-or-better quality.",
  "SSIM measured with ffmpeg against the PNG source; encode times are wall-clock on an Apple-silicon laptop, single image, single thread for AVIF."
 ],
 "limitations": [
  "Screenshots, not photographs: flat UI areas favour modern codecs and results for photos differ.",
  "20 images; one machine; one quality metric (SSIM).",
  "JPEG reference is plain libjpeg, so savings versus a tuned JPEG encoder would be smaller.",
  "Source images are internal QA screenshots and are not published; per-image sizes are."
 ],
 "summary": {
  "images": 20,
  "matched": 20,
  "webp_vs_jpg_pct": 60.8,
  "avif_vs_jpg_pct": 69.1,
  "avif_vs_webp_pct": 21.5,
  "avif_smaller_count": 20,
  "median_webp_kb": 38.8,
  "median_avif_kb": 31.1,
  "median_jpg_kb": 99.1,
  "median_webp_sec": 0.054,
  "median_avif_sec": 0.272,
  "median_webp_ssim": 0.9827,
  "median_avif_ssim": 0.9847
 },
 "rows": [
  {
   "img": "img01.png",
   "src_png_bytes": 447361,
   "jpg_bytes": 114783,
   "jpg_ssim": 0.995735,
   "webp_bytes": 48070,
   "webp_ssim": 0.982634,
   "webp_sec": 0.059,
   "avif_q": 50,
   "avif_bytes": 35430,
   "avif_ssim": 0.983933,
   "avif_sec": 0.276
  },
  {
   "img": "img02.png",
   "src_png_bytes": 382044,
   "jpg_bytes": 102449,
   "jpg_ssim": 0.996085,
   "webp_bytes": 41984,
   "webp_ssim": 0.982593,
   "webp_sec": 0.054,
   "avif_q": 50,
   "avif_bytes": 32449,
   "avif_ssim": 0.984302,
   "avif_sec": 0.288
  },
  {
   "img": "img03.png",
   "src_png_bytes": 462141,
   "jpg_bytes": 119126,
   "jpg_ssim": 0.99568,
   "webp_bytes": 49226,
   "webp_ssim": 0.982115,
   "webp_sec": 0.058,
   "avif_q": 50,
   "avif_bytes": 37836,
   "avif_ssim": 0.98228,
   "avif_sec": 0.308
  },
  {
   "img": "img04.png",
   "src_png_bytes": 495125,
   "jpg_bytes": 120191,
   "jpg_ssim": 0.99547,
   "webp_bytes": 52426,
   "webp_ssim": 0.979231,
   "webp_sec": 0.054,
   "avif_q": 50,
   "avif_bytes": 40305,
   "avif_ssim": 0.979429,
   "avif_sec": 0.294
  },
  {
   "img": "img05.png",
   "src_png_bytes": 404259,
   "jpg_bytes": 100527,
   "jpg_ssim": 0.99595,
   "webp_bytes": 40354,
   "webp_ssim": 0.982323,
   "webp_sec": 0.052,
   "avif_q": 50,
   "avif_bytes": 31445,
   "avif_ssim": 0.98457,
   "avif_sec": 0.261
  },
  {
   "img": "img06.png",
   "src_png_bytes": 359018,
   "jpg_bytes": 96906,
   "jpg_ssim": 0.996191,
   "webp_bytes": 39236,
   "webp_ssim": 0.98295,
   "webp_sec": 0.052,
   "avif_q": 50,
   "avif_bytes": 31856,
   "avif_ssim": 0.984899,
   "avif_sec": 0.263
  },
  {
   "img": "img07.png",
   "src_png_bytes": 358185,
   "jpg_bytes": 98638,
   "jpg_ssim": 0.99599,
   "webp_bytes": 38742,
   "webp_ssim": 0.983135,
   "webp_sec": 0.054,
   "avif_q": 50,
   "avif_bytes": 30958,
   "avif_ssim": 0.985292,
   "avif_sec": 0.267
  },
  {
   "img": "img08.png",
   "src_png_bytes": 405190,
   "jpg_bytes": 103299,
   "jpg_ssim": 0.995538,
   "webp_bytes": 40424,
   "webp_ssim": 0.975902,
   "webp_sec": 0.054,
   "avif_q": 50,
   "avif_bytes": 31885,
   "avif_ssim": 0.979512,
   "avif_sec": 0.268
  },
  {
   "img": "img09.png",
   "src_png_bytes": 391980,
   "jpg_bytes": 102675,
   "jpg_ssim": 0.995718,
   "webp_bytes": 40272,
   "webp_ssim": 0.981246,
   "webp_sec": 0.052,
   "avif_q": 50,
   "avif_bytes": 32962,
   "avif_ssim": 0.982906,
   "avif_sec": 0.294
  },
  {
   "img": "img10.png",
   "src_png_bytes": 400291,
   "jpg_bytes": 104778,
   "jpg_ssim": 0.995906,
   "webp_bytes": 41464,
   "webp_ssim": 0.982276,
   "webp_sec": 0.057,
   "avif_q": 50,
   "avif_bytes": 32440,
   "avif_ssim": 0.984552,
   "avif_sec": 0.276
  },
  {
   "img": "img11.png",
   "src_png_bytes": 384700,
   "jpg_bytes": 133195,
   "jpg_ssim": 0.995067,
   "webp_bytes": 45404,
   "webp_ssim": 0.989784,
   "webp_sec": 0.055,
   "avif_q": 50,
   "avif_bytes": 38454,
   "avif_ssim": 0.991227,
   "avif_sec": 0.313
  },
  {
   "img": "img12.png",
   "src_png_bytes": 314743,
   "jpg_bytes": 57137,
   "jpg_ssim": 0.997653,
   "webp_bytes": 20604,
   "webp_ssim": 0.988025,
   "webp_sec": 0.049,
   "avif_q": 50,
   "avif_bytes": 16235,
   "avif_ssim": 0.990712,
   "avif_sec": 0.151
  },
  {
   "img": "img13.png",
   "src_png_bytes": 316470,
   "jpg_bytes": 79757,
   "jpg_ssim": 0.997412,
   "webp_bytes": 32770,
   "webp_ssim": 0.991169,
   "webp_sec": 0.047,
   "avif_q": 60,
   "avif_bytes": 31738,
   "avif_ssim": 0.993335,
   "avif_sec": 0.223
  },
  {
   "img": "img14.png",
   "src_png_bytes": 494703,
   "jpg_bytes": 70764,
   "jpg_ssim": 0.996136,
   "webp_bytes": 24976,
   "webp_ssim": 0.983701,
   "webp_sec": 0.052,
   "avif_q": 40,
   "avif_bytes": 14464,
   "avif_ssim": 0.984891,
   "avif_sec": 0.177
  },
  {
   "img": "img15.png",
   "src_png_bytes": 457891,
   "jpg_bytes": 123272,
   "jpg_ssim": 0.995288,
   "webp_bytes": 42406,
   "webp_ssim": 0.978542,
   "webp_sec": 0.054,
   "avif_q": 50,
   "avif_bytes": 33595,
   "avif_ssim": 0.979456,
   "avif_sec": 0.285
  },
  {
   "img": "img16.png",
   "src_png_bytes": 216263,
   "jpg_bytes": 42814,
   "jpg_ssim": 0.997702,
   "webp_bytes": 11638,
   "webp_ssim": 0.98802,
   "webp_sec": 0.048,
   "avif_q": 40,
   "avif_bytes": 7801,
   "avif_ssim": 0.988402,
   "avif_sec": 0.132
  },
  {
   "img": "img17.png",
   "src_png_bytes": 420583,
   "jpg_bytes": 73693,
   "jpg_ssim": 0.995463,
   "webp_bytes": 26644,
   "webp_ssim": 0.983792,
   "webp_sec": 0.041,
   "avif_q": 40,
   "avif_bytes": 17041,
   "avif_ssim": 0.987033,
   "avif_sec": 0.185
  },
  {
   "img": "img18.png",
   "src_png_bytes": 670690,
   "jpg_bytes": 88186,
   "jpg_ssim": 0.994458,
   "webp_bytes": 29324,
   "webp_ssim": 0.985737,
   "webp_sec": 0.057,
   "avif_q": 40,
   "avif_bytes": 18273,
   "avif_ssim": 0.986361,
   "avif_sec": 0.316
  },
  {
   "img": "img19.png",
   "src_png_bytes": 470560,
   "jpg_bytes": 104997,
   "jpg_ssim": 0.994395,
   "webp_bytes": 37964,
   "webp_ssim": 0.978083,
   "webp_sec": 0.057,
   "avif_q": 50,
   "avif_bytes": 31985,
   "avif_ssim": 0.980859,
   "avif_sec": 0.279
  },
  {
   "img": "img20.png",
   "src_png_bytes": 312760,
   "jpg_bytes": 71051,
   "jpg_ssim": 0.996079,
   "webp_bytes": 25500,
   "webp_ssim": 0.982806,
   "webp_sec": 0.044,
   "avif_q": 50,
   "avif_bytes": 20061,
   "avif_ssim": 0.986006,
   "avif_sec": 0.196
  }
 ]
}