The analysis piece published alongside this report describes one site whose below-the-fold content sat at opacity zero for every visitor who had not yet moved a mouse, which includes every crawler. That was one site, found because a client asked why finished pages were not ranking. This report asks how common the condition is on a population of sites that live by being found, the homepages of Indian IT services companies.
Method
The sample frame is a hand-built list of 168 Indian IT services companies, drawn from the listed IT services firms on the NSE plus recognised mid-size private services and product-engineering firms with an Indian headquarters, deduplicated. The list is published with the report. No client of mine is on it. The first 100 domains that fetched and rendered successfully form the sample; 11 of the 168 failed outright (DNS or fetch failures, two 403s to the crawler, timeouts) and the remainder past 100 were not needed.
Each homepage was processed twice on 1 September 2026, from a residential connection, using a mobile Chrome user agent. First, a plain HTTP fetch with no JavaScript, word-counting the raw HTML. Second, a render in headless Chrome through Playwright with a 412 by 915 viewport, waiting for load plus three seconds, with no scrolling, no clicking and no input of any kind, which is the interaction budget a rendering crawler has.
In the rendered page, every element’s computed style was walked and the page’s words were partitioned into two piles. Words inside display:none subtrees were excluded entirely, because menus, modals and templates legitimately live there and a text-indexing crawler discounts them the same way. The hidden pile then counts words inside elements that exist in the layout but are invisible at that moment: computed opacity: 0, visibility: hidden, or positioned outside the viewport’s reachable area. Everything else is the visible pile. The hidden share is hidden over hidden plus visible. The crawl script, the domain list and the raw results are published with this report.
One caution before the numbers, because it is the honest heart of the method. Invisible-at-first-paint is not the same thing as hidden-from-Google. Some of what the hidden pile catches is navigation panels and carousel slides that hide with opacity instead of display:none, which is ordinary interface behaviour. The metric is therefore an upper bound on scroll-reveal hiding, and the comparison between sites with and without reveal-library signatures, below, is what separates the interface baseline from the animation problem.
The distribution
The median site had 29.2 percent of its rendered words invisible at first paint. Thirty sites kept the share under 10 percent, which this report treats as the clean baseline, the level ordinary opacity-hidden menus produce. From there the distribution runs uphill: 49 sites at 30 percent or more, 26 at half or more, and 9 sites above 70 percent, meaning the page a crawler snapshots without scrolling contains less than a third of the words the page holds.
The worst ten sites hid between 69 and 89 percent. At those levels the confounders cannot explain the number; no navigation menu holds seven times more text than the visible page.
What correlates with the hiding
Fifty-eight of the 100 sites carry a recognisable scroll-reveal signature in their markup: AOS attributes, WOW classes, animate-on-view class families, or similar. Their median hidden share is 32.9 percent. The 42 sites without any such signature have a median of 15.5 percent. The gap between those two medians is the animation layer’s contribution on the typical site, and it roughly doubles the invisible share.
Twenty-three sites carry a script-delay signature from a WordPress performance plugin family. Their median hidden share, 32.6 percent, sits at the reveal-group level, which is consistent with the mechanism in the companion analysis: the delay holds the reveal script, and the reveal script is what would have made the content visible.
The version of this problem that gets the conference talks, client-side rendering that leaves the raw HTML empty, is nearly absent. Four sites of 100 deliver less than 30 percent of their DOM words in the raw HTML, and exactly one serves a genuinely empty application shell. Indian IT services sites ship their words in the HTML. They then hide them with style.
The first screen
A separate measure counted the words actually visible inside the first viewport, the screen a visitor or a snapshot sees before any scroll. The median homepage showed 96 words there. Fifty-two sites showed fewer than 100 words on the first screen, and 21 showed fewer than 50, on pages whose full DOM typically holds one to four thousand. A first screen that is one hero line and a button is a design choice, and it is also the entire above-the-fold evidence a page offers about what it is.
What this does and does not prove
The numbers describe what a page looks like at first paint with no interaction. They do not measure rankings, and this report makes no claim that the 49 sites hiding 30 percent are being penalised. Google states that its renderer does not scroll or click, and its guidance treats content that has a visible path to revelation, tabs, accordions, differently from content with none. Text at opacity zero whose revealing script requires an interaction the renderer never performs is in the weakest position that guidance describes, and that is the position a quarter of this sample’s words are in. How heavily Google discounts them is not published, and I have not measured it here.
What the report does establish is that the pattern from the companion analysis is not an anecdote. Half of a competitive, search-dependent industry’s homepages tell a first-paint viewer that a third or more of their content is not there, and the correlation with reveal libraries says most of it is animation styling rather than interface necessity. The three-pass check in the companion piece takes twenty minutes per template. On this evidence, roughly every second site that runs it will find something.
Where I could be wrong
The hidden-share metric over-counts on sites whose menus and carousels hide with opacity, and the 10 percent baseline is my estimate of that interface noise, derived from the clean third of the sample rather than from inspecting every hidden element. A site at 25 percent might be all slider clones. The finding holds firmly at the top of the distribution and softly in the middle.
The render is an approximation of a rendering crawler, not a copy of one. Googlebot’s renderer uses its own viewport behaviour, waits differently, and evaluates pages with knowledge this crawl does not have. A site could also serve the verified crawler differently from a browser claiming to be mobile Chrome, and two sites in the frame refused this crawl entirely with a 403.
The sample is one industry, chosen because these companies sell digital competence and compete on search. The rates in retail, healthcare or publishing may differ, and the frame’s tilt towards firms large enough to be listed or well known probably tilts towards professionally rebuilt, animation-heavy sites. A random sample of small business sites might show less hiding, for the unglamorous reason that older sites animate less.
Sources
- Google Search Central, Understand JavaScript SEO basics
- Google Search Central, Fix Search-related JavaScript problems
- Google Search Central, mobile-first indexing best practices
- AOS, Animate On Scroll library
- Playwright documentation
- Crawl script, domain list, raw results and summary for this report, published alongside it [VERIFY: final public path for /data/r3-render/]