Direct answer: the 36 article pages carry 499 images with a src: 403 (80.8%) are .png, 54 are .jpg, two .webp and one .gif, with zero .svg or .avif; 39 have no extension. 188 (37.7%) come from another host, and 33 of 36 pages include at least one external image.
Another clean result: none of the 499 src values carries a query string, so there is no sign of on-demand resizing; all 39 extension-less URLs belong to one E16 CDN host.
Method: read only the src in cached HTML
The study reuses the 36 article pages cached on 2026-11-03 08:40–08:41 (10 sites) with zero network requests. It counts <img> with a non-empty src (excluding data: and data-src-only images), takes the extension from the URL path, compares registrable domains, and records whether a query string is present.
| Item | Rule | Boundary |
|---|---|---|
| Image | img with a non-empty, non-data: src | CSS backgrounds excluded |
| Extension | .jpg/.png and similar at the end of the path | Not the served format |
| External | Different registrable domain | Subdomains internal |
| Query string | A "?" in src | Parameters not interpreted |
Result: eight in ten are PNG
| Extension | Count | Share of 499 |
|---|---|---|
| .png | 403 | 80.8% |
| .jpg / .jpeg | 54 | 10.8% |
| No extension | 39 | 7.8% |
| .webp | 2 | 0.4% |
| .gif | 1 | 0.2% |
| .svg / .avif | 0 / 0 | 0% |
PNG is usually larger than JPEG or WebP for photographic content, but this is the extension only and says nothing about the actual encoding or byte size. WebP appears twice and AVIF not at all, so modern formats have barely landed on these article pages.
External hosts and missing extensions
| Site | Images | External | No extension |
|---|---|---|---|
| E14 | 107 | 10 | 0 |
| E03 | 87 | 30 | 0 |
| E09 | 66 | 31 | 0 |
| E06 | 61 | 11 | 0 |
| E22 | 56 | 38 | 0 |
| E23 | 51 | 29 | 0 |
| E16 | 39 | 39 | 39 |
| E26 / E28 / E19 | 15 / 12 / 5 | 0 / 0 / 0 | 0 |
External images are not an edge case: 33 of 36 pages have at least one, E16's 39 all come from another host without extensions, and E19, E26 and E28 self-host everything.
Not one image carries a size parameter
None of the 499 src values contains a "?", so common patterns such as ?w=800 or ?imageView2 do not appear; images are served as-is or generated at a fixed size behind an opaque URL, which this method cannot see.
Sampling 30 images: 17 fetchable, 13 rejected by a CDN
On 2026-11-06 15:42–15:44 the study requested the first three distinct images on each site (10 sites, 30 images): 17 returned 200 and 13 returned HTTP 567. The 567s come from one CDN host used by six sites — browsers display those images, but third-party clients cannot read the bytes.
Among the 17 that loaded: 14 PNG and 3 JPEG; Content-Type matched the magic bytes exactly, and the 14 URLs with extensions matched their real format. E16's three extension-less URLs actually return one PNG (12,017 bytes) and two JPEGs (109,031 and 16,418 bytes), so "no extension" describes the URL only.
Byte sizes vary widely: five are 956-byte navigation sprites, the median is 14,476 bytes and the largest is 944,291 bytes (JPEG). The sample covers 30 images and says nothing about the distribution of all 499.
| Outcome | Count | Share of 30 |
|---|---|---|
| 200 (fetchable) | 17 | 56.7% |
| HTTP 567 (CDN rejection) | 13 | 43.3% |
| of which PNG / JPEG | 14 / 3 | — |
| Extension mismatching the real format | 0 | 0% |
| Larger than 200 KB | 1 | 3.3% |
Relationship to the image-attribute and alt studies
Study 57 found that the 514 img tags on these pages declare no width, height or lazy loading and few srcsets; this study adds that four in five are PNG and none carries a size parameter. Together: images are delivered as originals, with no responsive candidates, no on-demand sizing and older formats.
What this means for acceptance
- Prefer JPEG/WebP for photos. 403 of 499 are PNG; acceptance can require photos not to be PNG.
- Support at least one modern format. WebP appears twice and AVIF never; a WebP or AVIF variant is a reasonable ask.
- Add size parameters or srcset. Zero query strings and almost no srcset means mobile clients fetch originals.
- Inventory external images. 37.7% sit on another host, so a CDN domain change would hit 33 pages.
- An extension is not an encoding. Confirm real bytes and formats by requesting the images.
Limits
- Extension only: images were not requested, so the served format is unknown; extension-less URLs could be anything.
- src only: 15 of the 514 img tags have no usable src; data-src-only lazy images are excluded.
- Page level: navigation, footer and decorative images are included; body is not separated.
- One snapshot: cached on 2026-11-03; redesigns are not rechecked.
- 10 sites, 36 pages: a pilot, no industry claim.
Data and reproduction
Anonymised data: equipment-article-image-sources-2026.csv (36 rows × 15 columns: image and external counts, host count, extension-less images, query strings and per-extension counts). The repository keeps docs/research/2026-11-article-image-sources.csv. Sample data: equipment-article-image-bytes-sample-2026.csv (30 rows × 8 columns: site, host kind, status, Content-Type, bytes, magic-byte format, URL extension and error).
Parser: scripts/article_image_source_probe.py; unit tests: scripts/test_article_image_source_probe.py (no network, seven tests). Run:
python -m unittest scripts.test_article_image_source_probe
Related: the article image-attributes pilot, the article alt-copy pilot, and the homepage resource inventory., and the image inventory checker
Sources and definitions
- Article cache: 36 pages from 10 sites in study 45 (2026-11-03 08:40–08:41).
- Extension: end of the URL path; external: registrable-domain comparison.
- Scan: 2026-11-06, zero network requests.
Related: the image-host 567 response recheck.
Related: the article HTML weight composition pilot.
Related: the article HTML compression and transfer-size pilot.
Related: the article inline-SVG duplication pilot.