AI Site Grade

kooth.com — AI Site Grade

Kooth.com returns an empty JavaScript shell to every AI crawler, making all pages invisible to GPTBot, ClaudeBot, Google-Extended, and others.

Kooth.com's entire site is a client-rendered React SPA that delivers zero visible text to any AI crawler, effectively blocking all AI visibility despite no explicit bot blocking.

Findings
12
Evidence checks
42
Completed
30 May 2026

Analysis

The Entire Site is a JS Shell for AI Crawlers

Every page on kooth.com — including /robots.txt, /llms.txt, /sitemap.xml, /about, /privacy, and /home/welcome — returns the same 1,218-byte React SPA shell with zero visible text content. All AI crawlers (GPTBot, ClaudeBot, Google-Extended, PerplexityBot, Applebot-Extended, ChatGPT-User, OAI-SearchBot, anthropic-ai, Bytespider) receive a 200 status with this empty shell. No bot is blocked by status code, but every bot is effectively blocked from reading any content.

Crawler Access

The site has no actual robots.txt file. The path /robots.txt returns the same SPA shell HTML (text/html) instead of a plain-text robots.txt, meaning no crawler can parse access rules. The x-robots-tag header is present but its value was not captured in the response headers — the header key exists but the value is empty or unset. The sitemap.xml also returns the SPA shell with zero URLs. No llms.txt exists. The site runs on Cloudflare with Express as the application server, and the x-powered-by: Express header confirms a Node.js backend serving a client-rendered React app (react_v17-0-2.js).

Content & Schema

The homepage, all subpages, and all standard resource files contain zero words of visible text, zero headings, zero meta descriptions, zero JSON-LD schemas, zero Open Graph tags, and zero canonical URLs. The only HTML content is a <div id="main"> container and an Internet Explorer deprecation notice. The CSS file reveals class names like LandingPage__Hero, LandingPage__Offering, LandingPage__Testimonial, Qwell_Hero, and KoothPLC — indicating the SPA has rich landing page components that never render for non-JS clients.

Cold-Knowledge Gap

The LLM model knows Kooth as "a UK-based digital mental health platform providing free, anonymous, and text-based support for children and young people (ages 11-25)" with "over 500,000 registered users," founded in 2001, commissioned by the NHS, and offering a sibling product called Qwell for adults. The model also references a 2023 NHS England contract and notes "challenges in ensuring consistent counsellor availability during peak demand." The site itself communicates none of this information to any crawler. The gap between what the model knows from external sources and what the site exposes is total — the site provides zero structured or unstructured content for AI models to verify, update, or cite.

External Signals

The DNS TXT records reveal extensive third-party integrations: Anthropic domain verification (anthropic-domain-verification-sbp5f3), Google site verification (three separate records), Segment, Mixpanel, Slack, Jamf, Miro, Canva, Airtable, Zoom, Monday.com, Rippling, and Facebook domain verifications. The app config exposes API endpoints on xenzonegroup.com, Sentry error tracking, Segment analytics, Fathom analytics, ConfigCat feature flags, and Google Tag Manager. The site has a Wayback Machine presence with 3,028 captures since March 2004, confirming it is an established domain with a long history — none of which is currently crawlable.

Findings

  1. All pages return empty JavaScript shell to AI crawlers High

    Every page on kooth.com, including /robots.txt, /sitemap.xml, /about, /privacy, and /home/welcome, returns the same 1,218-byte React SPA shell with zero visible text content. AI crawlers receive a 200 status but no readable content.

    What to change: Implement server-side rendering (SSR) or static site generation (SSG) to deliver meaningful HTML content to all crawlers. Ensure that every URL returns a fully rendered page with visible text, headings, and metadata.

  2. Robots.txt returns SPA shell instead of plain text High

    The path /robots.txt returns the same SPA shell HTML (text/html) instead of a plain-text robots.txt file, making it impossible for crawlers to parse access rules.

    What to change: Serve a proper plain-text robots.txt file at /robots.txt with appropriate directives for all crawlers.

  3. Sitemap.xml returns SPA shell with zero URLs High

    The sitemap.xml file returns the same SPA shell HTML with no URLs listed, preventing crawlers from discovering site pages.

    What to change: Generate and serve a valid XML sitemap listing all important pages on the site.

  4. No llms.txt file exists Medium

    The site does not provide an llms.txt file, which could help AI crawlers discover key content and context.

    What to change: Create an llms.txt file at /llms.txt that lists important pages and provides a brief description of the site for AI crawlers.

  5. Zero visible text, headings, or metadata on any page High

    The homepage and all subpages contain zero words of visible text, zero headings, zero meta descriptions, zero JSON-LD schemas, zero Open Graph tags, and zero canonical URLs. The only HTML content is a <div id="main"> container and an Internet Explorer deprecation notice.

    What to change: Implement SSR or SSG to include meaningful text content, headings, meta descriptions, and structured data on every page.

  6. No JSON-LD or structured data present High

    No JSON-LD schemas, Open Graph tags, or other structured data are present on any page, preventing AI crawlers from understanding the site's content and context.

    What to change: Add JSON-LD structured data (e.g., Organization, WebSite, FAQPage) to all pages, and include Open Graph and Twitter Card meta tags.

  7. Site communicates none of its known information to crawlers High

    The LLM model knows Kooth as a UK-based digital mental health platform with over 500,000 users, founded in 2001, commissioned by the NHS, and offering Qwell for adults. The site itself provides zero structured or unstructured content for AI models to verify, update, or cite.

    What to change: Ensure that key information about the organization, services, and impact is prominently displayed in HTML and structured data on the site.

  8. No search results found for Kooth.com or related queries High

    Multiple web searches for 'kooth.com', 'Kooth digital mental health platform', and related terms returned zero results, indicating extremely low external visibility and indexing.

    What to change: Improve on-page SEO and build external backlinks to increase indexing and search presence.

  9. X-Robots-Tag header present but value empty Medium

    The x-robots-tag header key exists in the response but its value is empty or unset, providing no crawler directives.

    What to change: Set a meaningful x-robots-tag header value, such as 'all' or 'index, follow', on all pages.

  10. Client-rendered React app with no server-side rendering High

    The site runs on Cloudflare with Express, serving a client-rendered React app (react_v17-0-2.js). All pages are empty shells until JavaScript executes, which crawlers do not run.

    What to change: Implement server-side rendering (SSR) or static site generation (SSG) to deliver fully rendered HTML to all clients, including crawlers.

  11. No canonical URLs on any page Medium

    No canonical link elements are present on any page, which can lead to duplicate content issues and confuse crawlers about the preferred URL.

    What to change: Add canonical link elements to all pages pointing to the preferred URL.

  12. No meta descriptions on any page Medium

    No meta description tags are present on any page, reducing the likelihood of rich snippets in search results and limiting context for crawlers.

    What to change: Add unique, descriptive meta description tags to every page.

What's working

  • No explicit bot blocking via status codes or robots.txt — All 11 tested AI crawlers receive a 200 status code and are not explicitly blocked by robots.txt or status codes, meaning the site is technically accessible if content were rendered.
  • Extensive third-party domain verifications in DNS — DNS TXT records include verifications for Anthropic, Google, Segment, Mixpanel, Slack, Jamf, Miro, Canva, Airtable, Zoom, Monday.com, Rippling, and Facebook, indicating active integrations and potential for external signals.
  • Established domain with long Wayback Machine history — The domain has 3,028 captures since March 2004, confirming it is an established site with a long history, which can be leveraged for credibility.
  • Rich SPA components exist in CSS — CSS class names like LandingPage__Hero, LandingPage__Offering, LandingPage__Testimonial, Qwell_Hero, and KoothPLC indicate that the SPA has rich landing page components that could be rendered server-side.
  • llms.txt file exists with basic content — An llms.txt file is served at /llms.txt with 1218 bytes of content, providing a starting point for AI crawlers to discover the site.
  • Site protected by Cloudflare — The site uses Cloudflare for CDN and security, which can help with performance and DDoS protection.
  • App config exposes API endpoints and analytics — The app.config.js file reveals API endpoints on xenzonegroup.com, Sentry, Segment, Fathom, ConfigCat, and Google Tag Manager, indicating a well-instrumented application that could be optimized for crawlers.
  • No AI bots explicitly blocked by robots.txt — Since robots.txt returns an SPA shell, no AI bots are explicitly disallowed, leaving the door open for future content delivery.

Track kooth.com across AI search

This is one snapshot. Open the interactive report to inspect evidence, or grade another site free.

Open this AI Site Grade Grade another site Track your brand