Skip to content

Study: results and method ​

ImgTune was checked against real sites before it was packaged. Six production sites decided whether it was worth building; eight open-source apps were scanned for comparison and do not decide. The site list was fixed before the first scan and kept private, because it names the production sites. Here they are anonymous: A1 to A6.

TL;DR ​

Results

  • 6 production sites (the deciders): the estimated saving is 16.5% to 53.1% of image bytes per view on all six. The kill criterion, fixed in advance, was set on the smaller-file part alone: 2 of 6 above 15%, a pass at the bar.
  • 200 more production sites, anonymous: the median site loads 1,830 KB of images per view and could cut 16.7% of them. 84 of 200 (42%) could save 20% or more. Most of the estimate is re-encodes: few sites ship a smaller srcset candidate that goes unused.
  • 8 open-source apps: developer sites carry few image bytes. The waste sits in image-heavy commerce.

Method

  • Each site is scanned once, in headless Chromium: 2 pages, 6 viewports, scrolled to the end.
  • The estimated saving is built as described in How it measures. Re-encodes count only when SSIMULACRA2 stays within a delta of 2 of the original.
  • robots.txt is respected, and sites behind bot walls are dropped. The sample leans toward sites without them.
  • Any stack: the scan measures the live page, not the source. Details are in Method and Limits.

Method ​

  • Every site is scanned once with the same tool version: 2 pages, 6 viewports (four phones, a 1440 px desktop at 2x and a 1280 px desktop at 1x), SSIMULACRA2 at a delta of 2.
  • Each page is loaded in headless Chromium, scrolled to the end, and every image is recorded with the size it renders at.
  • Saving is the share of all image bytes per page view. It is averaged over the viewports, then over the two pages.
  • Estimated saving is the one number reported here. It is built as in How it measures, with re-encodes judged by SSIMULACRA2 against the original.
  • Sharpness growth (images smaller than their slot) is reported apart and never subtracted from another image's saving.

The kill criterion was fixed in advance: a pass needs at least 2 of the 6 production sites above 15%.

Production sites (v4) ​

siteKB / viewestimated savingof fixable
A13,25033.2%50.4%
A21,26353.1%64.8%
A33,35538.2%50.1%
A49,25435.9%62.0%
A57,71416.5%21.9%
A69,07827.7%43.9%

Kill criterion (fixed in advance, on the smaller-file part alone): 2 of 6 above 15%, a pass at the bar. On the estimated saving: 6 of 6.

Open-source apps (v4, do not decide) ​

siteKB / viewestimated savingof fixable
tailwindcss.com4,5084.2%9.6%
ui.shadcn.com23833.7%42.0%
supabase.com67120.8%48.0%
nextjs.org16219.2%21.4%
turborepo.com7721.4%21.4%
langfuse.com3,1491.8%21.7%
docs.sentry.io850.0%0.0%
www.openstatus.dev1524.2%31.7%

Developer sites carry few image bytes. The waste sits in image-heavy commerce.

More production sites (anonymous) ​

These are 200 real public sites, scanned on 2026-10-29 to 2026-10-31 with the same CLI: 2 pages each, 6 viewports, the same rules as the six above. The owners were not asked, so the sites stay anonymous. Labels P001 onward are assigned by rank (highest estimated saving first), not by name or scan order. KB values are rounded to the nearest 10. The sites are a mix of stacks: 7 named ones (Next.js, Shopify, WordPress, Astro, Nuxt, Webflow, Gatsby), and 49 that no named stack covers.

How the sites were picked. Public directories, showcases and company lists, any stack. Each was scanned on its homepage and on one image-heavy inner page. robots.txt was respected. Sites that block bots were dropped, so the sample leans toward sites without bot walls. The scan measures the live page in a browser, so it works on any site, whatever built it.

  • 200sites scanned7 named stacks, 2026-10-29 to 2026-10-31
  • 1,830KBmedian image weight per view
  • 16.7%median estimated saving
  • 42.0%of sites could save 20% or more84 of 200 sites
  • 221.8MBsaved per page view, summed over all sites
How much each site could save

84 of 200 sites (42.0%) could save 20% or more of their image bytes. The median is 16.7%.

20%median 16.7%0%20%40%60%80%100%
One dot per site, grouped in 5% steps of estimated saving (share of image bytes per view). Dots stack upward; hover or tab through them for each site.
Median saving by category

AI & SaaS ranks highest at 32.0% (n=28). The median across all 200 sites is 16.7%.

AI & SaaS n=2832.0%E-commerce & brands n=3825.2%Other n=3 · small sample21.9%Education n=919.5%Health & wellness n=1018.5%Travel & hospitality n=1415.7%Media & publishing n=3714.0%Finance n=1211.9%Marketplaces n=1411.3%Developer tools n=1211.1%Real estate n=79.0%Agencies & portfolios n=166.8%
One row per category, sorted by median saving. Groups with fewer than 5 sites are faded.
Image weight against saving

Sites at 1,000 KB per view or more have a median saving of 18.1% (n=148). Lighter sites: 13.1% (n=52).

Category
Stack

All 200 sites. Pick a category or a stack to highlight it.

1,000 KB20%0%20%40%60%80%100%301003001,0003,00010,000100,000image KB per view (log scale)
One dot per site: image KB per view on a log scale against estimated saving. Selecting a category highlights its sites in the accent color and grays the others. The stack row works the same way and combines with the category.
Median saving by tech stack

Nuxt ranks highest at 29.5% (n=6). The median across all 200 sites is 16.7%.

Nuxt n=629.5%Shopify n=2424.4%Next.js n=8917.9%Astro n=716.7%WordPress n=1914.0%Gatsby n=2 · small sample9.2%Other / unknown n=499.0%Webflow n=4 · small sample7.5%
One row per tech stack, sorted by median saving. Groups with fewer than 5 sites are faded.
All 200 sites
idcategorystackimage KB / viewestimated savingfixablesaved KB / view
P001Travel & hospitalityNext.js19,70088.5%94.9%17,280
P002AI & SaaSNext.js86087.5%90.5%750
P003FinanceNext.js4,56085.9%92.3%3,940
P004AI & SaaSNext.js5,51083.6%88.7%4,900
P005AI & SaaSNext.js1,89081.0%86.6%1,520
P006AI & SaaSNext.js12,91078.2%82.5%10,400
P007E-commerce & brandsNext.js9,49071.9%79.9%6,420
P008Media & publishingNext.js3,50067.2%72.6%2,390
P009AI & SaaSNext.js8,15066.5%72.9%5,230
P010Agencies & portfoliosOther / unknown5,81059.8%66.8%4,310
P011Media & publishingAstro2,97059.4%63.8%1,700
P012E-commerce & brandsShopify7,62057.5%65.4%5,380
P013Media & publishingWordPress7,25057.1%67.4%4,130
P014E-commerce & brandsAstro75056.9%70.4%430
P015AI & SaaSNext.js4,34056.7%73.8%2,170
P016EducationNext.js5,11055.7%76.1%3,160
P017AI & SaaSNext.js6,55054.7%69.5%2,700
P018AI & SaaSNext.js70052.9%80.7%350
P019E-commerce & brandsShopify20,78051.1%64.0%11,160
P020E-commerce & brandsNext.js9,47046.2%63.9%6,510
P021E-commerce & brandsNext.js2,23045.5%63.8%1,020
P022Developer toolsNext.js80044.8%53.9%400
P023MarketplacesOther / unknown2,75044.7%49.6%1,390
P024FinanceNext.js1,19044.7%66.3%680
P025AI & SaaSNext.js7,49043.3%63.5%2,920
P026Real estateWebflow1,23042.6%65.8%530
P027Health & wellnessNuxt3,24041.7%58.0%1,410
P028AI & SaaSNext.js13,56041.5%85.6%7,530
P029Health & wellnessNext.js2,47041.2%48.6%1,490
P030AI & SaaSNext.js1,33040.7%66.8%550
P031AI & SaaSNext.js9040.6%50.5%40
P032E-commerce & brandsShopify4,34039.6%59.1%1,620
P033E-commerce & brandsOther / unknown1,16038.5%65.4%400
P034Travel & hospitalityWordPress11,17038.0%54.1%7,660
P035AI & SaaSNext.js18,42037.9%70.4%10,530
P036E-commerce & brandsShopify3,37037.8%68.7%1,760
P037Media & publishingNext.js2,98037.4%57.4%1,030
P038E-commerce & brandsShopify2,97036.5%50.4%1,080
P039E-commerce & brandsNext.js12,32036.4%92.6%4,560
P040OtherNext.js11,54036.1%66.1%4,540
P041EducationNuxt50035.3%80.9%230
P042Health & wellnessOther / unknown5,52034.6%55.3%2,720
P043FinanceNext.js1,70034.5%49.7%590
P044MarketplacesOther / unknown1,15034.4%43.5%640
P045AI & SaaSNext.js1,09034.3%90.2%360
P046E-commerce & brandsShopify1,74033.6%40.3%1,280
P047Media & publishingOther / unknown7,87032.7%50.8%2,690
P048Travel & hospitalityNuxt3,37031.1%58.8%790
P049Travel & hospitalityOther / unknown2,99031.0%46.5%1,780
P050E-commerce & brandsNext.js3,89030.0%49.6%1,420
P051Media & publishingOther / unknown14,75029.8%60.3%4,500
P052E-commerce & brandsNext.js7,53029.6%53.4%1,470
P053Media & publishingWordPress1,65029.6%77.3%440
P054EducationNext.js89029.6%59.6%220
P055AI & SaaSNext.js42029.6%68.2%130
P056Media & publishingOther / unknown1,79029.1%62.9%940
P057E-commerce & brandsOther / unknown4,15028.7%45.4%1,460
P058E-commerce & brandsShopify3,92028.6%40.7%930
P059Agencies & portfoliosNuxt3,01027.8%45.0%810
P060EducationWordPress1,30027.7%67.4%490
P061Media & publishingOther / unknown3,14027.3%56.8%590
P062Health & wellnessShopify2,25026.9%42.7%590
P063E-commerce & brandsShopify2,56026.5%41.9%710
P064MarketplacesOther / unknown3,23026.3%44.5%880
P065Media & publishingWordPress76026.2%47.9%180
P066Agencies & portfoliosNext.js2,36025.7%54.5%390
P067E-commerce & brandsShopify2,67025.3%41.6%610
P068E-commerce & brandsNext.js51025.3%28.3%150
P069Media & publishingNext.js2,24025.2%54.4%580
P070AI & SaaSNext.js42025.0%32.4%130
P071E-commerce & brandsOther / unknown27025.0%36.0%120
P072Media & publishingShopify5,31024.8%57.9%1,490
P073E-commerce & brandsOther / unknown1,70024.6%38.5%370
P074E-commerce & brandsShopify2,17024.5%46.7%490
P075E-commerce & brandsShopify6,46024.2%37.3%1,700
P076Agencies & portfoliosWordPress4,91024.2%57.1%1,150
P077Travel & hospitalityNext.js1,22024.0%49.3%270
P078Health & wellnessShopify5,10023.7%45.4%1,280
P079E-commerce & brandsShopify1,29023.1%33.5%260
P080OtherNext.js83021.9%36.8%120
P081Media & publishingNext.js2,83021.1%29.0%600
P082AI & SaaSNext.js38021.0%52.8%80
P083MarketplacesNext.js26020.4%30.8%60
P084MarketplacesAstro1,36020.2%34.5%320
P085Developer toolsNext.js87019.8%40.4%160
P086MarketplacesShopify2,66019.6%51.2%460
P087EducationNext.js1,81019.5%38.3%410
P088Media & publishingWordPress3,12018.8%72.1%680
P089Real estateNext.js48018.6%21.9%90
P090FinanceOther / unknown1,61018.5%74.2%240
P091E-commerce & brandsShopify86018.3%31.9%140
P092Media & publishingOther / unknown41,72018.2%68.9%3,370
P093E-commerce & brandsShopify4,60018.0%55.6%830
P094AI & SaaSNext.js2,12017.9%77.9%360
P095Travel & hospitalityOther / unknown55017.6%28.5%160
P096E-commerce & brandsShopify3,07017.3%68.0%470
P097E-commerce & brandsShopify2,35017.0%30.1%560
P098Travel & hospitalityWordPress1,65016.9%52.5%320
P099Media & publishingNext.js1,53016.7%25.9%190
P100Developer toolsAstro67016.7%33.9%110
P101AI & SaaSNext.js28016.7%64.4%50
P102AI & SaaSNext.js38016.4%35.0%50
P103MarketplacesNext.js4,09016.3%51.9%830
P104Real estateNext.js1,07015.9%39.9%170
P105AI & SaaSNext.js1,15015.7%56.4%200
P106FinanceNext.js26015.7%36.7%60
P107Media & publishingWordPress9,16015.4%55.5%1,410
P108Developer toolsGatsby1,49015.3%58.5%260
P109Travel & hospitalityNext.js65014.4%32.5%120
P110Media & publishingOther / unknown1,67014.2%44.1%290
P111Agencies & portfoliosNext.js82014.2%16.0%120
P112Media & publishingWordPress2,39014.0%52.4%450
P113Media & publishingWordPress1,22013.9%33.9%190
P114Media & publishingOther / unknown3,66013.6%63.3%1,010
P115Agencies & portfoliosWordPress9,38013.3%23.5%3,610
P116Health & wellnessNext.js2,71013.3%42.7%50
P117EducationNext.js11013.3%17.9%10
P118Media & publishingWordPress3,74012.9%29.8%400
P119E-commerce & brandsNext.js47012.8%26.8%60
P120Travel & hospitalityOther / unknown25,83012.7%71.3%2,040
P121Developer toolsNext.js1,00012.4%35.4%160
P122FinanceWordPress13,69012.3%45.1%3,570
P123Agencies & portfoliosNext.js68012.2%35.1%80
P124Media & publishingWordPress2,90012.0%51.9%390
P125AI & SaaSNext.js8,32011.8%64.5%1,240
P126FinanceOther / unknown1,64011.4%24.6%330
P127Developer toolsNext.js1,02011.4%21.5%70
P128E-commerce & brandsOther / unknown59011.2%22.7%40
P129Developer toolsNext.js54010.8%23.5%70
P130Media & publishingNext.js1,07010.7%21.4%140
P131EducationWebflow82010.4%28.9%100
P132E-commerce & brandsNuxt66010.2%28.1%70
P133E-commerce & brandsOther / unknown47010.0%14.6%110
P134Media & publishingOther / unknown5,9209.9%72.1%590
P135Developer toolsNext.js7709.4%21.3%70
P136Developer toolsAstro4109.2%29.3%40
P137Real estateOther / unknown509.0%26.5%10
P138Developer toolsNext.js1,4908.6%49.6%160
P139E-commerce & brandsShopify1,5808.4%44.7%130
P140AI & SaaSNext.js1,1108.4%30.9%60
P141E-commerce & brandsNext.js18,3208.3%22.0%2,370
P142AI & SaaSNext.js4,9608.1%24.3%390
P143OtherNext.js8808.0%27.6%70
P144FinanceNext.js1,0007.9%24.6%90
P145Travel & hospitalityShopify5,7107.8%65.0%380
P146E-commerce & brandsNext.js1,2107.8%20.3%70
P147Real estateNext.js3,6407.5%38.4%280
P148Health & wellnessNext.js1,2007.4%27.0%70
P149Developer toolsNext.js1,0007.3%58.6%60
P150Agencies & portfoliosOther / unknown7606.8%7.8%100
P151Agencies & portfoliosOther / unknown12,1806.7%10.4%490
P152Real estateNext.js2,7706.6%72.5%190
P153Media & publishingOther / unknown4,3306.4%31.0%590
P154MarketplacesNext.js6,1806.2%19.7%150
P155E-commerce & brandsShopify3,5806.1%69.0%240
P156E-commerce & brandsShopify2,0805.8%35.2%130
P157Media & publishingAstro2,5305.7%34.9%180
P158AI & SaaSNext.js2,4405.7%72.4%150
P159Travel & hospitalityOther / unknown4,1005.4%39.9%130
P160Media & publishingAstro4,4205.3%65.3%230
P161MarketplacesOther / unknown1,6605.3%27.7%130
P162Real estateOther / unknown1505.3%20.5%10
P163Media & publishingOther / unknown39,6805.1%73.2%2,390
P164Media & publishingOther / unknown2,2105.1%18.7%220
P165EducationWebflow1,0104.5%11.4%90
P166FinanceOther / unknown7704.3%10.2%40
P167Media & publishingOther / unknown1,0104.1%14.0%50
P168Agencies & portfoliosWordPress8603.8%47.9%40
P169Media & publishingOther / unknown22,8203.5%53.8%1,240
P170Agencies & portfoliosOther / unknown4,1803.3%39.7%130
P171Agencies & portfoliosNuxt2103.3%3.3%20
P172Health & wellnessGatsby1,8003.0%34.0%80
P173Travel & hospitalityNext.js8303.0%13.1%30
P174Health & wellnessWebflow2,4702.7%9.4%70
P175MarketplacesOther / unknown9202.7%26.8%30
P176Health & wellnessNext.js1,2302.6%11.1%20
P177MarketplacesNext.js11,9202.5%61.8%270
P178AI & SaaSNext.js1,4002.5%2.6%10
P179Media & publishingOther / unknown1,2102.4%10.2%40
P180FinanceNext.js2402.2%11.6%10
P181Media & publishingWordPress1,4102.1%14.5%40
P182Travel & hospitalityWordPress1,8401.8%25.1%50
P183AI & SaaSNext.js1,5001.8%23.7%40
P184Agencies & portfoliosOther / unknown01.6%2.5%0
P185Agencies & portfoliosNext.js7,2501.5%30.8%80
P186Media & publishingOther / unknown1,0401.5%4.6%10
P187E-commerce & brandsOther / unknown7101.4%10.2%20
P188Developer toolsNext.js1,2201.2%35.2%30
P189Agencies & portfoliosWordPress1,2001.1%12.4%20
P190MarketplacesOther / unknown7801.1%8.0%10
P191Media & publishingOther / unknown2,4300.8%24.1%40
P192EducationOther / unknown6300.4%6.4%0
P193AI & SaaSNext.js2300.2%7.4%0
P194Travel & hospitalityOther / unknown2,8400.1%5.5%0
P195FinanceNext.js3,4500.0%0.0%0
P196Agencies & portfoliosOther / unknown3,0900.0%0.0%0
P197MarketplacesOther / unknown2,1700.0%0.0%0
P198Media & publishingNext.js1,5600.0%0.0%0
P199FinanceNext.js1100.0%0.0%0
P200MarketplacesOther / unknown300.0%0.0%0

The estimate is built as in the method above, with re-encodes scored with SSIMULACRA2 at a delta of 2.

Limits ​

  • Six deciders is a signal, not proof. The sample leans toward sites without bot walls.
  • Part of the estimate is an estimate. The re-encode part is a floor where an image could not be scored (counted per page as qualityNA).
  • Quality and format are only estimated when the original is known. Where the loader is not known, the estimate is not made.
  • A3 rose from 13% to 38% between v1 and v4, because its images sit on a custom domain at quality 100, which v1 could not score.
  • A rescan of the open-source sites on 2026-10-30 matched v4 to the rounding shown for three of them. Two moved: supabase.com's smaller-file share rose from 1.9% to 4.5%, and langfuse.com's image bytes rose by about 16%. Part of the difference may come from tool changes since v4, not only from the sites. See the replay page.

Reproduce it ​

The study used the CLI at tag study-v4-2026-10-28. Run npx imgtune scan <url> <url> --summary-json summary.json on your own sites to get the same measures. See the CLI reference.

MIT License. Third-party code is listed in NOTICE.