Direct answer: The 25 homepages declare 958 images, 204 scripts, 134 stylesheets, 3 iframes and 16 media elements in HTML. Of these, 183 images, 15 scripts and one stylesheet come from another registrable domain. Deduplicated, there are 26 external-host instances across 15 homepages, a median of one per page and at most three; 10 homepages use no external host at all.
External images are highly concentrated: E03 (71), E23 (38) and E16 (19) account for 128 of 183 external images (70%). Scripts are mostly self-hosted — 15 of 204 (7.4%) are external — and only one of 134 stylesheets is. Inline scripts total 183,669 characters and inline styles 337,191.
Method: reuse the study-4 homepage cache
The 25 homepages cached on 2026-10-31 are parsed with zero network requests, counting only statically declared resources. External means a different registrable domain: a www. prefix and subdomains count as internal, and .com.cn-style suffixes use three labels. Resources inserted by JavaScript, CSS background images and srcset alternatives are not counted, so every number is a lower bound.
| Item | Rule | Boundary |
|---|---|---|
| Image | img with a non-empty src | CSS backgrounds excluded |
| Script | script with src | Inline counted separately |
| Stylesheet | link rel containing stylesheet | Internal and external |
| External | Registrable domain differs | Subdomains are internal |
| Inline size | Characters of script/style content | Not compressed bytes |
Result: most resources are self-hosted
| Resource | Total | External | External share |
|---|---|---|---|
| Images | 958 | 183 | 19.1% |
| Scripts | 204 | 15 | 7.4% |
| Stylesheets | 134 | 1 | 0.7% |
| iframes | 3 | — | — |
| Media | 16 | — | — |
| preconnect / dns-prefetch | 13 | — | — |
External-host counts: ten pages with none, eight with one, four with two and three with three; no page exceeds three. Only three homepages declare preconnect or dns-prefetch hints, 13 in total.
External images cluster in three sites
| Site | Images | External | External hosts |
|---|---|---|---|
| E03 | 89 | 71 | 3 |
| E23 | 53 | 38 | 3 |
| E16 | 19 | 19 | 1 |
| E06 | 47 | 27 | 3 |
| E14 | 26 | 11 | 2 |
| E22 | 21 | 10 | 2 |
| E09 | 23 | 7 | 2 |
The other 18 homepages serve every image from their own host. E16's 19 images are all external; E03's 71 external images come from just three hosts, suggesting one object-storage/CDN account with several domains. E18 declares no images and no scripts at all — an almost empty shell.
By site
| Site | Images | External images | Scripts | External scripts | Stylesheets | External hosts |
|---|---|---|---|---|---|---|
| E01 | 14 | 0 | 8 | 2 | 6 | 1 |
| E02 | 141 | 0 | 14 | 1 | 8 | 2 |
| E03 | 89 | 71 | 8 | 0 | 6 | 3 |
| E04 | 54 | 0 | 5 | 1 | 3 | 1 |
| E06 | 47 | 27 | 5 | 0 | 7 | 3 |
| E08 | 84 | 0 | 14 | 0 | 7 | 0 |
| E09 | 23 | 7 | 3 | 0 | 4 | 2 |
| E11 | 19 | 0 | 10 | 2 | 3 | 1 |
| E12 | 31 | 0 | 7 | 2 | 8 | 1 |
| E13 | 54 | 0 | 9 | 0 | 3 | 0 |
| E14 | 26 | 11 | 3 | 0 | 3 | 2 |
| E16 | 19 | 19 | 9 | 0 | 14 | 1 |
| E17 | 92 | 0 | 17 | 4 | 1 | 2 |
| E18 | 0 | 0 | 0 | 0 | 0 | 0 |
| E19 | 13 | 0 | 8 | 0 | 5 | 0 |
| E20 | 0 | 0 | 2 | 2 | 0 | 1 |
| E22 | 21 | 10 | 7 | 0 | 7 | 2 |
| E23 | 53 | 38 | 7 | 0 | 5 | 3 |
| E24 | 37 | 0 | 12 | 1 | 15 | 1 |
| E25 | 7 | 0 | 5 | 0 | 0 | 0 |
| E26 | 53 | 0 | 8 | 0 | 7 | 0 |
| E27 | 11 | 0 | 12 | 0 | 5 | 0 |
| E28 | 40 | 0 | 9 | 0 | 6 | 0 |
| E29 | 12 | 0 | 16 | 0 | 7 | 0 |
| E30 | 18 | 0 | 6 | 0 | 4 | 0 |
Inline code
The 25 homepages carry 183,669 characters of inline script, median 3,866; inline style totals 337,191 characters with a median of 0, meaning most sites keep CSS in files while a few ship very large inline blocks. The largest single inline script exceeds 30,000 characters. Characters are not network bytes and compression is not counted.
What this means for acceptance
- “Uses a CDN” depends on the resource. Ten of 25 sites use no external host and only 15 of 204 scripts are external; do not assume every corporate site depends on third-party front-end code.
- Inventory external images separately. They are 19.1% of images and 70% sit on three sites, so a domain change would hit those pages directly.
- Preconnect hints are rare. Only three pages declare preconnect or dns-prefetch; cross-domain heavy sites can add them.
- Cap inline code. A single inline script over 30,000 characters slows first parse; acceptance can require inline and external code to be counted separately.
- Flag empty shells. E18 declares no images or scripts and may rely on JavaScript or be a placeholder; it needs a manual check.
Limits
- Lower bounds only: JS-inserted resources, CSS background images,
srcsetalternatives and real lazy-load URLs are not counted. - Characters, not bytes: no gzip/br and no HTTP headers.
- No availability check: whether a resource returns 200, blocks rendering or hits CORS is not tested.
- One snapshot: cached on 2026-10-31; later redesigns are not rechecked.
- 25 sites: a pilot, no industry claim.
Data and reproduction
Anonymised data: equipment-homepage-resource-inventory-2026.csv (25 rows × 13 columns: images, scripts and stylesheets with external counts, iframes, media, preconnects, external hosts and inline character counts). The repository keeps docs/research/2026-11-homepage-resource-inventory.csv.
Parser: scripts/homepage_resource_probe.py; unit tests: scripts/test_homepage_resource_probe.py (no network, 10 tests). Run:
python -m unittest scripts.test_homepage_resource_probe
Related: the page text-share pilot, the homepage image-attributes pilot, and the privacy and analytics pilot.
Sources and definitions
- Homepage cache: 25 sites from study 4 (2026-10-31).
- External: registrable-domain comparison; subdomains are internal.
- Scan: 2026-11-06, zero network requests.