← Alle checks
AEOTypische ernst: Gemiddeld

Content toegankelijk zonder JavaScript

Detecteert of je site een bijna lege SPA zonder JS is, die AI-crawlers niet kunnen indexeren of citeren.

Wat het checkt

Deze scanner detecteert of je site een single-page application (SPA) is die bijna leeg binnenkomt wanneer die zonder JavaScript uit te voeren wordt geladen. Hij controleert hoeveel echte content beschikbaar is voordat de browser de code verwerkt.

Waarom het belangrijk is

Veel AI-crawlers en zoekmachines voeren geen JavaScript uit, dus als je content pas verschijnt nadat die met JS is geladen, is je pagina voor hen leeg en kunnen ze die niet indexeren of citeren. Dit komt heel vaak voor op sites die met moderne frameworks door vibe coders zijn gebouwd, zonder dat ze het doorhebben.

Hoe je het oplost

Gebruik server-side rendering (SSR) of statische generatie (SSG) zodat de HTML al met de belangrijkste tekst en links binnenkomt. De meeste moderne frameworks bieden deze optie; die inschakelen zorgt dat zowel Google als AI je echte content zien.

Hoe deze controle werkt

Scanaris downloadt de HTML van je pagina precies zoals de server hem serveert, zonder JavaScript uit te voeren, verwijdert scripts, stijlen, noscript-tags, templates en SVG's, en meet hoeveel zichtbare tekst er in de body overblijft. Hij opent alleen een bevinding, van gemiddelde ernst, als twee voorwaarden tegelijk gelden: die tekst is korter dan 250 tekens, en de HTML bevat een lege single-page-app-container, dus een <div> met id root, app, __next, __nuxt of q-app zonder inhoud. Een site met server-side rendering of statische generatie heeft tekst in de initiële HTML en wordt nooit gemeld; een site met weinig inhoud maar zonder SPA-container ook niet. De drempel is bewust laag om valse positieven te vermijden.

Waarom dit belangrijk is

Googlebot voert JavaScript uit, maar in een tweede ronde die dagen kan duren en met een beperkt budget. De crawlers van AI-assistenten (GPTBot, ClaudeBot, PerplexityBot) voeren het doorgaans helemaal niet uit: ze lezen de HTML die ze krijgen, punt. Is je HTML een <div id="root"></div> en een script, dan is je site voor hen leeg. Ze kunnen niet indexeren wat ze niet zien en niet citeren wat ze niet lezen, dus wanneer iemand ChatGPT naar jouw productcategorie vraagt, besta je niet. Het is het meest voorkomende probleem van sites die met AI-tools zijn gebouwd die een pure client-side React- of Vue-app genereren, en het meest onzichtbare, omdat in de browser alles er perfect uitziet.

Hoe je het oplost

  • Schakel server-side rendering in. In Nuxt staat het standaard aan (ssr: true); heb je het uitgezet, zet het dan weer aan. In Next.js rendert de App Router op de server tenzij je het component helemaal bovenaan met 'use client' markeert. In kale Vite met React of Vue is er geen SSR: stap over naar Next.js, Remix, Nuxt of Astro, of genereer de openbare pagina's als statische HTML.
  • Is migreren geen optie, prerender dan: genereer de HTML van de openbare routes tijdens de build (Nuxt nitro.prerender, statische export van Next.js, Astro standaard) of gebruik een prerenderingdienst die gerenderde HTML aan bots serveert.
  • Zet minimaal de essentiële inhoud in de HTML: de kop, de beschrijving van wat je doet en de hoofdlinks, ook al vervangt de app ze bij het laden. Dat is wat bots zien.
  • Controleer de pagina's die ertoe doen, niet alleen de homepage: de blog en productpagina's zijn wat assistenten citeren.

Controleer of het opgelost is

curl -s https://jouwdomein.nl | sed -e 's/<script[^>]*>.*<\/script>//g' -e 's/<[^>]*>/ /g' | tr -s ' \n' ' ' | wc -c

Blijft het resultaat steken op een paar dozijn tekens, dan rendert JavaScript de inhoud. Het zouden er duizenden moeten zijn. Andere manier: schakel in de browser JavaScript uit in de ontwikkelaarstools en herlaad; wat je ziet, zien de bots.

Veelgestelde vragen

Google indexeert me prima. Waarom zou ik me druk maken?

Omdat steeds meer mensen een assistent vragen in plaats van te zoeken, en die assistenten voeren je JavaScript niet uit. En omdat zelfs bij Google het uitgestelde renderen de indexering van je wijzigingen dagen vertraagt. De cijfers en de redenen staan in waarom met AI gebouwde apps onzichtbaar zijn voor AI.

Mijn app is een privédashboard achter een login. Geldt dit voor mij?

Nee: wat achter authenticatie zit, hoort niet geïndexeerd te worden. Deze controle telt voor de openbare pagina's, die je wilt laten verschijnen. Is je site alleen het dashboard plus een landingspagina, maak dan van de landingspagina HTML.

Ik heb SSR en er komt toch weinig tekst uit.

Dan levert de HTML structuur maar weinig echte inhoud, en loont het te controleren of de landingspagina wel iets vertelt. De koppen die die inhoud ordenen, worden bekeken door koppen.

Check het op je site

Scan je site gratis en zie of deze en 44 andere checks slagen, met een fixprompt voor elk probleem.

Mijn site gratis scannen

Uit de blog

Gerelateerde checks