DISC-006Find
Content available without JavaScript
Checks how much of your product pages' text is present in the HTML before any JavaScript runs.
What we check
On up to three product pages we compare the length of the visible text in the raw HTML your server sends with the length of the text after the page has been rendered in a browser. For each page we compute raw text length divided by rendered text length (capped at 1), then take the average across the pages.
Why it matters
Many AI crawlers and assistants fetch pages without running JavaScript, and those that do render may stop when a time budget runs out. If your product name, price, availability and description only appear after scripts run, those agents see an empty or partial page and cannot describe, compare or recommend the product accurately.
How we check
PASS: the average ratio is 0.6 or higher, meaning the raw HTML carries at least 60% as much text as the rendered page. FAIL: the average is below 0.6; this check does not give a WARN. A page whose rendered text is empty counts as a ratio of 1. SKIPPED: no product page was rendered successfully, because without a rendered version there is nothing to compare against; a failed render is never read as a page with no content.
How to fix it
- Render product pages on the server (server-side rendering or static generation) so the name, price, availability and description are in the initial HTML.
- If your storefront is a single-page app or a headless front end, turn on your framework's server-side rendering mode or add prerendering for product and category routes.
- Keep JSON-LD structured data in the initial HTML as well.
- Standard Shopify themes and WooCommerce themes render product content on the server; if your result is FAIL on those platforms, look for apps, plugins or theme code that load product content with JavaScript.
- Check a product page with JavaScript disabled, or view its source, to see what a non-rendering agent receives.
What good looks like
Initial HTML response (before JavaScript): <main> <h1>Linen Shirt</h1> <p class="price">€49.00</p> <p>In stock</p> <p>Relaxed-fit shirt in washed European linen. Mother-of-pearl buttons.</p> <form method="post" action="/cart/add">...</form> </main> Not this: <body> <div id="root"></div> <script src="/app.js"></script> </body>