Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when auditing a site that publishes downloadable PDFs (reports, white papers, legal documents, manuals). Applies to any site where PDFs are linked as indexable content resources.
.claude/skills/thedaviddias-pdf-size/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 15% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 127% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 156% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 4% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -40% | 0% |
PDFs larger than Googlebot's download threshold are partially crawled or skipped, meaning their content may not appear in search results even when linked from well-indexed pages.
Find all <a href='.pdf'> links on the site. For each linked PDF, perform a HEAD request and check the Content-Length header. Flag any PDF exceeding 10 MB (recommend compression) or 15 MB (likely to be truncated by Googlebot).
Compress large PDFs using a PDF optimisation tool (Adobe Acrobat, Ghostscript, or Smallpdf). Remove embedded high-resolution images, fonts, and metadata not required for reading. If compression is insufficient, create an HTML page with the same content as the primary indexable version, and offer the PDF as a download.
Googlebot downloads and indexes the content of PDFs linked from your site. However, it has a file size limit for downloads — files beyond this limit are partially indexed or skipped. Large PDFs also slow down crawling and consume crawl budget. Keeping PDFs small ensures their full content appears in search results.
Find all <a href> links with .pdf extension. For each PDF URL, perform a HEAD request and check Content-Length header value. Flag PDFs exceeding 10,485,760 bytes (10 MB) for compression review. Flag PDFs exceeding 15,728,640 bytes (15 MB) as at-risk for partial indexing. Verify PDF URLs return 200 status and appropriate Content-Type: application/pdf header.
For full implementation details, code examples, and framework-specific guidance, see references/rule.md.
Rule page: https://frontendchecklist.io/en/rules/seo/pdf-size
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 12,752 | 10,805 | -15% | 1 | 1 | 0% | 2,235 | 2,562 | +15% | 0 | 0 | — |
case-02 | fail→pass | 10,240 | 16,645 | +63% | 1 | 1 | 0% | 1,663 | 3,773 | +127% | 0 | 0 | — |
case-03 | fail→pass | 8,651 | 15,233 | +76% | 1 | 1 | 0% | 1,407 | 3,602 | +156% | 0 | 0 | — |
case-04 | pass→pass | 14,085 | 8,146 | -42% | 1 | 1 | 0% | 2,800 | 2,309 | -18% | 0 | 0 | — |
case-09 | pass→pass | 14,863 | 12,971 | -13% | 1 | 1 | 0% | 2,517 | 2,564 | +2% | 0 | 0 | — |
case-05 | pass→pass | 9,464 | 4,081 | -57% | 1 | 1 | 0% | 1,706 | 1,208 | -29% | 0 | 0 | — |
case-06 | pass→pass | 8,131 | 5,222 | -36% | 1 | 1 | 0% | 1,418 | 1,439 | +1% | 0 | 0 | — |
case-07 | fail→pass | 8,326 | 6,231 | -25% | 1 | 1 | 0% | 1,462 | 1,525 | +4% | 0 | 0 | — |
case-08 | pass→pass | 7,292 | 4,338 | -41% | 1 | 1 | 0% | 1,245 | 1,232 | -1% | 0 | 0 | — |
case-10 | pass→pass | 16,392 | 9,862 | -40% | 1 | 1 | 0% | 2,791 | 2,347 | -16% | 0 | 0 | — |
case-11 | fail→pass | 13,634 | 5,811 | -57% | 1 | 1 | 0% | 2,608 | 1,568 | -40% | 0 | 0 | — |
case-12 | fail→pass | 23,998 | 3,786 | -84% | 1 | 1 | 0% | 1,889 | 1,176 | -38% | 0 | 0 | — |
case-13 | pass→pass | 13,106 | 5,120 | -61% | 1 | 1 | 0% | 2,169 | 1,312 | -40% | 0 | 0 | — |
case-14 | fail→pass | 32,261 | 2,151 | -93% | 1 | 1 | 0% | 2,580 | 848 | -67% | 0 | 0 | — |
case-15 | pass→pass | 12,471 | 7,076 | -43% | 1 | 1 | 0% | 2,232 | 1,770 | -21% | 0 | 0 | — |
case-16 | fail→pass | 15,030 | 7,206 | -52% | 1 | 1 | 0% | 2,453 | 1,724 | -30% | 0 | 0 | — |
case-17 | fail→pass | 13,500 | 11,733 | -13% | 1 | 1 | 0% | 2,578 | 2,717 | +5% | 0 | 0 | — |
case-18 | fail→pass | 7,868 | 3,954 | -50% | 1 | 1 | 0% | 1,446 | 1,226 | -15% | 0 | 0 | — |
case-19 | pass→pass | 11,231 | 4,562 | -59% | 1 | 1 | 0% | 1,961 | 1,395 | -29% | 0 | 0 | — |
case-20 | pass→pass | 7,680 | 5,613 | -27% | 1 | 1 | 0% | 1,525 | 1,500 | -2% | 0 | 0 | — |
case-21 | pass→pass | 8,547 | 6,219 | -27% | 1 | 1 | 0% | 1,580 | 1,724 | +9% | 0 | 0 | — |
case-22 | pass→pass | 15,683 | 13,523 | -14% | 1 | 1 | 0% | 2,667 | 2,871 | +8% | 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, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +45 percentage points is the difference between those two pass rates over the 21 comparable cases.
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.