Eigen onderzoek
Wat missen AI-crawlers als ze JavaScript overslaan?
We laadden elke homepage die onze bot HTML gaf twee keer: als kale HTML en met JavaScript. Op 20 oktober 2026 hing gestructureerde data bijna nooit van JavaScript af: maar 0,3% van die homepages van Nederlandstalige sites in de Curlie-webgids kreeg zijn JSON-LD pas via JavaScript. Bij tekst ligt dat anders. Op 13,2% van die homepages staat minder dan de helft van de woorden in de HTML die een bot zonder JavaScript krijgt.
Gemeten op 20 oktober 2026
- van de Nederlandstalige sites in de Curlie-webgids heeft JSON-LD pas na JavaScript
- 0,3%
- heeft de meeste tekst pas na JavaScript
- 13,2%
- toont de hoofdkop (h1) pas na JavaScript
- 1,1%
Wat we hebben getest
Een webpagina komt in twee stappen binnen. Eerst stuurt de server HTML. Daarna voert de browser de JavaScript van de pagina uit, en die kan tekst, koppen en gestructureerde data toevoegen.
Niet elke bot doet die tweede stap. Volgens een logstudie van Vercel uit 2024 halen de grote AI-crawlers JavaScript-bestanden wel op, maar voeren ze die niet uit. De web-fetch-tool van Anthropic voor ontwikkelaars ondersteunt volgens de eigen documentatie geen pagina's die met JavaScript zijn gebouwd. Google is anders: dat rendert pagina's wel.
Dus laadden we elke homepage twee keer, een paar seconden na elkaar en met dezelfde botnaam: één keer als kale HTML, zoals een bot zonder JavaScript hem ziet, en één keer in een echte Chrome-browser die de JavaScript uitvoert. Daarna vergeleken we de twee.
Gestructureerde data die alleen met JavaScript verschijnt
43,2% van de Nederlandstalige homepages heeft JSON-LD in de kale HTML. Maar 0,3% krijgt het alleen via JavaScript, en bij 0,5% voegt JavaScript extra types toe. Voor gestructureerde data is de kale HTML dus meestal het hele verhaal.
| Meting | Top 10.000 | 10.001–100.000 | 100.001–1 miljoen | Nederlandstalig | Duitstalig |
|---|---|---|---|---|---|
| Heeft JSON-LD in de kale HTML | 51,2%46,1%–56,3% | 51%45,9%–56% | 49%43,8%–54,2% | 43,2%38,2%–48,3% | 33%28,2%–38% |
| Heeft JSON-LD na JavaScript | 52,3%47,2%–57,3% | 52,6%47,5%–57,6% | 49,9%44,6%–55,1% | 43,2%38,2%–48,3% | 33,5%28,8%–38,6% |
| JSON-LD alleen na JavaScript | 1,3%0,6%–3,1% | 1,6%0,8%–3,5% | 0,9%0,3%–2,5% | 0,3%0%–1,5% | 0,6%0,2%–2,1% |
| JavaScript voegt extra types toe | 1,3%0,6%–3,1% | 0,3%0%–1,5% | 0,6%0,2%–2,1% | 0,5%0,1%–2% | 0,6%0,2%–2,1% |
| JavaScript haalt het weer weg | 0,3%0%–1,5% | 0%0%–1% | 0%0%–1,1% | 0,3%0%–1,5% | 0%0%–1,1% |
| Vergeleken homepages (n) | 371 | 367 | 349 | 368 | 349 |
Kapotte JSON-LD is ook zeldzaam: 1,3% van de homepages met JSON-LD in de kale HTML heeft een blok dat geen geldige JSON is. Zo'n blok is helemaal niet als gestructureerde data te lezen. Onze schemavalidator leest de kale HTML op dezelfde manier en wijst de precieze regel aan.
| Meting | Top 10.000 | 10.001–100.000 | 100.001–1 miljoen | Nederlandstalig | Duitstalig |
|---|---|---|---|---|---|
| Minstens één blok is geen geldige JSON | 0,5%0,1%–2,9% | 1,6%0,5%–4,6% | 2,9%1,3%–6,7% | 1,3%0,3%–4,5% | 0,9%0,2%–4,8% |
| Homepages met JSON-LD in de kale HTML (n) | 190 | 187 | 171 | 159 | 115 |
Onder elk percentage staat een bandbreedte: met 95% zekerheid ligt het echte percentage tussen die twee getallen. Kolom 1-3 zijn populaire sites op rang in de Tranco-lijst, kolom 4-5 Nederlandstalige en Duitstalige sites uit de Curlie-webgids.
Titel, beschrijving en hoofdkop
De paginatitel staat bijna altijd in de kale HTML: maar 0,5% van de Nederlandstalige homepages voegt hem toe met JavaScript. Ook de hoofdkop staat er hier bijna altijd: alleen bij 1,1% verschijnt de h1 pas na JavaScript. Bij populaire sites gebeurt dat vaker, zie de tabel.
| Meting | Top 10.000 | 10.001–100.000 | 100.001–1 miljoen | Nederlandstalig | Duitstalig |
|---|---|---|---|---|---|
| Paginatitel | 1,1%0,4%–2,7% | 1,6%0,8%–3,5% | 0,9%0,3%–2,5% | 0,5%0,1%–2% | 0,3%0,1%–1,6% |
| Metabeschrijving | 1,1%0,4%–2,7% | 1,6%0,8%–3,5% | 0,9%0,3%–2,5% | 1,1%0,4%–2,8% | 0,6%0,2%–2,1% |
| Hoofdkop (h1) | 6,5%4,4%–9,4% | 8,4%6%–11,7% | 5,7%3,7%–8,7% | 1,1%0,4%–2,8% | 0,9%0,3%–2,5% |
| Vergeleken homepages (n) | 371 | 367 | 349 | 368 | 349 |
De tekst zelf
Op de typische Nederlandstalige homepage staat 98,5% van de woorden die een browser toont ook in de kale HTML. Maar op 13,2% van de homepages staat minder dan de helft van de tekst er zonder JavaScript. Een bot die JavaScript overslaat, ziet van die pagina's maar een deel.
| Meting | Top 10.000 | 10.001–100.000 | 100.001–1 miljoen | Nederlandstalig | Duitstalig |
|---|---|---|---|---|---|
| Minder dan de helft van de woorden staat in de kale HTML | 26,4%22,1%–31,1% | 23,9%19,8%–28,6% | 16,3%12,8%–20,5% | 13,2%10,1%–17,1% | 8%5,6%–11,4% |
| Vergeleken homepages (n) | 368 | 360 | 344 | 363 | 348 |
| Meting | Top 10.000 | 10.001–100.000 | 100.001–1 miljoen | Nederlandstalig | Duitstalig |
|---|---|---|---|---|---|
| Woorden in de kale HTML | 948 | 710 | 830 | 453 | 505 |
| Woorden na JavaScript | 1.409 | 1.058 | 1.044 | 523 | 552 |
Wil je zien wat een bot zonder JavaScript van je pagina krijgt? Open de paginabron (Ctrl+U, of Cmd+Option+U op een Mac) in plaats van de pagina zelf. Of laat onze gratis GEO-analyse de pagina checken.
Wat dit niet bewijst
- Het laat niet zien dat AI-tools gestructureerde data gebruiken om bronnen te kiezen, of dat je vaker geciteerd wordt als je het toevoegt.
- Wij zijn geen AI-crawler. Sites kunnen AI-bots andere HTML sturen dan ons, op basis van de botnaam of het IP-adres.
- Alleen homepages. Productpagina's en artikelen kunnen zich anders gedragen.
- We tellen alle tekst in de HTML, ook tekst die op het scherm verborgen is, aan beide kanten. We controleren niet wat een bezoeker echt ziet.
- We klikten nergens op. Waar een cookie- of toestemmingsbanner verschijnt, kan de pagina na JavaScript de tekst van die banner bevatten, of juist minder van de pagina zelf.
- Tekst in shadow DOM (gebruikt door sommige webcomponenten) zit niet in de HTML die wij lezen, dus die telden we ook na JavaScript niet mee.
- Het zegt niets over Google: Google rendert JavaScript voordat het een pagina indexeert.
Zo hebben we het gedaan
We trokken willekeurig 1.500 sites uit elk van vijf groepen: drie rangblokken van de Tranco-lijst 467YX met populaire websites (rang 1-10.000, 10.001-100.000 en 100.001-1.000.000), plus de Nederlandstalige en Duitstalige delen van de Curlie-webgids (47.502 en 309.045 sites die met hun homepage vermeld staan). Door een vaste startwaarde voor het toeval trekt iedereen met dezelfde twee bestanden precies dezelfde sites.
Van de sites waarvan de homepage in onze robots.txt-test normaal opende, namen we per groep de eerste 400 in willekeurige volgorde. Voordat we een pagina laadden, haalden we robots.txt opnieuw op en gingen we alleen verder als die onze bot nog steeds toeliet.
De browser was Chrome/141.0.7390.76 (headless), met dezelfde botnaam als het kale verzoek: GEOScoreBot/1.0 (+https://geo-score.online). Hij wachtte tot de pagina klaar was met laden plus maximaal 10 seconden netwerkstilte, en las de pagina daarna uit. Afbeeldingen, video en lettertypes sloeg hij over, want die veranderen de tekst niet, en voor de eigen bestanden van de site volgde hij robots.txt. De run duurde ongeveer 32 minuten.
Beide versies gingen door dezelfde code: JSON-LD via de parser van onze schemavalidator, de paginatitel, metabeschrijving en h1 als ze niet leeg zijn, en de woorden in de body zonder scripts, stijlen en commentaar. Een pagina telt als "de meeste tekst heeft JavaScript nodig" als minder dan de helft van de woorden na JavaScript ook in de kale HTML staat.
We schreven de vragen, de steekproef en elke meting op vóór de crawl begon, en legden dat plan vast. Alles wat we na het zien van de data besloten, staat erbij als verkennend.
| Stap | Top 10.000 | 10.001–100.000 | 100.001–1 miljoen | Nederlandstalig | Duitstalig |
|---|---|---|---|---|---|
| Geprobeerde homepages | 400 | 400 | 400 | 400 | 400 |
| robots.txt zei nu nee tegen onze bot | 2 | 2 | 2 | 1 | 0 |
| Kaal HTML-verzoek mislukte | 0 | 2 | 0 | 0 | 0 |
| Browser kon de pagina niet laden | 6 | 11 | 24 | 24 | 47 |
| JavaScript stuurde de browser naar een andere pagina | 21 | 18 | 25 | 7 | 4 |
| Vergeleken: telt mee in de percentages | 371 | 367 | 349 | 368 | 349 |
| … waarvan nog aan het laden toen we stopten met wachten | 46 | 37 | 24 | 12 | 22 |
Als JavaScript een browser naar een andere pagina stuurt (een taalpagina, een cookiemuur, een botcheck), zijn de twee versies niet meer dezelfde pagina, dus laten we ze weg. Een bot zonder JavaScript blijft op de eerste pagina.
Ander onderzoek naar dezelfde vraag
Vercel (data van een leverancier, december 2024) onderzocht het verkeer van AI-crawlers op het eigen netwerk. Toen renderde geen van de grote AI-crawlers JavaScript: ze haalden JavaScript-bestanden op, maar zagen de content niet die JavaScript toevoegt. Gemini was de uitzondering, want die gebruikt de crawler van Google, en die rendert pagina's.
De documentatie van Anthropic over de web-fetch-tool, waarmee ontwikkelaars Claude een pagina laten openen, zegt dat websites die met JavaScript zijn gebouwd niet worden ondersteund. Dat gaat over de tool voor ontwikkelaars; over de Claude-app zegt de documentatie niets.
Check je eigen site
Dit zijn gemiddelden. Je eigen site doet wel of niet mee. Onze gratis tools checken het in een paar seconden.
Download de data
Elk getal op deze pagina staat in het CSV-bestand, één regel per getal, met de telling, de basis en de 95%-bandbreedte. Er staan alleen totalen in, geen namen van sites.
Download de cijfers (CSV)Je mag de cijfers hergebruiken onder de licentie CC BY 4.0. Noem GEO-Score en link naar deze pagina.
Bronnen van de sitelijsten
Populaire sites: de Tranco-lijst 467YX (Le Pochat e.a., NDSS 2019).
Nederlandstalige en Duitstalige sites: met inhoud van Curlie.org - de grootste door mensen bewerkte webgids. Draag bij door een website aan te melden of redacteur te worden. Curlie-data valt onder de licentie CC BY 3.0.
20 oktober 2026: eerste meting gepubliceerd.