Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when auditing page weight for crawl efficiency, investigating why certain page content is not appearing in Google's index, or reviewing server-rendered pages that embed large JSON payloads in HTML.
.claude/skills/thedaviddias-html-size/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | -11% | 0% |
| case-07 | ✓→✗ | ▼ Worse | -24% | 0% |
| case-10 | ✓→✓ | = Same ✓ | 17% | 0% |
| case-03 | ✓→✓ | = Same ✓ | -11% | 0% |
| case-05 | ✓→✓ | = Same ✓ | -34% | 0% |
Googlebot has a documented crawl size limit of approximately 15MB per HTML document. Content beyond this threshold is not parsed or indexed. Excessively large HTML also slows Googlebot crawls, reducing how many of your pages are crawled per budget period.
<script> tagsMeasure the raw HTML response size (before compression) for each page. Flag pages over 2MB (investigate) and over 5MB (critical). Identify the cause of oversized HTML: (1) Large inline JSON (<script id='__NEXT_DATA__'> or similar). (2) Inline SVG files. (3) Base64-encoded images in HTML. (4) Inline CSS with large amounts of utility classes. (5) Unminified scripts in <script> tags.
curl -so /dev/null -w '%{size_download}' https://yoursite.com/page | awk '{print $1/1024 " KB"}'__NEXT_DATA__):getServerSideProps/getStaticProps — only pass what the page renders<img> or <use>.Google's crawl infrastructure parses only the first ~15MB of an HTML document. Pages that exceed this limit have their tail content silently omitted from Google's index. Beyond the hard limit, large HTML documents consume more crawl budget, meaning fewer of your pages are crawled per day. This particularly affects large e-commerce sites or pages that server-render large datasets into HTML.
Check the response Content-Length header or measure the raw HTML byte count. Inspect <script type='application/json'> or <script id='__NEXT_DATA__'> blocks — count their size in bytes. Flag any single block over 500KB. Check for inline SVG elements (look for <svg> in body HTML) that should be external files. Verify HTML is served with gzip or Brotli encoding.
For full implementation details, code examples, and framework-specific guidance, see references/rule.md.
Rule page: https://frontendchecklist.io/en/rules/seo/html-size
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-10 | pass→pass | 12,137 | 9,841 | -19% | 1 | 1 | 0% | 2,414 | 2,836 | +17% | 0 | 0 | — |
case-01 | fail→fail | 18,743 | 13,594 | -27% | 1 | 1 | 0% | 3,510 | 3,179 | -9% | 0 | 0 | — |
case-02 | fail→fail | 18,598 | 14,719 | -21% | 1 | 1 | 0% | 3,399 | 3,513 | +3% | 0 | 0 | — |
case-03 | pass→pass | 5,695 | 2,018 | -65% | 1 | 1 | 0% | 1,131 | 1,003 | -11% | 0 | 0 | — |
case-04 | fail→pass | 13,348 | 8,361 | -37% | 1 | 1 | 0% | 2,421 | 2,148 | -11% | 0 | 0 | — |
case-05 | pass→pass | 11,116 | 4,431 | -60% | 1 | 1 | 0% | 2,141 | 1,417 | -34% | 0 | 0 | — |
case-06 | pass→pass | 11,436 | 2,714 | -76% | 1 | 1 | 0% | 2,068 | 1,023 | -51% | 0 | 0 | — |
case-07 | pass→fail | 8,997 | 3,785 | -58% | 1 | 1 | 0% | 1,906 | 1,448 | -24% | 0 | 0 | — |
case-08 | pass→pass | 12,974 | 10,699 | -18% | 1 | 1 | 0% | 2,746 | 3,013 | +10% | 0 | 0 | — |
case-09 | pass→pass | 5,846 | 3,648 | -38% | 1 | 1 | 0% | 1,188 | 1,256 | +6% | 0 | 0 | — |
case-11 | pass→pass | 12,695 | 9,527 | -25% | 1 | 1 | 0% | 2,097 | 2,157 | +3% | 0 | 0 | — |
case-12 | pass→pass | 9,440 | 4,660 | -51% | 1 | 1 | 0% | 1,900 | 1,609 | -15% | 0 | 0 | — |
case-13 | pass→pass | 11,252 | 8,275 | -26% | 1 | 1 | 0% | 1,962 | 2,140 | +9% | 0 | 0 | — |
case-14 | pass→pass | 10,027 | 6,453 | -36% | 1 | 1 | 0% | 1,823 | 1,870 | +3% | 0 | 0 | — |
case-15 | pass→pass | 5,562 | 2,845 | -49% | 1 | 1 | 0% | 931 | 1,152 | +24% | 0 | 0 | — |
case-16 | pass→pass | 16,150 | 12,718 | -21% | 1 | 1 | 0% | 2,929 | 2,873 | -2% | 0 | 0 | — |
case-17 | pass→pass | 14,875 | 9,853 | -34% | 1 | 1 | 0% | 2,672 | 2,454 | -8% | 0 | 0 | — |
case-18 | pass→pass | 8,376 | 7,183 | -14% | 1 | 1 | 0% | 1,595 | 2,069 | +30% | 0 | 0 | — |
case-19 | pass→pass | 6,933 | 5,569 | -20% | 1 | 1 | 0% | 1,314 | 1,852 | +41% | 0 | 0 | — |
case-20 | pass→pass | 2,501 | 3,643 | +46% | 1 | 1 | 0% | 488 | 1,487 | +205% | 0 | 0 | — |
case-21 | pass→pass | 15,579 | 10,624 | -32% | 1 | 1 | 0% | 2,663 | 2,856 | +7% | 0 | 0 | — |
case-22 | pass→pass | 14,249 | 8,181 | -43% | 1 | 1 | 0% | 2,747 | 2,334 | -15% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of 0 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.