Every one of the 569 English product pages on btartboxnails.com exceeds Googlebot’s 2 MB fetch limit. On 112 of them the Product schema sits past the cutoff and is never downloaded. On another 360 it survives by less than 150 KB.
Googlebot stops fetching at 2,097,152 uncompressed bytes. On these 112 pages the Product JSON-LD block begins after that point, so it is not in the portion Google receives. No price, no availability, no rating, no rich result. The deepest case sits at 3.672 MB, roughly 1.6 MB past the line.
This is the finding that matters more than the first. The median Product block lands at 1.894 MB, about 207 KB of headroom. A theme update, a new app embed, a longer description or a handful of extra reviews pushes these pages over. Combined with the 112 already broken, 472 of 569 pages (83%) are either failing or within 150 KB of failing.
These pages serve two separate Product JSON-LD blocks, roughly 5 KB apart. One carries offers only; the second adds aggregateRating. Duplicate top-level entities for the same item give Google no basis to choose, and the review markup is the copy at risk: on 111 pages the rating block is the one past the cutoff. This is independent of page weight and cheap to fix.
The horizontal axis below is byte position inside a single HTML response, from the first byte to 4 MB. Each bar counts product pages whose first Product block begins in that 100 KB slice. The vertical rule is Google’s documented stopping point.
n = 569 English product pages. Bars are counts of pages by the byte offset of their first Product JSON-LD block; the tall bar at 1.85–1.95 MB holds 358 pages. Red bars are past the fetch cutoff.
Read the same measurement as margin rather than position, and the exposure is clearer. Bands are exclusive and cover all 569 pages.
Distance from the first Product block to the 2 MB cutoff. Every page is counted once. Figures are labeled directly rather than by color alone.
The schema itself is not the problem. A Product block on this site is about 1,613 bytes. What matters is the 1.5 MB of markup that precedes it, which is why the block ends up where it does.
Three product pages were quoted in the earlier summary. All three figures are confirmed by this crawl. One product was referred to by a tidied-up display name rather than its actual URL, which would have made it hard to look up; the corrected handle is below.
| As labeled 21 Aug | Actual URL handle | Claimed total | Measured total | Claimed schema at | Measured schema at | Status |
|---|---|---|---|---|---|---|
| XCOATTIPS French, Short Square White | /products/french-x-coat-tips®-short-square-white-tips | 3.52 MB | 3.529 MB | 3.32 MB | 3.334 MB | Past cutoff |
| Bare Mixed Shades, Short Almond | /products/xcoattips®-bare-mixed-shades-short-almond | 2.64 MB | 2.647 MB | 2.48 MB | 2.486 MB | Past cutoff |
| Midnight Bride Stiletto | /products/midnight-bride-stiletto-nails-soft-gel-press-on | 3.13 MB | 3.181 MB | 1.89 MB | 1.895 MB | 207 KB margin |
Worth stating plainly: on Midnight Bride the Product block is inside the fetched portion. The original summary reported that figure accurately rather than rounding it past the line, and the same nuance holds across the catalog. The correct claim is not “the schema is past the cutoff” but “every page exceeds the limit, and on one page in five the schema is already beyond it.”
Google’s crawling documentation states that “Googlebot crawls the first 2MB of a supported file type” [1]. The same page says the fetch stops once that limit is reached and only the portion already downloaded is passed on for indexing consideration, and that the limit is applied to uncompressed data. That last detail is why this audit measures uncompressed bytes and not transfer size.
The 2 MB HTML figure was moved into that page in a February 2026 documentation update. Google stated the behavior itself did not change, only where it was written down; the previous 15 MB figure now describes a default across Google’s crawlers and fetchers rather than Googlebot’s HTML limit [2][3].
Paste the following into the browser console on any product page to reproduce a single row of the table. It reports the total uncompressed byte length of the HTML and the byte offset at which each JSON-LD block opens.
Ranked by how deep the first Product block sits beyond the 2 MB line. Every one of these is an XCOATTIPS French tip or kit variant, which is where the heaviest templates live. The strip in each row uses the same 0–4 MB axis as the chart above: the shaded bar is the extent of the page, the hairline is the 2 MB cutoff, the marker is where the first Product block begins. Full figures for all 569 pages are in the accompanying CSV.
| Product handle | Total HTML | Product block at | Margin to 2 MB | 2nd Product at | Reviews | Inline JS | img tags | Position | Status |
|---|---|---|---|---|---|---|---|---|---|
| xcoattips®-pink-pastel-french-kit-almond | 3.865 | 3.672 | −1712 KB | 3.722 | 8 | 2.320 | 621 | Past cutoff | |
| xcoattips®-french-short-almond-pink-pastel-tips | 3.686 | 3.494 | −1530 KB | 3.544 | 42 | 2.285 | 543 | Past cutoff | |
| xcoattips®-pink-pastel-french-kit-short-square | 3.593 | 3.400 | −1433 KB | 3.449 | 21 | 2.212 | 541 | Past cutoff | |
| xcoattips®-french-medium-almond-pink-pastel-tips | 3.580 | 3.388 | −1421 KB | 3.437 | 11 | 2.206 | 531 | Past cutoff | |
| xcoattips®-french-short-square-pink-pastel-tips | 3.572 | 3.379 | −1412 KB | 3.429 | 33 | 2.172 | 543 | Past cutoff | |
| xcoattips®-french-long-square-pink-pastel-tips | 3.558 | 3.366 | −1398 KB | 3.416 | 21 | 2.158 | 543 | Past cutoff | |
| xcoattips®-french-short-almond-red-tips | 3.550 | 3.357 | −1389 KB | 3.406 | 9 | 2.203 | 515 | Past cutoff | |
| xcoattips®-french-short-square-pink-pastel-tips-1 | 3.543 | 3.351 | −1384 KB | 3.401 | 30 | 2.148 | 543 | Past cutoff | |
| xcoattips®-pink-pastel-french-kit-medium-coffin | 3.539 | 3.348 | −1381 KB | 3.398 | 2 | 2.175 | 533 | Past cutoff | |
| xcoattips®-french-extra-short-oval-pink-pastel-tips | 3.530 | 3.338 | −1370 KB | 3.387 | 9 | 2.163 | 527 | Past cutoff | |
| french-x-coat-tips®-short-square-white-tips | 3.529 | 3.334 | −1366 KB | 3.386 | 93 | 1.965 | 631 | Past cutoff | |
| xcoattips®-french-peach-medium-almond-red-pastel-tips | 3.501 | 3.310 | −1341 KB | 3.359 | 14 | 2.155 | 515 | Past cutoff | |
| xcoattips®-french-short-almond-blue-pastel-tips | 3.501 | 3.308 | −1339 KB | 3.358 | 21 | 2.093 | 551 | Past cutoff | |
| xcoattips®-french-long-ballerina-pink-pastel-tips | 3.491 | 3.297 | −1329 KB | 3.347 | 5 | 2.108 | 535 | Past cutoff | |
| xcoattips®-french-short-square-red-tips | 3.486 | 3.295 | −1326 KB | 3.344 | 11 | 2.140 | 515 | Past cutoff | |
| french-x-coat-tips®-short-almond-white-tips | 3.475 | 3.283 | −1313 KB | 3.333 | 23 | 2.025 | 575 | Past cutoff | |
| xcoattips®-french-short-almond-purple-pastel-tips | 3.446 | 3.253 | −1283 KB | 3.303 | 18 | 2.034 | 551 | Past cutoff | |
| french-x-coat-tips®-short-coffin-white-tips | 3.439 | 3.246 | −1276 KB | 3.296 | 23 | 2.011 | 563 | Past cutoff | |
| xcoattips®-french-long-square-red-tips | 3.419 | 3.227 | −1256 KB | 3.276 | 11 | 2.075 | 515 | Past cutoff | |
| xcoattips®-french-white-long-square-white-tips | 3.408 | 3.215 | −1244 KB | 3.266 | 8 | 1.909 | 598 | Past cutoff | |
| french-x-coat-tips®-extra-short-square-white-tips | 3.370 | 3.176 | −1204 KB | 3.227 | 46 | 1.918 | 575 | Past cutoff | |
| xcoattips®-french-long-square-blue-pastel-tips | 3.333 | 3.141 | −1168 KB | 3.191 | 13 | 1.929 | 551 | Past cutoff | |
| french-x-coat-tips®-kit-short-coffin | 3.331 | 3.139 | −1166 KB | 3.188 | 32 | 1.944 | 544 | Past cutoff | |
| french-x-coat-tips®-kit-extra-short-oval | 3.327 | 3.135 | −1162 KB | 3.184 | 20 | 1.876 | 576 | Past cutoff | |
| xcoattips®-brighter-pastel-french-kit-almond | 3.327 | 3.134 | −1162 KB | 3.184 | 10 | 1.915 | 561 | Past cutoff |
All figures in MB unless labeled. Margin is the distance from the first Product block to the 2 MB cutoff; negative means the block is past it. Reviews is the reviewCount carried in the aggregateRating block.
Prepared by Responsival · measured 8 September 2026 · 569 of 569 pages fetched, 0 errors. All byte figures are uncompressed UTF-8 lengths of the HTML response, measured client-side with the script in section 05.