JavaScript en SEO: wat Google wel en niet uitvoert
Google voert JavaScript uit, maar niet meteen. Googlebot leest eerst de kale HTML zoals je server die verstuurt en zet de pagina daarna in een renderwachtrij, waar een tweede verwerkingsronde de JavaScript uitvoert. Content die pas na die tweede ronde bestaat, komt later of onvolledig in de index. AI-crawlers zoals GPTBot voeren doorgaans helemaal geen JavaScript uit en zien alleen de server-HTML. De veiligste route: zorg dat kerninhoud, links en metadata al in de eerste HTML-respons staan.
- Googlebot leest eerst de kale HTML en voert JavaScript pas later uit in een renderwachtrij.
- AI-crawlers zoals GPTBot voeren doorgaans geen JavaScript uit en zien alleen de server-HTML.
- Zet kerninhoud, links en metadata altijd in de eerste HTML-respons van je server.
- Navigatie zonder echt anchor-element wordt door geen enkele crawler gevolgd.
Steeds meer sites laden menu’s, producten en teksten via JavaScript in, en steeds meer eigenaren ontdekken dat een deel daarvan onvindbaar is. Na dit artikel weet je welke content risico loopt, hoe je in twee minuten test wat crawlers echt zien, en hoe je het oplost zonder je site om te bouwen.
Hoe Google JavaScript verwerkt: eerst HTML, dan de renderwachtrij
Googlebot verwerkt een pagina in drie stappen: crawlen, renderen en indexeren. Eerst haalt de crawler de HTML op zoals je server die verstuurt. Links en content die daarin staan, worden direct verwerkt. Daarna komt de pagina in een renderwachtrij: een aparte ronde waarin een actuele Chromium-versie de JavaScript uitvoert en de pagina opbouwt zoals een bezoeker hem ziet. Pas dan wordt content die via JavaScript verschijnt zichtbaar voor de index.
Die tweede ronde draait wanneer er capaciteit is. Google noemt geen vaste doorlooptijd: meestal volgt het renderen snel, maar het kan langer duren, zeker op grote sites. Alles wat pas na het renderen bestaat, denk aan tekst, links en structured data, loopt dus per definitie achter op alles wat al in de eerste HTML stond. Voor een blog die wekelijks publiceert maakt dat weinig uit. Voor een webshop met dagelijks wisselende voorraad en prijzen wel.
Deze content loopt het grootste risico
- Client-side gerenderde pagina’s: single page applications (React, Vue, Angular) die een vrijwel lege HTML versturen en alles in de browser opbouwen. De eerste crawlronde ziet dan letterlijk niets.
- Dynamisch nageladen content: producten, prijzen, voorraadstatussen of reviews die via een API-call verschijnen nadat de pagina geladen is. Mislukt of vertraagt die call tijdens het renderen, dan ontbreekt de content in de index.
- Content na interactie: tekst die pas verschijnt na een klik, muisbeweging of formulierkeuze. Googlebot klikt niet en voert geen handelingen uit; wat interactie vereist, blijft onzichtbaar.
- Links zonder echte anchor: navigatie via
<div onclick>of buttons in plaats van<a href>. Zulke links volgt geen enkele crawler, dus de achterliggende pagina’s worden niet ontdekt. - Routing met een hekje: URL’s zoals /#/producten worden niet als aparte pagina’s gecrawld.
Content die wel in de HTML staat maar visueel verborgen is, zoals tabs en accordeons, is geen probleem: die tekst staat gewoon in de broncode en wordt geïndexeerd.
AI-crawlers voeren geen JavaScript uit
Voor Google is de renderwachtrij een vertraging. Voor AI-vindbaarheid is JavaScript vaak een muur. Crawlers zoals GPTBot (ChatGPT), ClaudeBot en PerplexityBot halen in de regel alleen de ruwe HTML op en voeren geen JavaScript uit. Staat je kerninhoud niet in die eerste respons, dan besta je voor deze systemen niet: geen bronvermelding in ChatGPT, geen citaat in Perplexity, geen plek in het antwoord.
Dat maakt server-side content in 2026 tot een direct GEO-argument. Nu AI Overviews en AI Mode een groeiend deel van de zoekresultaten vormen en assistenten steeds vaker live pagina’s ophalen als bron, is de kale HTML-respons opnieuw het belangrijkste document van je site. Alles wat je uitsluitend client-side rendert, doet in dat kanaal simpelweg niet mee, hoe goed de content ook is.
Zo test je in twee minuten wat crawlers zien
- Bekijk de broncode. Open je pagina, kies “Paginabron weergeven” en zoek met Ctrl+F naar een zin uit je belangrijkste content. Staat die er niet in, dan verschijnt hij pas via JavaScript.
- Zet JavaScript uit. Schakel JavaScript uit in je browserinstellingen en herlaad de pagina. Wat je nu ziet, is grofweg wat GPTBot en andere AI-crawlers te zien krijgen.
- Gebruik de URL-inspectie in Search Console. Bekijk de gecrawlde pagina, de gerenderde HTML en de screenshot. Zo zie je wat Google na het renderen overhoudt, inclusief resources die geblokkeerd of mislukt zijn.
Liever niet zelf uitzoeken? De gratis website-analyse brengt dit soort technische blokkades voor je in kaart, per pagina en met de bijbehorende oorzaak.
Oplossingen: van WordPress-voordeel tot server-side rendering
Goed nieuws voor de meeste WordPress-sites: klassieke thema’s en paginabuilders zoals Elementor leveren hun content server-side uit. De tekst staat gewoon in de HTML en dit hele probleem speelt er nauwelijks. Risico ontstaat vooral door onderdelen die content via JavaScript injecteren: reviewwidgets, voorraadcheckers, externe productfeeds en headless setups.
- Kies plugins en widgets die HTML uitleveren. Test elke nieuwe widget met de broncode-check hierboven voordat hij live gaat, zeker als er unieke content in staat zoals reviews of specificaties.
- Gebruik server-side rendering of static generation voor frameworks. Draai je toch op React of Vue, kies dan een setup als Next.js of Nuxt die de HTML op de server opbouwt. Het framework is niet het probleem, puur client-side renderen is dat wel.
- Werk met progressive enhancement. Zet basiscontent, links en metadata in de HTML en gebruik JavaScript alleen als verrijking bovenop een werkende pagina.
- Vermijd dynamic rendering als structurele oplossing. Een aparte voorgerenderde versie alleen voor bots beschouwt Google als tijdelijke workaround, met dubbel onderhoud en risico op verschillen tussen beide versies.
Veelgemaakte fouten met JavaScript en SEO
- JavaScript- of CSS-bestanden blokkeren in robots.txt. Google kan de pagina dan niet renderen zoals bezoekers hem zien en mist mogelijk content en layout-signalen. Fix: geef crawlers toegang tot alle resources.
- Canonical of meta robots via JavaScript aanpassen. De eerste HTML zegt dan A en de gerenderde versie B, met onvoorspelbare indexering als gevolg. Fix: zet deze tags server-side vast en wijzig ze nooit client-side.
- Belangrijke navigatie als klik-elementen bouwen. Zonder echte
<a href>volgt geen crawler de link en stroomt er geen linkwaarde door. Fix: elke belangrijke link krijgt een eigen URL in een echt anchor-element. - Lazy loading die content verstopt. Content die pas laadt bij scroll-events verschijnt niet, want Googlebot scrolt niet. Fix: gebruik native loading=”lazy” voor afbeeldingen en een IntersectionObserver voor overige content.
- Alleen testen met JavaScript aan. Jij ziet een complete pagina, crawlers vaak niet. Fix: maak de broncode-check en de test zonder JavaScript vast onderdeel van elke oplevering.
Structurele punten zoals server-side metadata en canonicals hoef je niet handmatig bij te houden: SEO Autopilot voert dit soort verbeteringen automatisch door, met een momentopname per wijziging zodat je altijd terug kunt.
Of je content ook zonder JavaScript leesbaar is, controleer je één keer handmatig en daarna nooit meer, tot een plugin-update het stilletjes breekt. Dit is typisch werk voor software. De technische scan van ViRank controleert doorlopend of kerninhoud, links en metadata in de eerste HTML-respons staan, weegt elk gevonden probleem op verwachte omzetimpact en laat jou beslissen wat er op je WordPress-site wordt aangepast. Start met de gratis SEO-check: binnen een paar minuten zie je of crawlers jouw content missen. Daarna kun je 14 dagen alles proberen, zonder creditcard.
