Direct answer: the 36 article pages carry 4.22 MB of HTML, of which visible text is only 0.19 MB (4.6%). Per page, the median text share is 4.0%, from 1.4% to 31.6%. The largest single block is inline SVG: 1.72 MB in total (40.7%), present on 30 of 36 pages, with 27 of 36 pages at 20% or more.
This does not mean the text is unimportant. It means the HTML bytes are mostly template, icons, attributes and whitespace. This study splits bytes only; it does not measure compressed transfer or treat HTML size as a performance score.
Method: split bytes from cached HTML
We reused the 36 cached article pages from study 83 (10 public equipment-manufacturing sites, fetched 2026-11-03 08:40–08:41), with no network. Comments, script blocks, style blocks and inline SVG are removed and measured in order; the remaining tags and text nodes are measured next. Bytes are UTF-8. Each page's percentages use its own HTML byte count as the denominator, rounded to one decimal.
| Bucket | Contains | Boundary |
|---|---|---|
| Visible text | Text left after removing script/style/SVG/comments/tags, whitespace collapsed | Includes navigation and footer, not body copy alone |
| Inline SVG | The whole <svg>…</svg> block | Does not separate icons, logos or illustrations |
| Script / style | Whole <script> and <style> blocks | Includes JSON-LD and external tags |
| Markup | Other tags, including class/style/data attributes | Attribute overhead is reported as class_attr_bytes |
| Whitespace/other | Whitespace in text nodes, doctype, unclassified remainder | Not classified character by character |
Result: text 4.0%, SVG 30.8%, markup 39.2%
| Bucket | Median share | Min–max | Aggregate share |
|---|---|---|---|
| Visible text | 4.0% | 1.4%–31.6% | 4.6% |
| Inline SVG | 30.8% | 0%–74.1% | 40.7% |
| Markup | 39.2% | 14.0%–62.5% | 33.9% |
| Whitespace/other | 16.5% | 3.1%–18.9% | — |
| Script | 4.1% | 2.3%–22.3% | — |
| Style | 0.0% | 0%–7.3% | — |
| Comment | 0.9% | 0.4%–7.5% | — |
SVG is unevenly distributed: six pages have none, three are below 20%, and the remaining 27 are at 20% or more. The two largest pages both belong to E23: 308,587 and 309,205 bytes, with SVG at 74.1% and 74.0% and visible text at only 1.6% and 1.8%.
Distribution of visible-text share
| Visible-text share | Pages | Of 36 |
|---|---|---|
| Below 5% | 20 | 55.6% |
| 5%–10% | 9 | 25.0% |
| 10%–20% | 4 | 11.1% |
| Above 20% | 3 | 8.3% |
On 29 of 36 pages, visible text is under 10% of HTML. The highest shares — E16 (31.7%), E19 (19.4%) and E26 (15.9%) — have no inline SVG and much smaller HTML (18–36 KB). This looks more like a template difference than a content-volume difference.
By site: wide variation even within one template
| Site | Pages | Median HTML (bytes) | Median text share | Median SVG share |
|---|---|---|---|---|
| E03 | 5 | 155,211 | 6.4% | 40.4% |
| E06 | 5 | 149,640 | 2.9% | 44.6% |
| E09 | 5 | 87,354 | 5.5% | 29.2% |
| E14 | 5 | 90,421 | 5.3% | 25.4% |
| E16 | 3 | 18,619 | 31.5% | 0.0% |
| E19 | 1 | 21,663 | 19.4% | 0.0% |
| E22 | 5 | 155,239 | 3.1% | 43.8% |
| E23 | 5 | 80,089 | 2.5% | 14.0% |
| E26 | 1 | 36,379 | 15.9% | 0.0% |
| E28 | 1 | 26,485 | 10.0% | 0.0% |
Within-site variance matters: E23's median HTML is only 80 KB, yet two pages exceed 300 KB because of large SVG blocks. A site median hides that long tail.
Why inline SVG deserves its own line
Inline SVG is written into the HTML and cannot be cached separately the way an image file or a script can. When the same icon set appears on every page, it is counted again in each page's HTML. Here, 30 of 36 pages contain SVG, 1.72 MB in total, or 40.7% of the HTML across the 36 pages. That is a byte fact only; it does not establish whether an icon is necessary, duplicated, or should move to an external sprite.
What this means for acceptance
- Measure HTML size before optimising. The median page is 106 KB, the largest 309 KB; compressed transfer is not included.
- Report inline SVG separately. It can be the largest block and cannot be cached on its own; ask for sprite reuse or external files when relevant.
- Text share is not a content-quality score. Navigation, footer and icons dilute it; it only says how many bytes of HTML are text.
- Measure compressed size too. gzip/brotli were not tested; large HTML does not automatically mean large transfer, or vice versa.
- Check the long tail, not just the site median. A median hides a single 300 KB page; sample the largest pages in acceptance.
Limits
- Cached snapshot: 36 pages fetched 2026-11-03; no redesign recheck.
- Not transfer size: no gzip/brotli, HTTP/2 header compression or CDN rewriting.
- Not a rendering metric: no TTFB, LCP, parse time or CrUX.
- Text includes template: visible text includes navigation and footer, not body copy alone.
- Pilot: 10 sites, 36 pages; not an industry estimate, and template clustering is possible.
Data and reproduction
Anonymised data: equipment-article-html-weight-2026.csv (36 rows × 23 columns: HTML bytes, text chars/bytes/share, script/style/SVG/comment/markup/whitespace bytes and shares, tag counts, class-attribute bytes). In-repo copy: docs/research/2026-11-article-html-weight.csv.
Probe: scripts/article_html_weight_probe.py; tests: scripts/test_article_html_weight_probe.py (no network, 9 tests covering block separation, whitespace collapse, shares and tag counts). Run:
python -m unittest scripts.test_article_html_weight_probe
Related: the article image-delivery pilot, the article body-structure pilot, and the homepage resource inventory.
Sources and definitions
- Page cache: study 83, 10 sites and 36 pages (2026-11-03 08:40–08:41).
- Bytes: UTF-8; the percentage denominator is that page's HTML bytes.
- Measured 2026-11-06 with no network requests.
Related: the article HTML compression and transfer-size pilot.
Related: the article inline-SVG duplication pilot.
Related: the article visible-text within-site repetition pilot.
Related: the article author-signal pilot.