Wat de RELACON website-check controleert

De check voert 193 regels uit in vier gebieden. Elke regel hieronder legt uit wat er gemeten wordt, waarom het telt, hoe een oplossing eruitziet en waar de eis vandaan komt.

Vier gebieden

Wat er wordt opgehaald

De pagina zelf, haar http- en www-variant, robots.txt, sitemap.xml, llms.txt, security.txt, favicon, het manifest van de web-app, een niet-bestaand adres voor de 404-test, het MTA-STS-beleid, tot vijf afbeeldingen en de og:image. Daarnaast wordt de pagina één keer als Googlebot en één keer als GPTBot opgehaald (onze controle maakt zich daarbij kenbaar) om botblokkades te herkennen. DNS-records worden gelezen via DNS-over-HTTPS.

SEO-basis (64 controles)

HTTPS

KritiekPagina laadt via HTTPSseo.https.loads
Wat wordt gecontroleerd
Of de pagina bereikbaar is en uiteindelijk via HTTPS wordt geleverd.
Waarom het telt
Browsers markeren HTTP-pagina's als niet veilig en Google geeft de voorkeur aan HTTPS. Zonder versleuteling kunnen derden de inhoud lezen of wijzigen.
Voorbeeld
`https://www.example.com/` in plaats van `http://www.example.com/`
Bron
web.dev: Why HTTPS matters
KritiekHTTP verwijst met 301 door naar HTTPSseo.https.redirect
Wat wordt gecontroleerd
Of het `http://`-adres van de pagina permanent (301 of 308) doorverwijst naar het HTTPS-adres.
Waarom het telt
Oude links en ingetypte adressen zonder `https` komen anders op de onversleutelde versie terecht. Een permanente doorverwijzing geeft zoekmachines één duidelijke hoofd-URL.
Voorbeeld
`http://example.com/` → `301` → `https://example.com/`
Bron
Google Search Central: Redirects and Google Search
KritiekGeldig TLS-certificaatseo.https.cert
Wat wordt gecontroleerd
Of de HTTPS-verbinding zonder certificaatfouten tot stand komt.
Waarom het telt
Bij een verlopen of niet passend certificaat tonen browsers een waarschuwingspagina en breken crawlers het verzoek af.
Voorbeeld
Certificaat voor `example.com` en `www.example.com`, automatisch verlengd (bijv. Let's Encrypt).
Bron
MDN: Transport Layer Security
GemiddeldHSTS ingesteldseo.https.hsts
Wat wordt gecontroleerd
Of het antwoord de header `Strict-Transport-Security` bevat.
Waarom het telt
Met HSTS laden browsers de website alleen nog via HTTPS, ook als iemand `http://` intypt. Daarmee vervalt het eerste onversleutelde verzoek.
Voorbeeld
`Strict-Transport-Security: max-age=63072000; includeSubDomains`
Bron
MDN: Strict-Transport-Security

Doorverwijzingen

Gemiddeldwww en zonder www eenduidigseo.redirect.www
Wat wordt gecontroleerd
Of de variant met of zonder `www` op dezelfde host uitkomt als de gecontroleerde pagina.
Waarom het telt
Leveren beide varianten inhoud, dan zien zoekmachines dubbele pagina's en worden signalen over twee adressen verdeeld.
Voorbeeld
`https://www.example.com/` → `301` → `https://example.com/`
Bron
Google Search Central: Consolidate duplicate URLs
GemiddeldMaximaal 2 doorverwijzingenseo.redirect.hops
Wat wordt gecontroleerd
Hoeveel doorverwijzingen er nodig zijn tot de uiteindelijke pagina antwoordt.
Waarom het telt
Elke stap kost laadtijd, en crawlers volgen lange ketens niet eindeloos.
Voorbeeld
`http://example.com` → `https://example.com/` in één stap in plaats van via `www` en een taalpad.
Bron
Google Search Central: Redirects and Google Search
LaagGeen 302 voor permanente doorverwijzingenseo.redirect.302
Wat wordt gecontroleerd
Of er onderweg naar de pagina een tijdelijke doorverwijzing (302 of 307) voorkomt.
Waarom het telt
Een tijdelijke doorverwijzing vertelt zoekmachines dat het oude adres terugkomt. Bij een definitieve verhuizing is 301 of 308 het duidelijkere signaal.
Voorbeeld
`HTTP/1.1 301 Moved Permanently` in plaats van `302 Found`
Bron
Google Search Central: Redirects and Google Search

Indexeerbaarheid

KritiekGeen noindexseo.index.noindex
Wat wordt gecontroleerd
Of de robots-metatag of de header `X-Robots-Tag` `noindex` bevat.
Waarom het telt
Met `noindex` verschijnt de pagina niet in de zoekresultaten. Vaak is dat na een relaunch blijven staan van de testomgeving.
Voorbeeld
`<meta name="robots" content="index, follow">` of de tag helemaal weglaten.
Bron
Google Search Central: Block indexing with noindex
KritiekNiet geblokkeerd door robots.txtseo.index.robotsblocked
Wat wordt gecontroleerd
Of een `Disallow`-regel in robots.txt het pad van de pagina voor Googlebot blokkeert.
Waarom het telt
Geblokkeerde pagina's kan Google niet lezen. Ze verschijnen hooguit zonder beschrijving of helemaal niet.
Voorbeeld
`User-agent: *` met `Disallow: /intern/` in plaats van `Disallow: /`
Bron
Google Search Central: Introduction to robots.txt

Title

KritiekTitle aanwezigseo.title.present
Wat wordt gecontroleerd
Of de pagina een niet-leeg `<title>`-element heeft.
Waarom het telt
De title is de basis voor de kop in de zoekresultaten en de naam in het browsertabblad.
Voorbeeld
`<title>Belastingadvies in Utrecht | Voorbeeld B.V.</title>`
Bron
Google Search Central: Influencing your title links
GemiddeldTitle 30–60 tekensseo.title.length
Wat wordt gecontroleerd
Of de title tussen 30 en 60 tekens lang is.
Waarom het telt
Heel korte titles zeggen weinig, heel lange worden in de zoekresultaten afgekapt. Google hanteert geen vaste grens; het bereik is een richtwaarde.
Voorbeeld
`Belastingadvies Utrecht | Voorbeeld B.V.` (38 tekens)
Bron
Google Search Central: Influencing your title links
GemiddeldMaar één title-elementseo.title.unique
Wat wordt gecontroleerd
Of de HTML precies één `<title>`-element bevat.
Waarom het telt
Bij meerdere titles is onduidelijk welke geldt. Dat gebeurt vaak als zowel een thema als een plug-in er een toevoegt.
Voorbeeld
Eén `<title>` in de `<head>`.
Bron
MDN: <title> element
LaagTitle niet gelijk aan H1seo.title.h1
Wat wordt gecontroleerd
Of de title en de eerste H1 woordelijk gelijk zijn.
Waarom het telt
Title en H1 hebben elk een eigen taak: de title verkoopt de pagina in de zoekresultaten, de H1 leidt de lezer op de pagina. Twee verschillende formuleringen benutten beide.
Voorbeeld
Title `Belastingadvies Utrecht | Voorbeeld B.V.`, H1 `Uw belastingadviseur in Utrecht`
Bron
Google Search Central: Influencing your title links
GemiddeldTitle heeft minstens twee woordenseo.title.words
Wat wordt gecontroleerd
De title bestaat uit minstens twee woorden.
Waarom het telt
Eén woord vertelt zoekmachines weinig over de pagina.
Voorbeeld
Fout: „Home”. Goed: „Webdesign voor kleine bedrijven”.
Bron
Google Search Central
LaagTitle noemt meer dan het merkseo.title.notbrand
Wat wordt gecontroleerd
De title bevat naast de merknaam ook een onderwerp.
Waarom het telt
Een title met alleen de bedrijfsnaam wordt in de zoekresultaten zelden aangeklikt.
Voorbeeld
Fout: „Voorbeeld B.V.”. Goed: „Belastingadvies Utrecht | Voorbeeld”.
Bron
Google Search Central

Metabeschrijving

GemiddeldMetabeschrijving aanwezigseo.meta.present
Wat wordt gecontroleerd
Of de pagina een `<meta name="description">` met inhoud heeft.
Waarom het telt
Google gebruikt de beschrijving vaak als tekst onder het zoekresultaat. Zonder beschrijving kiest Google zelf een fragment, dat niet altijd past.
Voorbeeld
`<meta name="description" content="Belastingadvies voor zzp'ers in Utrecht. Gratis kennismakingsgesprek.">`
Bron
Google Search Central: Control your snippets in search results
LaagMetabeschrijving 70–160 tekensseo.meta.length
Wat wordt gecontroleerd
Of de metabeschrijving tussen 70 en 160 tekens lang is.
Waarom het telt
Korte beschrijvingen laten ruimte in het zoekresultaat onbenut, lange worden afgekapt. Het bereik is een richtwaarde, geen eis van Google.
Voorbeeld
Twee korte zinnen: aanbod, plaats, volgende stap.
Bron
Google Search Central: Control your snippets in search results
GemiddeldMetabeschrijving is geen opvultekstseo.meta.placeholder
Wat wordt gecontroleerd
De metabeschrijving bevat eigen tekst in plaats van opvultekst of de standaardtekst van het CMS.
Waarom het telt
Opvulteksten verschijnen letterlijk in de zoekresultaten en wekken weinig vertrouwen.
Voorbeeld
Fout: „Gewoon weer een WordPress-website”. Goed: een zin over de pagina.
Bron
Google Search Central
LaagMetabeschrijving verschilt van de titleseo.meta.nottitle
Wat wordt gecontroleerd
De metabeschrijving en de title zijn niet dezelfde tekst.
Waarom het telt
Twee gelijke teksten verspillen ruimte in het zoekresultaat.
Voorbeeld
Fout: title „Voorbeeld | Webdesign” en beschrijving „Voorbeeld - Webdesign”.
Bron
Google Search Central

Canonical

GemiddeldCanonical aanwezigseo.canonical.present
Wat wordt gecontroleerd
Of de pagina een `<link rel="canonical">` met een adres heeft.
Waarom het telt
Dezelfde pagina is vaak onder meerdere adressen bereikbaar (met parameters, met schuine streep aan het eind). De canonical zegt welk adres in de index hoort.
Voorbeeld
`<link rel="canonical" href="https://example.com/diensten/">`
Bron
Google Search Central: Consolidate duplicate URLs
LaagCanonical is absoluutseo.canonical.absolute
Wat wordt gecontroleerd
Of de canonical een volledig adres met `https://` en domein is.
Waarom het telt
Relatieve waarden werken meestal, maar wijzen bij kopieën, proxy's of een verkeerde basis-URL al snel naar het verkeerde adres. Google raadt absolute URL's aan.
Voorbeeld
`https://example.com/diensten/` in plaats van `/diensten/`
Bron
Google Search Central: Consolidate duplicate URLs
GemiddeldCanonical wijst naar een bereikbare paginaseo.canonical.self
Wat wordt gecontroleerd
Of de canonical naar hetzelfde domein wijst als de gecontroleerde pagina.
Waarom het telt
Een canonical naar een ander domein (zoals het oude domein of een testomgeving) verplaatst de pagina in de index daarheen.
Voorbeeld
Pagina `https://example.com/blog/` met canonical `https://example.com/blog/`
Bron
Google Search Central: Consolidate duplicate URLs
GemiddeldCanonical komt overeen met de geleverde URLseo.canonical.matches
Wat wordt gecontroleerd
De canonical noemt hetzelfde adres dat de server levert, met schuine streep, hoofdletters en standaardpoort genormaliseerd.
Waarom het telt
Wijst de canonical ergens anders heen, dan indexeert Google mogelijk het verkeerde adres.
Voorbeeld
Geleverd: `/contact` → `<link rel="canonical" href="/contact">`.
Bron
Google Search Central
LaagCanonical zonder trackingparametersseo.canonical.noquery
Wat wordt gecontroleerd
De canonical bevat geen tracking- of sessieparameters; paginering is toegestaan.
Waarom het telt
Parameters leveren dubbele versies van dezelfde pagina op.
Voorbeeld
Fout: `?utm_source=nieuwsbrief`. Goed: `/product`.
Bron
Google Search Central

Koppen

GemiddeldPrecies één H1seo.headings.h1
Wat wordt gecontroleerd
Hoeveel `<h1>`-koppen de pagina heeft.
Waarom het telt
Eén H1 noemt het hoofdonderwerp van de pagina. Ontbreekt hij of zijn er meerdere, dan is voor lezers, schermlezers en zoekmachines minder duidelijk waar de pagina over gaat.
Voorbeeld
`<h1>Belastingadvies in Utrecht</h1>`, gevolgd door `<h2>`-secties
Bron
MDN: <h1>–<h6> elements
LaagVolgorde van koppen zonder sprongenseo.headings.order
Wat wordt gecontroleerd
Of de kopniveaus zonder sprongen op elkaar volgen (bijv. niet van H2 direct naar H4).
Waarom het telt
Gebruikers van schermlezers navigeren via de koppen. Een opbouw zonder gaten helpt hen en maakt de structuur voor machines eenduidig.
Voorbeeld
H1 → H2 → H3 → H2
Bron
MDN: <h1>–<h6> elements
LaagTussenkoppen (H2) aanwezigseo.headings.h2
Wat wordt gecontroleerd
De pagina deelt haar inhoud in met minstens één H2.
Waarom het telt
Tussenkoppen helpen lezers, schermlezers en zoekmachines de inhoud te overzien.
Voorbeeld
`<h2>Diensten</h2>` onder de H1.
Bron
Google Search Central

Taal en hreflang

Gemiddeldlang-attribuut op het html-elementseo.lang
Wat wordt gecontroleerd
Of het `<html>`-element een `lang`-attribuut heeft.
Waarom het telt
De taalinstelling stuurt de uitspraak in schermlezers, de woordafbreking en de automatische vertaling.
Voorbeeld
`<html lang="nl">`
Bron
MDN: lang attribute
Laaghreflang geldig (met x-default)seo.hreflang
Wat wordt gecontroleerd
Of bestaande `hreflang`-vermeldingen geldige taalcodes gebruiken en een `x-default` bevatten. Eentalige websites hebben er geen nodig.
Waarom het telt
Met hreflang toont Google elke gebruiker de passende taalversie. Ongeldige codes worden genegeerd; `x-default` dekt alle andere talen.
Voorbeeld
`<link rel="alternate" hreflang="nl-NL" href="https://example.com/">` en `hreflang="x-default"`
Bron
Google Search Central: Localized versions of your pages

Open Graph

Gemiddeldog:title aanwezigseo.og.title
Wat wordt gecontroleerd
Of de pagina een `<meta property="og:title">` met inhoud heeft.
Waarom het telt
LinkedIn, Facebook, Slack en messengers tonen og:title als kop van de linkvoorvertoning.
Voorbeeld
`<meta property="og:title" content="Belastingadvies in Utrecht">`
Bron
The Open Graph protocol
Gemiddeldog:description aanwezigseo.og.description
Wat wordt gecontroleerd
Of de pagina een `<meta property="og:description">` met inhoud heeft.
Waarom het telt
De beschrijving staat onder de kop van de linkvoorvertoning en helpt beslissen of iemand klikt.
Voorbeeld
`<meta property="og:description" content="Gratis kennismaking, afspraken ook online.">`
Bron
The Open Graph protocol
Gemiddeldog:image bereikbaar en minstens 1200 px breedseo.og.image
Wat wordt gecontroleerd
Of er een og:image is ingesteld, of die geladen kan worden en of hij minstens 1200 px breed is.
Waarom het telt
Zonder afbeelding oogt een gedeelde pagina kaal. Te kleine afbeeldingen worden als kleine tegel in plaats van grote voorvertoning getoond.
Voorbeeld
`<meta property="og:image" content="https://example.com/og.jpg">` met 1200×630 px
Bron
The Open Graph protocol
Laagog:type aanwezigseo.og.type
Wat wordt gecontroleerd
De pagina geeft met `og:type` haar soort inhoud aan.
Waarom het telt
Sociale netwerken tonen de inhoud dan passender.
Voorbeeld
`<meta property="og:type" content="website">`
Bron
Open Graph protocol
Gemiddeldog:image is een volledige HTTPS-URLseo.og.imageabsolute
Wat wordt gecontroleerd
De voorvertoningsafbeelding is opgegeven als volledige HTTPS-URL.
Waarom het telt
Relatieve adressen en http laden bij sommige diensten geen voorvertoning.
Voorbeeld
Goed: `https://example.com/og.jpg`.
Bron
Open Graph protocol
Laagog:url komt overeen met de canonicalseo.og.url
Wat wordt gecontroleerd
`og:url` noemt hetzelfde adres als de canonical, anders de geleverde pagina.
Waarom het telt
Afwijkende adressen leveren bij het delen dubbele vermeldingen op.
Voorbeeld
`<meta property="og:url" content="https://example.com/pagina">`
Bron
Open Graph protocol
Laagog:image met breedte en hoogteseo.og.imagesize
Wat wordt gecontroleerd
Breedte en hoogte van de voorvertoningsafbeelding staan in de head.
Waarom het telt
Zonder afmetingen laadt de voorvertoning later en wordt ze soms verkeerd bijgesneden.
Voorbeeld
`og:image:width` 1200 en `og:image:height` 630.
Bron
Open Graph protocol
Laagog:locale in de vorm nl_NLseo.og.locale
Wat wordt gecontroleerd
De taal van de pagina staat in `og:locale` als taal_LAND.
Waarom het telt
Platforms tonen de voorvertoning dan in de juiste taal.
Voorbeeld
`<meta property="og:locale" content="nl_NL">`
Bron
Open Graph protocol

X-cards (Twitter)

Laagtwitter:card aanwezigseo.og.twitter
Wat wordt gecontroleerd
Of de pagina een `<meta name="twitter:card">` heeft.
Waarom het telt
X (Twitter) kiest met twitter:card het formaat van de voorvertoning. Met `summary_large_image` wordt de afbeelding groot getoond.
Voorbeeld
`<meta name="twitter:card" content="summary_large_image">`
Bron
X Developer Platform: Cards markup
Laagtwitter:card is summary_large_imageseo.twitter.large
Wat wordt gecontroleerd
De pagina gebruikt voor X/Twitter de grote kaart.
Waarom het telt
Grote kaarten vallen meer op en worden vaker aangeklikt.
Voorbeeld
`<meta name="twitter:card" content="summary_large_image">`
Bron
Open Graph protocol
Laagtwitter:image aanwezig (of og:image)seo.twitter.image
Wat wordt gecontroleerd
Er is een afbeelding voor X/Twitter, rechtstreeks of via og:image als terugval.
Waarom het telt
Zonder afbeelding is er geen voorvertoningskaart.
Voorbeeld
`<meta name="twitter:image" content="https://example.com/og.jpg">`
Bron
Open Graph protocol

robots.txt

Gemiddeldrobots.txt aanwezigseo.robots.present
Wat wordt gecontroleerd
Of onder `/robots.txt` een bestand met status 200 wordt geleverd.
Waarom het telt
Crawlers vragen robots.txt als eerste op. Het bestand regelt welke delen gelezen mogen worden en verwijst naar de sitemap.
Voorbeeld
`User-agent: *`, `Allow: /`, `Sitemap: https://example.com/sitemap.xml`
Bron
RFC 9309: Robots Exclusion Protocol
LaagSyntaxis van robots.txt geldigseo.robots.syntax
Wat wordt gecontroleerd
Of robots.txt regels bevat die geen bekende instructie zijn.
Waarom het telt
Crawlers slaan onbekende regels over, dus een tikfout als `Disalow` heeft geen effect.
Voorbeeld
`Disallow: /intern/` in plaats van `Disalow /intern/`
Bron
Google Search Central: How Google interprets the robots.txt specification
Laagrobots.txt verwijst naar de sitemapseo.robots.sitemap
Wat wordt gecontroleerd
Of robots.txt een regel `Sitemap:` bevat.
Waarom het telt
Zo vindt elke crawler de sitemap, ook de crawlers bij wie u hem nooit hebt aangemeld.
Voorbeeld
`Sitemap: https://example.com/sitemap.xml`
Bron
Google Search Central: Build and submit a sitemap
Laagrobots.txt heeft een algemene regelseo.robots.wildcard
Wat wordt gecontroleerd
robots.txt bevat een groep `User-agent: *`.
Waarom het telt
Zonder algemene regel ontbreekt de standaard voor alle niet genoemde crawlers.
Voorbeeld
`User-agent: *` gevolgd door `Allow: /`.
Bron
RFC 9309 (robots.txt)

sitemap.xml

Gemiddeldsitemap.xml aanwezigseo.sitemap.present
Wat wordt gecontroleerd
Of onder `/sitemap.xml` een bestand met status 200 wordt geleverd.
Waarom het telt
De sitemap somt alle pagina's op die geïndexeerd moeten worden. Nieuwe en diep gelinkte pagina's worden sneller gevonden.
Voorbeeld
`<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url><loc>https://example.com/</loc></url></urlset>`
Bron
Google Search Central: Build and submit a sitemap
Gemiddeldsitemap.xml is geldige XMLseo.sitemap.valid
Wat wordt gecontroleerd
Of de sitemap begint met een XML-declaratie, `<urlset>` of `<sitemapindex>`.
Waarom het telt
Sommige servers leveren onder `/sitemap.xml` een HTML-pagina (zoals de startpagina of een foutpagina). Daar kunnen crawlers niets mee.
Voorbeeld
`<?xml version="1.0" encoding="UTF-8"?>` gevolgd door `<urlset …>`
Bron
sitemaps.org: Sitemaps XML format
LaagSitemap bevat de gecontroleerde URLseo.sitemap.contains
Wat wordt gecontroleerd
Of de gecontroleerde pagina, of op zijn minst het domein, in de sitemap staat.
Waarom het telt
Pagina's die in de sitemap ontbreken, worden minder vaak en later gecrawld.
Voorbeeld
`<url><loc>https://example.com/diensten/</loc></url>`
Bron
Google Search Central: Build and submit a sitemap
LaagSitemap bevat lastmodseo.sitemap.lastmod
Wat wordt gecontroleerd
Of de sitemap `<lastmod>`-vermeldingen bevat.
Waarom het telt
Google gebruikt lastmod om gewijzigde pagina's eerder opnieuw te crawlen, mits de datum klopt.
Voorbeeld
`<lastmod>2026-10-01</lastmod>` alleen als de inhoud echt is gewijzigd
Bron
Google Search Central: Build and submit a sitemap
LaagSitemap en indexeerbaarheid spreken elkaar niet tegenseo.sitemap.indexconsistent
Wat wordt gecontroleerd
Een noindex-pagina staat niet in de sitemap, een indexeerbare pagina wel.
Waarom het telt
Tegenstrijdige signalen verwarren zoekmachines en kosten vertrouwen.
Voorbeeld
Haal de noindex-pagina uit de sitemap of verwijder noindex.
Bron
sitemaps.org
GemiddeldSitemap bevat vermeldingenseo.sitemap.entries
Wat wordt gecontroleerd
De sitemap noemt minstens één adres of een onderliggende index.
Waarom het telt
Een lege sitemap helpt zoekmachines niet.
Voorbeeld
`<urlset><url><loc>https://example.com/</loc></url></urlset>`
Bron
sitemaps.org
LaagGeen juridische pagina's in de sitemapseo.sitemap.nolegal
Wat wordt gecontroleerd
Colofon, privacyverklaring, algemene voorwaarden, cookiemeldingen en gebruiksvoorwaarden staan niet in de sitemap.
Waarom het telt
Juridische pagina's zijn er voor bezoekers, niet als zoekresultaat.
Voorbeeld
Haal `/colofon` en `/privacy` uit de sitemap.
Bron
sitemaps.org

404-pagina

GemiddeldOnbekende URL geeft een echte 404seo.404.real
Wat wordt gecontroleerd
Of een bewust niet-bestaand adres antwoordt met status 404.
Waarom het telt
Geeft een foutpagina status 200 (soft 404), dan behandelt Google haar als echte inhoud en komen lege of dubbele pagina's in de index.
Voorbeeld
`/bestaat-niet` → `HTTP/2 404` met een behulpzame foutpagina
Bron
Google Search Central: Soft 404 errors
Laag404-pagina heeft inhoudseo.404.content
Wat wordt gecontroleerd
De 404-pagina legt in een paar zinnen uit wat er aan de hand is.
Waarom het telt
Een kale foutmelding laat bezoekers in de steek.
Voorbeeld
„Deze pagina bestaat niet meer. Hier gaat het naar de startpagina.”
Bron
Google Search Central

URL-structuur

LaagURL zonder hoofdletters, underscores of sessieparametersseo.404.url
Wat wordt gecontroleerd
Of het URL-pad hoofdletters of underscores bevat en of er sessieparameters in de URL staan.
Waarom het telt
URL's zijn hoofdlettergevoelig, wat dubbele adressen oplevert. Google raadt koppeltekens aan in plaats van underscores, en sessieparameters leveren eindeloos veel varianten op.
Voorbeeld
`/belastingadvies/` in plaats van `/Belasting_Advies/?sid=123`
Bron
Google Search Central: URL structure best practices
LaagSchuine streep aan het eind eenduidigseo.url.trailingslash
Wat wordt gecontroleerd
Interne links en de pagina zelf gebruiken de schuine streep aan het eind op dezelfde manier.
Waarom het telt
Met en zonder schuine streep levert twee adressen voor één pagina op.
Voorbeeld
Overal `/diensten` of overal `/diensten/`, niet door elkaar.
Bron
Google Search Central
LaagURL is leesbaarseo.url.readable
Wat wordt gecontroleerd
Het pad bestaat uit leesbare woorden, niet uit ID's of hashes.
Waarom het telt
Leesbare adressen worden vaker aangeklikt en zijn makkelijker te begrijpen.
Voorbeeld
Goed: `/blog/crypto-belasting-nederland`. Slecht: `/p/8f14e45f`.
Bron
Google Search Central

Robots-metatag

Laagrobots-instructie aanwezigseo.robotsmeta.present
Wat wordt gecontroleerd
De pagina heeft een robots-metatag of een X-Robots-Tag.
Waarom het telt
Zonder instructie gelden standaardwaarden; één regel legt de bedoeling vast.
Voorbeeld
`<meta name="robots" content="index, follow, max-snippet:-1, max-image-preview:large">`
Bron
Google Search Central
GemiddeldGeen nofollow in de robots-metatagseo.robotsmeta.nofollow
Wat wordt gecontroleerd
De pagina vraagt crawlers niet om haar links te negeren.
Waarom het telt
`nofollow` op paginaniveau maakt elke interne link waardeloos en vertraagt de indexering.
Voorbeeld
Fout: `index, nofollow`. Goed: `index, follow`.
Bron
Google Search Central

Links en navigatie

LaagNavigatie-element aanwezigseo.nav.present
Wat wordt gecontroleerd
De pagina heeft een `<nav>`-element of `role="navigation"`.
Waarom het telt
Semantische navigatie is duidelijker voor schermlezers en crawlers.
Voorbeeld
`<nav aria-label="Hoofdnavigatie">…</nav>`
Bron
W3C: WAI-ARIA

Zichtbaarheid in AI (38 controles)

Snippetbeheer

Gemiddeldmax-image-preview:large toegestaangeo.snippet.imagepreview
Wat wordt gecontroleerd
De robots-metatag of X-Robots-Tag staat grote afbeeldingsvoorvertoningen toe.
Waarom het telt
Zonder deze instelling toont Google alleen kleine voorbeeldafbeeldingen.
Voorbeeld
`max-image-preview:large`
Bron
Google: Snippet-Steuerung
GemiddeldGeen data-nosnippet op de hoofdinhoudgeo.snippet.datanosnippet
Wat wordt gecontroleerd
Delen met `data-nosnippet` beslaan niet de hoofdinhoud.
Waarom het telt
Zo gemarkeerde tekst verschijnt niet in zoekresultaten en AI-antwoorden.
Voorbeeld
Fout: `<main data-nosnippet>`. Goed: alleen kleine kanttekeningen markeren.
Bron
Google: Snippet-Steuerung
KritiekGeen nosnippetgeo.snippet.nosnippet
Wat wordt gecontroleerd
Of de robots-metatag `nosnippet` bevat.
Waarom het telt
Met `nosnippet` mag Google geen tekstfragment tonen, ook niet in AI Overviews. De pagina kan dan nauwelijks als bron voor antwoorden dienen.
Voorbeeld
`<meta name="robots" content="index, follow">` zonder `nosnippet`
Bron
Google Search Central: Robots meta tag specifications
Gemiddeldmax-snippet niet te kleingeo.snippet.maxsnippet
Wat wordt gecontroleerd
Of `max-snippet` in de robots-metatag het tekstfragment beperkt tot minder dan 50 tekens.
Waarom het telt
Een heel kleine waarde laat nauwelijks tekst over voor zoekresultaten en AI-antwoorden. `-1` staat fragmenten van elke lengte toe.
Voorbeeld
`<meta name="robots" content="max-snippet:-1">`
Bron
Google Search Central: Robots meta tag specifications

Inhoud die antwoorden geeft

GemiddeldInhoud bereikbaar zonder JavaScriptgeo.content.noscript
Wat wordt gecontroleerd
De pagina levert genoeg tekst in de HTML of een noscript-melding.
Waarom het telt
Bots zonder JavaScript zien alleen de ruwe HTML; een lege container blijft leeg.
Voorbeeld
`<noscript><p>Schakel JavaScript in …</p></noscript>` plus tekst die op de server wordt opgebouwd.
Bron
Google Search Central
KritiekMinstens 300 woorden tekstgeo.content.words
Wat wordt gecontroleerd
Hoeveel woorden zichtbare tekst de HTML van de pagina bevat.
Waarom het telt
AI-modellen citeren pagina's die zelf een vraag beantwoorden. Met weinig tekst valt er nauwelijks iets te citeren. 300 woorden is een richtwaarde, geen eis van Google.
Voorbeeld
Een dienstenpagina met beschrijving, werkwijze, prijzen en veelgestelde vragen
Bron
Google Search Central: Creating helpful, reliable, people-first content
KritiekInhoud niet alleen via JavaScriptgeo.content.notjs
Wat wordt gecontroleerd
Of de ruwe HTML (voordat JavaScript draait) tekst bevat, en hoeveel tekst vergeleken met inline scripts.
Waarom het telt
Veel AI-crawlers voeren geen JavaScript uit. Wat pas in de browser verschijnt, blijft voor hen onzichtbaar.
Voorbeeld
Server-side rendering of statische pagina's in plaats van een lege `<div id="root"></div>`
Bron
Google Search Central: Understand JavaScript SEO basics
LaagKoppen als vraag met direct antwoordgeo.content.qa
Wat wordt gecontroleerd
Of op koppen in vraagvorm meer inhoud volgt. Pagina's zonder vraagkoppen slagen.
Waarom het telt
AI-zoekdiensten citeren graag het antwoord direct onder een passende vraag. Een vraag zonder antwoord eronder helpt niemand.
Voorbeeld
`<h2>Wat kost een kennismakingsgesprek?</h2><p>Het kennismakingsgesprek is gratis en duurt 30 minuten.</p>`
Bron
Google Search Central: Creating helpful, reliable, people-first content
LaagLijsten of tabellen aanweziggeo.content.lists
Wat wordt gecontroleerd
Of de pagina lijsten (`<ul>`, `<ol>`) of tabellen (`<table>`) bevat.
Waarom het telt
Lijsten en tabellen zijn goed te lezen en makkelijk in antwoorden over te nemen, zoals stappen, prijzen of vergelijkingen.
Voorbeeld
`<ol><li>Documenten sturen</li><li>Kennismaking</li><li>Offerte</li></ol>`
Bron
MDN: <ul> element
LaagConcrete feiten in de tekstgeo.content.facts
Wat wordt gecontroleerd
De tekst noemt getallen, jaartallen, percentages of namen in plaats van algemene beweringen.
Waarom het telt
Concrete feiten maken inhoud citeerbaar voor AI-antwoorden.
Voorbeeld
„Sinds 2014 begeleiden we 120 klanten in Utrecht.”
Bron
Google Search Central
LaagGeen opvultekstgeo.content.filler
Wat wordt gecontroleerd
De tekst vermijdt holle frasen en opvulling.
Waarom het telt
Opvulling verwatert het antwoord en wordt niet geciteerd.
Voorbeeld
Fout: „In de snelle wereld van vandaag is het belangrijk om op te merken …”.
Bron
Google Search Central
LaagAuteur herkenbaargeo.content.author
Wat wordt gecontroleerd
Op artikelpagina's wordt een auteur genoemd, in het schema, in een metatag of zichtbaar.
Waarom het telt
AI-systemen geven de voorkeur aan inhoud met duidelijk auteurschap.
Voorbeeld
`<meta name="author" content="Jan Voorbeeld">` of `author` in het artikelschema.
Bron
Google Search Central

llms.txt

Gemiddeldllms.txt aanweziggeo.llms.present
Wat wordt gecontroleerd
Of onder `/llms.txt` een bestand met inhoud wordt geleverd.
Waarom het telt
llms.txt is een voorgesteld kort overzicht in Markdown: wie u bent en welke pagina's ertoe doen. AI-assistenten vinden zo sneller de juiste inhoud.
Voorbeeld
`# Voorbeeld B.V.` + `> Belastingadvies in Utrecht` + `- [Diensten](https://example.com/diensten/)`
Bron
llmstxt.org: The /llms.txt file
Laagllms.txt met H1 en korte beschrijvinggeo.llms.structure
Wat wordt gecontroleerd
Of llms.txt begint met een `# kop` en een beschrijvende alinea bevat.
Waarom het telt
Het formaat vraagt alleen de H1, gevolgd door een korte samenvatting. Zonder die samenvatting mist een model de context voor de links.
Voorbeeld
`# Voorbeeld B.V.` gevolgd door `> Belastingadvies voor zzp'ers en kleine bedrijven in Utrecht.`
Bron
llmstxt.org: The /llms.txt file
Laagllms-full.txt aanwezig (bonus)geo.llms.full
Wat wordt gecontroleerd
Of onder `/llms-full.txt` een bestand met de volledige inhoud wordt geleverd. Het bestand is optioneel: ontbreekt het, dan telt de controle niet mee.
Waarom het telt
Sommige tools laden llms-full.txt om alle inhoud in één keer te lezen in plaats van elke gelinkte pagina apart op te halen.
Voorbeeld
`/llms-full.txt` met de tekst van alle in llms.txt gelinkte pagina's, als Markdown
Bron
llmstxt.org: The /llms.txt file
Laagllms.txt gelinkt in de headgeo.llms.linked
Wat wordt gecontroleerd
De head bevat een alternate-link met `type="text/plain"` of `text/markdown"` naar de llms.txt.
Waarom het telt
AI-tools vinden het bestand zonder te raden.
Voorbeeld
`<link rel="alternate" type="text/plain" href="/llms.txt">`
Bron
llmstxt.org
Laagllms.txt begint met naam en korte beschrijvinggeo.llms.intro
Wat wordt gecontroleerd
Het bestand begint met een H1 en een geciteerde alinea die het bedrijf beschrijft.
Waarom het telt
AI-tools zien meteen wie de website runt.
Voorbeeld
`# Voorbeeld B.V.` en daaronder `> Voorbeeld B.V. adviseert kleine bedrijven in Utrecht.`
Bron
llmstxt.org
Laagllms.txt is platte tekstgeo.llms.plaintext
Wat wordt gecontroleerd
llms.txt wordt geleverd als `text/plain` of `text/markdown` en bevat geen HTML of JSON.
Waarom het telt
Alleen dan kunnen AI-tools het bestand direct lezen.
Voorbeeld
Antwoordheader `Content-Type: text/plain; charset=utf-8`.
Bron
llmstxt.org
Laagllms.txt kleiner dan 100 KBgeo.llms.size
Wat wordt gecontroleerd
Het bestand is kleiner dan 100 KB en werd volledig gelezen.
Waarom het telt
Heel grote bestanden worden door tools afgekapt.
Voorbeeld
Neem alleen de belangrijkste pagina's en secties op.
Bron
llmstxt.org

AI-crawlers in robots.txt

LaagAI-trainingsbotsgeo.crawlers.training
Wat wordt gecontroleerd
Of robots.txt bots blokkeert die inhoud alleen voor het trainen van modellen verzamelen (CCBot van Common Crawl, Applebot-Extended).
Waarom het telt
Blokkeren is een bewuste keuze en kost weinig: uw teksten blijven buiten trainingsdata, maar AI-zoekdiensten kunnen uw pagina nog steeds citeren. Geblokkeerde trainingsbots geven alleen een kleine aftrek.
Voorbeeld
`User-agent: CCBot` met `Disallow: /` blokkeert alleen Common Crawl.
Bron
Common Crawl: CCBot
KritiekOAI-SearchBot is toegestaangeo.bots.oaisearchbot
Wat wordt gecontroleerd
De regel controleert of robots.txt OAI-SearchBot toegang geeft tot de gecontroleerde pagina.
Waarom het telt
OAI-SearchBot leest pagina's voor het zoeken in ChatGPT.
Voorbeeld
User-agent: OAI-SearchBot Allow: /
Bron
OpenAI / Anthropic Crawler-Dokumentation
KritiekChatGPT-User is toegestaangeo.bots.chatgptuser
Wat wordt gecontroleerd
De regel controleert of robots.txt ChatGPT-User toegang geeft tot de gecontroleerde pagina.
Waarom het telt
ChatGPT-User haalt pagina's op als iemand in de chat een adres noemt.
Voorbeeld
User-agent: ChatGPT-User Allow: /
Bron
OpenAI / Anthropic Crawler-Dokumentation
KritiekClaude-User is toegestaangeo.bots.claudeuser
Wat wordt gecontroleerd
De regel controleert of robots.txt Claude-User toegang geeft tot de gecontroleerde pagina.
Waarom het telt
Claude-User haalt pagina's op namens een gebruiker.
Voorbeeld
User-agent: Claude-User Allow: /
Bron
OpenAI / Anthropic Crawler-Dokumentation
KritiekClaude-SearchBot is toegestaangeo.bots.claudesearchbot
Wat wordt gecontroleerd
De regel controleert of robots.txt Claude-SearchBot toegang geeft tot de gecontroleerde pagina.
Waarom het telt
Claude-SearchBot bouwt de zoekindex voor Claude op.
Voorbeeld
User-agent: Claude-SearchBot Allow: /
Bron
OpenAI / Anthropic Crawler-Dokumentation
KritiekPerplexityBot is toegestaangeo.bots.perplexitybot
Wat wordt gecontroleerd
De regel controleert of robots.txt PerplexityBot toegang geeft tot de gecontroleerde pagina.
Waarom het telt
PerplexityBot levert de bronnen voor antwoorden van Perplexity.
Voorbeeld
User-agent: PerplexityBot Allow: /
Bron
OpenAI / Anthropic Crawler-Dokumentation
LaagGPTBot is toegestaangeo.bots.gptbot
Wat wordt gecontroleerd
De regel controleert of robots.txt GPTBot toegang geeft tot de gecontroleerde pagina.
Waarom het telt
GPTBot verzamelt inhoud voor het trainen van modellen van OpenAI.
Voorbeeld
User-agent: GPTBot Allow: /
Bron
OpenAI / Anthropic Crawler-Dokumentation
LaagClaudeBot is toegestaangeo.bots.claudebot
Wat wordt gecontroleerd
De regel controleert of robots.txt ClaudeBot toegang geeft tot de gecontroleerde pagina.
Waarom het telt
ClaudeBot verzamelt inhoud voor het trainen van modellen van Anthropic.
Voorbeeld
User-agent: ClaudeBot Allow: /
Bron
OpenAI / Anthropic Crawler-Dokumentation
LaagGoogle-Extended is toegestaangeo.bots.googleextended
Wat wordt gecontroleerd
De regel controleert of robots.txt Google-Extended toegang geeft tot de gecontroleerde pagina.
Waarom het telt
Met Google-Extended bepaalt u of Google inhoud voor Gemini gebruikt.
Voorbeeld
User-agent: Google-Extended Allow: /
Bron
OpenAI / Anthropic Crawler-Dokumentation

Entiteit

GemiddeldOrganization/Person-JSON-LD aanweziggeo.entity.identity
Wat wordt gecontroleerd
Of de pagina JSON-LD van het type Organization, Person, ProfessionalService of LocalBusiness bevat.
Waarom het telt
Zo weten machines ondubbelzinnig wie achter de website zit. Zoekmachines en AI-modellen koppelen de inhoud dan aan het juiste bedrijf.
Voorbeeld
`{"@context":"https://schema.org","@type":"Organization","name":"Voorbeeld B.V.","url":"https://example.com"}`
Bron
Google Search Central: Organization structured data
GemiddeldsameAs met minstens 2 profielengeo.entity.sameas
Wat wordt gecontroleerd
Hoeveel profielen (LinkedIn, X, GitHub, handelsregister …) het entiteitsschema via `sameAs` koppelt.
Waarom het telt
sameAs verbindt uw website met uw andere profielen. Dat helpt u te onderscheiden van anderen met dezelfde naam.
Voorbeeld
`"sameAs": ["https://www.linkedin.com/company/voorbeeld", "https://github.com/voorbeeld"]`
Bron
schema.org: sameAs
LaagknowsAbout in het entiteitsschemageo.entity.knowsabout
Wat wordt gecontroleerd
Het Organization- of Person-schema noemt onderwerpen in `knowsAbout`.
Waarom het telt
Zo kunnen zoekmachines en AI-assistenten de entiteit inhoudelijk plaatsen.
Voorbeeld
`"knowsAbout": ["Belastingen", "Boekhouding"]`
Bron
Schema.org
LaagDiensten opgemaakt als Offergeo.entity.offers
Wat wordt gecontroleerd
Het entiteitsschema beschrijft diensten met `makesOffer` of `hasOfferCatalog`.
Waarom het telt
Zo weet Google welke diensten worden aangeboden.
Voorbeeld
`"makesOffer": [{"@type":"Offer","itemOffered":{"@type":"Service","name":"Advies"}}]`
Bron
Google: Strukturierte Daten
LaagPersoon linkt naar een LinkedIn-profielgeo.entity.personlinkedin
Wat wordt gecontroleerd
Een persoon in het schema verwijst via sameAs naar een persoonlijk LinkedIn-profiel.
Waarom het telt
Het profiel onderbouwt de identiteit van de persoon achter de pagina.
Voorbeeld
`"sameAs": ["https://www.linkedin.com/in/jan-voorbeeld"]`
Bron
Schema.org

Actualiteit

LaagSignaal van actualiteit aanweziggeo.freshness
Wat wordt gecontroleerd
Of de pagina een wijzigingsdatum noemt: de header `Last-Modified`, `article:modified_time` of `dateModified`.
Waarom het telt
Bij vragen over prijzen, wetten of termijnen geven zoekmachines en AI-modellen de voorkeur aan actuele bronnen. Zonder datum is de actualiteit niet te zien.
Voorbeeld
`<meta property="article:modified_time" content="2026-10-01T09:00:00+02:00">`
Bron
Google Search Central: Influence the byline date
LaagZichtbare datum op artikelpagina'sgeo.content.dateshown
Wat wordt gecontroleerd
De artikelpagina toont een publicatie- of wijzigingsdatum in de tekst.
Waarom het telt
Een zichtbare datum maakt de actualiteit controleerbaar.
Voorbeeld
`<time datetime="2026-10-12">12 oktober 2026</time>`
Bron
Google Search Central

Gestructureerde gegevens (29 controles)

JSON-LD algemeen

GemiddeldMinstens één JSON-LD-blokstructured.jsonld.present
Wat wordt gecontroleerd
De pagina bevat minstens één blok gestructureerde gegevens als JSON-LD.
Waarom het telt
Gestructureerde gegevens helpen zoekmachines inhoud en entiteiten te begrijpen.
Voorbeeld
`<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization"}</script>`
Bron
Google: Strukturierte Daten
KritiekAlle JSON-LD-blokken zijn leesbaarstructured.jsonld.parseable
Wat wordt gecontroleerd
Elk JSON-LD-blok is geldige JSON.
Waarom het telt
Eén syntaxfout maakt alle gegevens in het blok onbruikbaar.
Voorbeeld
Controleer het blok met een JSON-validator.
Bron
Google: Strukturierte Daten
Gemiddeld@context schema.orgstructured.jsonld.context
Wat wordt gecontroleerd
De blokken hebben `@context: https://schema.org`.
Waarom het telt
Zonder context zijn de typen voor zoekmachines niet eenduidig.
Voorbeeld
`"@context": "https://schema.org"`
Bron
Schema.org
Laag@id met een absolute URLstructured.entity.id
Wat wordt gecontroleerd
Of de hoofdentiteiten (Organization, Person, WebSite) een @id hebben die een absolute URL is.
Waarom het telt
Een vaste @id maakt een entiteit over pagina's heen herkenbaar. Andere blokken kunnen ernaar verwijzen in plaats van dezelfde gegevens te herhalen.
Voorbeeld
`{"@type":"Organization","@id":"https://example.com/#organization","name":"Voorbeeld B.V."}`
Bron
W3C JSON-LD 1.1: Node identifiers
LaaginLanguage opgegevenstructured.inlanguage
Wat wordt gecontroleerd
Of WebSite, WebPage of het artikel de taal van de inhoud met inLanguage noemt, en of die overeenkomt met het lang-attribuut van de pagina.
Waarom het telt
De taalaanduiding helpt de inhoud aan de juiste taalversie en doelgroep te koppelen, vooral op meertalige websites.
Voorbeeld
`{"@type":"WebSite","name":"Voorbeeld B.V.","url":"https://example.com/","inLanguage":"nl-NL"}`
Bron
schema.org: inLanguage
LaagAfbeeldings-URL's in het schema zijn absoluutstructured.image.absolute
Wat wordt gecontroleerd
Of elke verwijzing naar een afbeelding in de JSON-LD (image, logo, thumbnailUrl) een volledig http(s)-adres is.
Waarom het telt
Gestructureerde gegevens worden vaak los van de pagina verwerkt. Relatieve paden of data-URI's zijn daar niet betrouwbaar op te lossen, en de afbeelding ontbreekt dan in het resultaat.
Voorbeeld
`"logo": "https://example.com/logo.png"` in plaats van `"logo": "/logo.png"`
Bron
Google Search Central: General structured data guidelines

WebSite

LaagWebSite-schema aanwezigstructured.website.present
Wat wordt gecontroleerd
Een WebSite-schema beschrijft de website als geheel.
Waarom het telt
Het koppelt de pagina's aan naam, URL en taal.
Voorbeeld
`{"@type":"WebSite","name":"Voorbeeld","url":"https://example.com"}`
Bron
Google: Strukturierte Daten
LaagWebSite met name en urlstructured.website.fields
Wat wordt gecontroleerd
Het WebSite-schema bevat `name` en `url`.
Waarom het telt
Beide zijn verplicht voor deze opmaak.
Voorbeeld
`{"@type":"WebSite","name":"Voorbeeld","url":"https://example.com"}`
Bron
Google: Strukturierte Daten

Breadcrumbs

LaagBreadcrumbList op subpagina'sstructured.breadcrumb
Wat wordt gecontroleerd
Subpagina's leggen hun pad vast als BreadcrumbList.
Waarom het telt
Google kan het pad dan in de zoekresultaten tonen.
Voorbeeld
`{"@type":"BreadcrumbList","itemListElement":[…]}`
Bron
Google: Strukturierte Daten
LaagBreadcrumb-items hebben URL'sstructured.breadcrumb.urls
Wat wordt gecontroleerd
Of elke vermelding in de BreadcrumbList, behalve de laatste, via item naar een absolute URL wijst.
Waarom het telt
Google vraagt de URL voor elk niveau behalve de huidige pagina. Zonder URL kan het pad niet als breadcrumb in de zoekresultaten verschijnen.
Voorbeeld
`{"@type":"ListItem","position":1,"name":"Diensten","item":"https://example.com/diensten"}`
Bron
Google Search Central: Breadcrumb structured data
LaagBreadcrumb met minstens twee niveausstructured.breadcrumb.levels
Wat wordt gecontroleerd
Of elke BreadcrumbList minstens twee vermeldingen heeft.
Waarom het telt
Een pad met één niveau laat niet zien waar de pagina op de website staat. Google raadt minstens twee ListItems aan.
Voorbeeld
Start › Diensten › Boekhouding
Bron
Google Search Central: Breadcrumb structured data

Artikelen

GemiddeldArticle-schema volledig (bij artikelen)structured.article
Wat wordt gecontroleerd
Artikelen noemen `headline`, `author`, `datePublished` en `image`.
Waarom het telt
Dat is de basis voor uitgebreide resultaten bij artikelen.
Voorbeeld
`{"@type":"Article","headline":"…","author":{…},"datePublished":"2026-10-12","image":"https://…"}`
Bron
Google: Strukturierte Daten

Overige schematypen

LaagOverige schematypen volledigstructured.other
Wat wordt gecontroleerd
FAQPage, Product, LocalBusiness, Event, Review en VideoObject zijn volledig als ze voorkomen.
Waarom het telt
Onvolledige blokken leveren geen uitgebreide resultaten op.
Voorbeeld
Vul per type de verplichte velden aan volgens de documentatie van Google.
Bron
Google: Strukturierte Daten

Organisatie en persoon

LaagOrganization met name, url, address en sameAsstructured.org.fields
Wat wordt gecontroleerd
Of het Organization-schema (ook subtypen zoals LocalBusiness of ProfessionalService) een naam, de URL van de website, een postadres en sameAs-profielen noemt.
Waarom het telt
Met deze gegevens koppelt Google de pagina zonder giswerk aan uw bedrijf, bijvoorbeeld in het kennispaneel. sameAs verbindt de website met uw profielen elders.
Voorbeeld
`{"@type":"Organization","name":"Voorbeeld B.V.","url":"https://example.com/","address":{"@type":"PostalAddress","streetAddress":"Hoofdstraat 1","postalCode":"3511 AA","addressLocality":"Utrecht","addressCountry":"NL"},"sameAs":["https://www.linkedin.com/company/voorbeeld"]}`
Bron
Google Search Central: Organization structured data
LaagPerson-schemastructured.person.present
Wat wordt gecontroleerd
Of de gestructureerde gegevens een persoon beschrijven, bijvoorbeeld als auteur, eigenaar of onderwerp van een profielpagina. Ontbreken telt niet in uw nadeel.
Waarom het telt
Voor adviseurs, auteurs en eenmanszaken helpt een Person-schema zoekmachines en AI-assistenten inhoud aan een bepaalde persoon toe te schrijven.
Voorbeeld
`{"@type":"Person","name":"Anna Voorbeeld","jobTitle":"Belastingadviseur","url":"https://example.com/team/anna"}`
Bron
schema.org: Person

FAQPage

LaagFAQPage-schemastructured.faq.present
Wat wordt gecontroleerd
Of de pagina een FAQPage-schema heeft. Ontbreken telt niet mee; het is alleen zinvol op pagina's met echte vragen en antwoorden.
Waarom het telt
Sinds 2023 toont Google FAQ-resultaten alleen nog voor bekende overheids- en gezondheidswebsites. Duidelijk opgemaakte vragen en antwoorden helpen zoekmachines en AI-assistenten nog steeds uw antwoorden te vinden en te citeren.
Voorbeeld
`{"@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Wat kost het kennismakingsgesprek?","acceptedAnswer":{"@type":"Answer","text":"Het kennismakingsgesprek is gratis."}}]}`
Bron
Google Search Central: FAQPage structured data
GemiddeldElke FAQ-vraag heeft een antwoordstructured.faq.answers
Wat wordt gecontroleerd
Of elke Question in het FAQPage-schema een name en een acceptedAnswer met tekst heeft.
Waarom het telt
name en acceptedAnswer.text zijn verplicht. Een vraag zonder antwoord is voor zoekmachines waardeloos en maakt de opmaak ongeldig.
Voorbeeld
`"acceptedAnswer": {"@type":"Answer","text":"We antwoorden binnen één werkdag."}`
Bron
Google Search Central: FAQPage structured data
GemiddeldFAQ-inhoud zichtbaar op de paginastructured.faq.visible
Wat wordt gecontroleerd
Of elke vraag uit het FAQPage-schema, en ongeveer het antwoord, in de zichtbare tekst van de pagina staat. Tekst in scripts of verborgen met het hidden-attribuut of display:none telt niet.
Waarom het telt
Google eist dat opgemaakte vragen en antwoorden voor bezoekers zichtbaar zijn. Opmaak voor inhoud die niemand ziet, geldt als misleidend en kan tot een handmatige maatregel leiden.
Voorbeeld
Vragen als kop of `<summary>`, met het antwoord als tekst direct eronder.
Bron
Google Search Central: FAQPage structured data

Beoordelingen

LaagAggregateRatingstructured.rating.present
Wat wordt gecontroleerd
Of de gestructureerde gegevens een totaalbeoordeling (AggregateRating) bevatten, ook genest in Product, LocalBusiness of vergelijkbare typen. Ontbreken telt niet mee.
Waarom het telt
Echte beoordelingen kunnen als sterren in de zoekresultaten verschijnen. Google staat dat alleen toe voor bepaalde typen, en niet voor beoordelingen die een bedrijf op zijn eigen website over zichzelf publiceert.
Voorbeeld
`"aggregateRating":{"@type":"AggregateRating","ratingValue":4.7,"reviewCount":38,"bestRating":5}`
Bron
Google Search Central: Review snippet structured data
LaagBeoordeling met ratingValue en een aantalstructured.rating.fields
Wat wordt gecontroleerd
Of elke AggregateRating een ratingValue en een aantal (reviewCount of ratingCount) heeft.
Waarom het telt
Beide zijn verplicht. Zonder aantal is de beoordeling niet in context te plaatsen, en toont Google geen sterren.
Voorbeeld
`"ratingValue": 4.7, "reviewCount": 38`
Bron
Google Search Central: Review snippet structured data
LaagbestRating opgegevenstructured.rating.best
Wat wordt gecontroleerd
Of de totaalbeoordeling haar schaal met bestRating noemt, en of ratingValue daarbinnen valt.
Waarom het telt
Zonder bestRating gaat Google uit van een schaal tot 5. Beoordeelt u op een andere schaal, bijvoorbeeld tot 10, dan wordt de waarde verkeerd getoond.
Voorbeeld
`"ratingValue": 9.1, "bestRating": 10, "worstRating": 1`
Bron
Google Search Central: Review snippet structured data

Evenementen

LaagEvent-schemastructured.event.present
Wat wordt gecontroleerd
Of de pagina evenementen opmaakt als Event (of een subtype zoals BusinessEvent). Ontbreken telt niet mee.
Waarom het telt
Google kan opgemaakte evenementen met datum en plaats in de zoekfunctie voor evenementen tonen. Dat loont voor seminars, webinars en andere afspraken.
Voorbeeld
`{"@type":"Event","name":"Belastingupdate 2027","startDate":"2027-01-20T18:00+01:00","location":{"@type":"Place","name":"Voorbeeld B.V.","address":"Hoofdstraat 1, 3511 AA Utrecht"}}`
Bron
Google Search Central: Event structured data
LaagEvent met name en startDatestructured.event.fields
Wat wordt gecontroleerd
Of elk evenement een naam en een startdatum in ISO 8601-formaat heeft.
Waarom het telt
name en startDate zijn verplicht. Een datum als "20 januari" is voor een machine niet betrouwbaar te lezen; met tijd en tijdzone is het tijdstip eenduidig.
Voorbeeld
`"startDate": "2027-01-20T18:00+01:00"`
Bron
Google Search Central: Event structured data
LaagLocatie van het evenement met adresstructured.event.location
Wat wordt gecontroleerd
Of elk evenement een locatie heeft: een Place met adres of, bij online evenementen, een VirtualLocation.
Waarom het telt
Google vraagt een locatie. Bij fysieke evenementen heeft de Place een adres nodig, anders kan het evenement niet aan lokale zoekopdrachten worden gekoppeld.
Voorbeeld
`"location":{"@type":"Place","name":"Seminarruimte","address":{"@type":"PostalAddress","streetAddress":"Hoofdstraat 1","addressLocality":"Utrecht","postalCode":"3511 AA","addressCountry":"NL"}}`
Bron
Google Search Central: Event structured data

Video

LaagVideoObjectstructured.video.present
Wat wordt gecontroleerd
Of video's op de pagina zijn opgemaakt als VideoObject. Ontbreken telt niet mee.
Waarom het telt
VideoObject vertelt Google waar een video over gaat, zodat hij met een miniatuur in de zoekresultaten en op het tabblad Video's kan verschijnen.
Voorbeeld
`{"@type":"VideoObject","name":"Zo werkt de import","description":"Twee minuten over de CSV-import.","thumbnailUrl":"https://example.com/video.jpg","uploadDate":"2026-10-01T09:00:00+02:00"}`
Bron
Google Search Central: Video structured data
LaagVideo heeft een naamstructured.video.name
Wat wordt gecontroleerd
Of elk VideoObject een titel (name) heeft.
Waarom het telt
name is verplicht. Zonder titel wordt de video niet als videoresultaat getoond.
Voorbeeld
`"name": "Zo werkt de import"`
Bron
Google Search Central: Video structured data
LaagVideo heeft een beschrijvingstructured.video.description
Wat wordt gecontroleerd
Of elk VideoObject een description heeft.
Waarom het telt
Google raadt een beschrijving aan. Daarmee weten zoekmachines en AI-assistenten wat de video laat zien, zonder hem af te spelen.
Voorbeeld
`"description": "Twee minuten over het importeren van een CSV uit uw boekhouding."`
Bron
Google Search Central: Video structured data
LaagVideo heeft een thumbnailUrlstructured.video.thumbnail
Wat wordt gecontroleerd
Of elk VideoObject via thumbnailUrl een voorbeeldafbeelding levert.
Waarom het telt
thumbnailUrl is verplicht. Zonder miniatuur toont Google de video niet als videoresultaat.
Voorbeeld
`"thumbnailUrl": ["https://example.com/video-16x9.jpg"]`
Bron
Google Search Central: Video structured data
LaagVideo heeft een uploadDatestructured.video.uploaddate
Wat wordt gecontroleerd
Of elk VideoObject een publicatiedatum in ISO 8601-formaat heeft, bij voorkeur met tijd en tijdzone.
Waarom het telt
uploadDate is verplicht. Google raadt aan de tijdzone toe te voegen; anders wordt de tijd gelezen in de tijdzone van Googlebot.
Voorbeeld
`"uploadDate": "2026-10-01T09:00:00+02:00"`
Bron
Google Search Central: Video structured data

Techniek (62 controles)

Mobiel

KritiekViewport-metatag aanwezigtech.viewport
Wat wordt gecontroleerd
De pagina stelt `<meta name="viewport">` in.
Waarom het telt
Zonder viewport zoomen mobiele browsers uit en lijkt de pagina piepklein.
Voorbeeld
`<meta name="viewport" content="width=device-width, initial-scale=1">`
Bron
Google: Mobile-freundliche Seiten

Beveiligingsheaders

GemiddeldContent-Security-Policy ingesteldtech.security.csp
Wat wordt gecontroleerd
De header `Content-Security-Policy` is ingesteld.
Waarom het telt
Een CSP beperkt welke scripts en bronnen geladen mogen worden.
Voorbeeld
`Content-Security-Policy: default-src 'self'`
Bron
MDN: HTTP headers
LaagX-Content-Type-Options ingesteldtech.security.xcto
Wat wordt gecontroleerd
De header `X-Content-Type-Options: nosniff` is ingesteld.
Waarom het telt
Hij voorkomt dat browsers bestanden als een ander type uitleggen.
Voorbeeld
`X-Content-Type-Options: nosniff`
Bron
MDN: HTTP headers
LaagReferrer-Policy ingesteldtech.security.referrer
Wat wordt gecontroleerd
De header `Referrer-Policy` is ingesteld.
Waarom het telt
Hij beperkt welke adressen aan andere websites worden doorgegeven.
Voorbeeld
`Referrer-Policy: strict-origin-when-cross-origin`
Bron
MDN: HTTP headers
LaagPermissions-Policy ingesteldtech.security.permissions
Wat wordt gecontroleerd
De header `Permissions-Policy` is ingesteld.
Waarom het telt
Hij schakelt browserfuncties zoals camera en microfoon uit.
Voorbeeld
`Permissions-Policy: camera=(), microphone=(), geolocation=()`
Bron
MDN: HTTP headers
LaagBescherming tegen clickjackingtech.security.clickjacking
Wat wordt gecontroleerd
De pagina beschermt zich met `frame-ancestors` of `X-Frame-Options`.
Waarom het telt
Anders kan de pagina onzichtbaar in een andere website worden ingesloten.
Voorbeeld
`frame-ancestors 'none'` in de CSP of `X-Frame-Options: DENY`.
Bron
MDN: HTTP headers
LaagCross-Origin-Opener-Policy ingesteldtech.security.coop
Wat wordt gecontroleerd
De header `Cross-Origin-Opener-Policy` is ingesteld.
Waarom het telt
Hij scheidt browsercontexten en bemoeilijkt aanvallen via geopende vensters.
Voorbeeld
`Cross-Origin-Opener-Policy: same-origin`
Bron
MDN: HTTP headers
LaagCross-Origin-Embedder-Policy ingesteldtech.security.coep
Wat wordt gecontroleerd
De header `Cross-Origin-Embedder-Policy` is ingesteld.
Waarom het telt
Hij voorkomt dat vreemde bronnen zonder toestemming worden ingesloten.
Voorbeeld
`Cross-Origin-Embedder-Policy: credentialless` (of `require-corp` als er geen vreemde bronnen nodig zijn)
Bron
MDN: HTTP headers
LaagCross-Origin-Resource-Policy ingesteldtech.security.corp
Wat wordt gecontroleerd
De header `Cross-Origin-Resource-Policy` is ingesteld.
Waarom het telt
Hij beperkt wie uw bestanden mag insluiten.
Voorbeeld
`Cross-Origin-Resource-Policy: same-site`
Bron
MDN: HTTP headers

Caching en compressie

GemiddeldBrotli of gzip ingeschakeldtech.caching.compression
Wat wordt gecontroleerd
Tekstantwoorden worden gecomprimeerd met Brotli, gzip of zstd.
Waarom het telt
Compressie bespaart overdrachtstijd en bandbreedte.
Voorbeeld
De antwoordheader noemt `content-encoding: br` of `gzip`.
Bron
MDN: HTTP caching
LaagCache-Control voor statische bestandentech.caching.cachecontrol
Wat wordt gecontroleerd
Statische bestanden hebben een langlevende `Cache-Control`.
Waarom het telt
Bij een volgend bezoek komen de bestanden dan uit de cache.
Voorbeeld
`Cache-Control: public, max-age=31536000, immutable`
Bron
MDN: HTTP caching
LaagHTML kleiner dan 500 KBtech.caching.htmlsize
Wat wordt gecontroleerd
Het HTML-antwoord blijft onder 500 KB.
Waarom het telt
Grote HTML-documenten vertragen het opbouwen en verwerken van de pagina.
Voorbeeld
Verplaats inline CSS en JS naar aparte bestanden.
Bron
web.dev
GemiddeldCache-Control op het hoofdantwoordtech.caching.main
Wat wordt gecontroleerd
Het HTML-antwoord heeft een `Cache-Control`-header.
Waarom het telt
Zonder header beslissen browsers en CDN's elk op hun eigen manier.
Voorbeeld
`Cache-Control: public, max-age=0, must-revalidate`
Bron
MDN: HTTP caching
LaagOpenbare pagina is cachebaartech.caching.public
Wat wordt gecontroleerd
Het antwoord verbiedt caching niet onnodig.
Waarom het telt
`no-store` of `private` vertragen CDN en browser.
Voorbeeld
`Cache-Control: public, max-age=300` in plaats van `no-store`
Bron
MDN: HTTP caching
LaagETag aanwezigtech.caching.etag
Wat wordt gecontroleerd
Het antwoord heeft een `ETag`.
Waarom het telt
Crawlers hoeven ongewijzigde pagina's dan niet opnieuw te downloaden.
Voorbeeld
`ETag: "5f3c9a"`
Bron
MDN: HTTP caching

Afbeeldingen

Gemiddeldalt bij alle inhoudelijke afbeeldingentech.images.alt
Wat wordt gecontroleerd
Alle inhoudelijke afbeeldingen hebben een `alt`-attribuut.
Waarom het telt
Schermlezers en het zoeken naar afbeeldingen hebben de alternatieve tekst nodig.
Voorbeeld
`<img src="team.jpg" alt="Team tijdens een adviesgesprek">`
Bron
Google: Bilder
LaagModerne afbeeldingsformaten (WebP/AVIF)tech.images.format
Wat wordt gecontroleerd
Rasterafbeeldingen worden geleverd als WebP of AVIF; SVG is uitgezonderd.
Waarom het telt
Moderne formaten zijn bij dezelfde kwaliteit veel kleiner.
Voorbeeld
`team.webp` in plaats van `team.jpg`.
Bron
Google: Bilder
Laagwidth en height ingesteldtech.images.dimensions
Wat wordt gecontroleerd
Afbeeldingen geven `width` en `height` op.
Waarom het telt
Zo wordt ruimte gereserveerd en verschuift de opmaak niet.
Voorbeeld
`<img src="team.webp" width="800" height="600" alt="…">`
Bron
web.dev
Laagloading=lazy onder de vouwtech.images.lazy
Wat wordt gecontroleerd
Afbeeldingen onder de vouw gebruiken `loading="lazy"`.
Waarom het telt
Dat bespaart bandbreedte bij het eerste laden.
Voorbeeld
`<img src="…" loading="lazy" alt="…">` vanaf de tweede afbeelding.
Bron
web.dev
LaagHero-afbeelding laadt niet lazytech.images.herolazy
Wat wordt gecontroleerd
De belangrijkste zichtbare afbeelding laadt meteen; een afbeelding met fetchpriority=high mag ook niet lazy zijn.
Waarom het telt
Een lazy geladen hero-afbeelding vertraagt de zichtbare weergave (LCP).
Voorbeeld
`<img src="hero.jpg" fetchpriority="high">` zonder `loading="lazy"`.
Bron
web.dev
LaagHero-afbeelding met fetchpriority=hightech.images.fetchpriority
Wat wordt gecontroleerd
De eerste inhoudelijke afbeelding heeft `fetchpriority="high"`, direct of via een preload in de head.
Waarom het telt
De browser laadt haar dan vóór andere bronnen.
Voorbeeld
`<img src="hero.jpg" fetchpriority="high">` of `<link rel="preload" as="image" href="hero.jpg" fetchpriority="high">`.
Bron
web.dev
GemiddeldAlt-teksten beschrijven de afbeeldingtech.images.altquality
Wat wordt gecontroleerd
Alt-teksten beschrijven de afbeelding en herhalen geen bestandsnamen of opvulteksten.
Waarom het telt
Beschrijvende alt-teksten helpen schermlezers en het zoeken naar afbeeldingen.
Voorbeeld
Fout: `alt="IMG_1234.jpg"`. Goed: `alt="Team tijdens een adviesgesprek"`.
Bron
Google: Bilder
LaagAfbeeldingen kleiner dan 200 KBtech.images.weight
Wat wordt gecontroleerd
De onderzochte afbeeldingen zijn kleiner dan ongeveer 200 KB.
Waarom het telt
Grote afbeeldingen vertragen de pagina, vooral op mobiel.
Voorbeeld
Comprimeer afbeeldingen of lever kleinere varianten via srcset.
Bron
web.dev

Laadtijd

GemiddeldTime to First Byte onder 800 mstech.load.ttfb
Wat wordt gecontroleerd
De server antwoordt in minder dan 800 ms.
Waarom het telt
Een snelle eerste byte versnelt elke volgende stap.
Voorbeeld
Caching, een CDN of minder werk in de backend.
Bron
web.dev
LaagBlokkerende scripts in de headtech.load.blockingscripts
Wat wordt gecontroleerd
De head bevat geen blokkerende scripts zonder `async` of `defer`.
Waarom het telt
Blokkerende scripts houden de eerste weergave tegen.
Voorbeeld
`<script src="app.js" defer></script>`
Bron
web.dev
LaagCSS in de head opgenomentech.load.cssinhead
Wat wordt gecontroleerd
Stylesheets staan als `<link rel="stylesheet">` of `<style>` in de head.
Waarom het telt
CSS in de body vertraagt de eerste weergave en kan inhoud laten verspringen.
Voorbeeld
`<link rel="stylesheet" href="/style.css">` in de `<head>`.
Bron
web.dev
GemiddeldAntwoordtijd onder 3 secondentech.load.responsetime
Wat wordt gecontroleerd
De server antwoordt in minder dan drie seconden.
Waarom het telt
Trage antwoorden kosten posities en bezoekers.
Voorbeeld
Cache de startpagina aan de rand van het netwerk (CDN).
Bron
web.dev

MX en SPF

GemiddeldSPF aanwezig en streng genoegtech.email.spf
Wat wordt gecontroleerd
Het domein heeft een SPF-record dat eindigt op `-all` of `~all`.
Waarom het telt
SPF voorkomt dat vreemde servers in uw naam e-mail versturen.
Voorbeeld
`v=spf1 include:… -all`
Bron
Google Search Central
LaagMX-records aanwezigtech.email.mx
Wat wordt gecontroleerd
Het domein heeft minstens één MX-record.
Waarom het telt
Zonder MX kan het domein geen e-mail ontvangen.
Voorbeeld
`example.com MX 10 mx1.mailprovider.nl.`
Bron
Google Search Central

DMARC

GemiddeldDMARC met p=quarantine of rejecttech.email.dmarc
Wat wordt gecontroleerd
Het DMARC-record staat op `p=quarantine` of `p=reject`.
Waarom het telt
Dat beschermt de reputatie van het domein tegen spam en vervalsing.
Voorbeeld
`v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com`
Bron
Google Search Central
LaagDMARC met een rapportadrestech.email.dmarc_rua
Wat wordt gecontroleerd
Het DMARC-record noemt `rua=` voor rapporten.
Waarom het telt
Zonder rapporten blijft het effect van het beleid onzichtbaar.
Voorbeeld
`rua=mailto:dmarc@example.com`
Bron
Google Search Central

DKIM

LaagDKIM gevondentech.email.dkim
Wat wordt gecontroleerd
Op een gangbare selector is een DKIM-record bereikbaar.
Waarom het telt
DKIM ondertekent uitgaande e-mail en bewijst de herkomst.
Voorbeeld
`<selector>._domainkey` als TXT met `v=DKIM1; p=…`.
Bron
Google Search Central
LaagDKIM met een openbare sleuteltech.email.dkim_key
Wat wordt gecontroleerd
Het DKIM-record bevat een sleutel (`p=`).
Waarom het telt
Zonder sleutel kan geen handtekening worden gecontroleerd.
Voorbeeld
`v=DKIM1; k=rsa; p=MIIBIjANBg…`
Bron
Google Search Central

MTA-STS

LaagMTA-STS aanwezigtech.email.mtasts
Wat wordt gecontroleerd
Op de host `mta-sts.<domein>` is een MTA-STS-beleid gepubliceerd.
Waarom het telt
Het verplicht versleutelde aflevering tussen mailservers.
Voorbeeld
`https://mta-sts.example.com/.well-known/mta-sts.txt` met `version: STSv1`.
Bron
RFC 8461 (MTA-STS)
LaagMTA-STS in de modus enforcetech.email.mtasts_mode
Wat wordt gecontroleerd
Het MTA-STS-beleid staat op `mode: enforce`.
Waarom het telt
Alleen dan dwingen mailservers versleutelde aflevering af.
Voorbeeld
`mode: enforce`
Bron
RFC 8461 (MTA-STS)
Laag_mta-sts is aangekondigdtech.email.mtasts_dns
Wat wordt gecontroleerd
Een TXT-record `_mta-sts` kondigt het beleid aan.
Waarom het telt
Zonder dit record vinden mailservers het beleid niet.
Voorbeeld
`_mta-sts.example.com TXT "v=STSv1; id=20261018"`
Bron
RFC 8461 (MTA-STS)
LaagMTA-STS met max_agetech.email.mtasts_maxage
Wat wordt gecontroleerd
Het beleid noemt `max_age`.
Waarom het telt
Het bepaalt hoe lang mailservers het beleid onthouden.
Voorbeeld
`max_age: 604800`
Bron
RFC 8461 (MTA-STS)

security.txt

Laagsecurity.txt met Contact en Expirestech.trust.securitytxt
Wat wordt gecontroleerd
`/.well-known/security.txt` bevat `Contact` en `Expires`.
Waarom het telt
Beveiligingsonderzoekers weten zo waar ze meldingen naartoe sturen.
Voorbeeld
`Contact: mailto:security@example.com` en `Expires: 2027-12-31T23:59:59.000Z`.
Bron
RFC 9116 (security.txt)
Laagsecurity.txt met een geldige Expirestech.trust.securitytxt_expires
Wat wordt gecontroleerd
`Expires:` ligt in de toekomst.
Waarom het telt
Een verlopen Expires maakt het bestand volgens de RFC ongeldig.
Voorbeeld
`Expires: 2027-12-31T23:59:59.000Z`
Bron
RFC 9116 (security.txt)
Laagsecurity.txt met Canonicaltech.trust.securitytxt_canonical
Wat wordt gecontroleerd
`Canonical:` noemt de plaats van het bestand.
Waarom het telt
Meerdere kopieën blijven zo eenduidig.
Voorbeeld
`Canonical: https://example.com/.well-known/security.txt`
Bron
RFC 9116 (security.txt)
Laagsecurity.txt met Preferred-Languagestech.trust.securitytxt_languages
Wat wordt gecontroleerd
`Preferred-Languages:` noemt de talen van het beveiligingsteam.
Waarom het telt
Melders weten in welke taal ze kunnen schrijven.
Voorbeeld
`Preferred-Languages: nl, en`
Bron
RFC 9116 (security.txt)

Vertrouwen

Analytics en toestemming

LaagAnalytics herkendtech.analytics.detected
Wat wordt gecontroleerd
De pagina bevat Google Analytics, Tag Manager of een privacyvriendelijke tool.
Waarom het telt
Zonder meting ontbreken gegevens voor beslissingen; dit is een tip, geen fout.
Voorbeeld
`gtag.js` met een meet-ID of een Tag Manager-container.
Bron
Google Search Central
GemiddeldToestemming staat vóór analyticstech.analytics.consentfirst
Wat wordt gecontroleerd
De standaardtoestemming staat in de HTML vóór de lader van analytics.
Waarom het telt
Anders worden gegevens zonder toestemming verzameld (AVG-risico).
Voorbeeld
`gtag('consent','default',{ad_storage:'denied',…})` vóór het laden van gtag.js.
Bron
Google Search Central
LaagAnalytics blokkeert de weergave niettech.analytics.async
Wat wordt gecontroleerd
Analyticsscripts gebruiken `async` of `defer`, of Tag Manager laadt ze later.
Waarom het telt
Een blokkerend script vertraagt de eerste weergave.
Voorbeeld
`<script async src="…/gtag/js">`
Bron
web.dev
GemiddeldAlle vier toestemmingstypen starten op deniedtech.analytics.denied
Wat wordt gecontroleerd
`ad_storage`, `analytics_storage`, `ad_user_data` en `ad_personalization` starten op `denied`.
Waarom het telt
Dat is de privacyvriendelijke standaard; `granted` vóór toestemming is een risico.
Voorbeeld
`gtag('consent','default',{ad_storage:'denied',analytics_storage:'denied',ad_user_data:'denied',ad_personalization:'denied'});`
Bron
Google Search Central

Favicon en iconen

LaagFavicon aanwezigtech.icons.favicon
Wat wordt gecontroleerd
De pagina linkt naar een icoon of levert `/favicon.ico`.
Waarom het telt
Het icoon verschijnt in tabbladen en bladwijzers.
Voorbeeld
`<link rel="icon" href="/favicon.ico">`
Bron
Google Search Central
LaagSVG-favicon gelinkttech.icons.svg
Wat wordt gecontroleerd
Er is een icoon met `type="image/svg+xml"` gelinkt.
Waarom het telt
SVG blijft op elk formaat scherp en is klein.
Voorbeeld
`<link rel="icon" href="/icon.svg" type="image/svg+xml">`
Bron
Google Search Central
Laagapple-touch-icon gelinkttech.icons.apple
Wat wordt gecontroleerd
Er is een apple-touch-icon gelinkt.
Waarom het telt
iOS gebruikt het bij het toevoegen aan het beginscherm.
Voorbeeld
`<link rel="apple-touch-icon" href="/apple-touch-icon.png">`
Bron
Google Search Central

Webapp-manifest

LaagWebmanifest gelinkttech.manifest.present
Wat wordt gecontroleerd
De pagina linkt naar een manifest voor de web-app.
Waarom het telt
Het manifest beschrijft naam, iconen en het startgedrag van de app.
Voorbeeld
`<link rel="manifest" href="/site.webmanifest">`
Bron
MDN: Web app manifest
LaagManifest is bereikbaar en geldigtech.manifest.reachable
Wat wordt gecontroleerd
Het gelinkte manifest antwoordt met 200 en geldige JSON.
Waarom het telt
Een kapotte link geeft fouten en geen app-gegevens.
Voorbeeld
`{"name":"Voorbeeld","icons":[…]}` als antwoord van het manifest.
Bron
MDN: Web app manifest
LaagManifest met een maskable icoontech.manifest.maskable
Wat wordt gecontroleerd
Minstens één icoon in het manifest heeft een `purpose` met `maskable`.
Waarom het telt
Android snijdt iconen anders onhandig bij.
Voorbeeld
`{"src":"/icon-512.png","purpose":"any maskable"}`
Bron
MDN: Web app manifest
Laagtheme-color ingesteldtech.themecolor
Wat wordt gecontroleerd
De pagina stelt `theme-color` in.
Waarom het telt
Mobiele browsers kleuren de adresbalk dan in de kleur van het merk.
Voorbeeld
`<meta name="theme-color" content="#123456">`
Bron
MDN: Web app manifest

Toegankelijkheid

LaagInteractieve elementen hebben een toegankelijke naamtech.a11y.arianames
Wat wordt gecontroleerd
Links, knoppen en elementen met een ARIA-rol hebben een toegankelijke naam via tekst, aria-label, aria-labelledby, title, alt van een afbeelding of SVG-title.
Waarom het telt
Schermlezers kunnen elementen zonder naam niet voorlezen.
Voorbeeld
`<button aria-label="Menu openen"><svg></svg></button>`
Bron
W3C: WAI-ARIA
LaagGeen focusbare inhoud onder aria-hiddentech.a11y.ariahidden
Wat wordt gecontroleerd
Elementen met `aria-hidden="true"` bevatten geen focusbare onderdelen, tenzij uitgesloten met tabindex=-1, disabled of inert.
Waarom het telt
Anders komt de toetsenbordfocus op onzichtbare elementen terecht.
Voorbeeld
`<div aria-hidden="true" inert>` voor menu's die alleen visueel verborgen zijn.
Bron
W3C: WAI-ARIA

DNS (CAA)

LaagCAA-record ingesteldtech.email.caa
Wat wordt gecontroleerd
Het domein machtigt certificaatautoriteiten via CAA.
Waarom het telt
CAA voorkomt dat andere autoriteiten certificaten uitgeven.
Voorbeeld
`example.com CAA 0 issue "letsencrypt.org"`
Bron
Google Search Central

Toegang voor bots

KritiekPagina bereikbaar zonder botblokkadetech.bots.no_challenge
Wat wordt gecontroleerd
Of ons verzoek de inhoud van de pagina krijgt of een blokkadepagina van een firewall (Cloudflare, Sucuri, Akamai, DataDome, PerimeterX, Imperva).
Waarom het telt
Zoekmachines en AI-assistenten halen pagina's op zonder browser. Toont de firewall hun een blokkadepagina, dan wordt de inhoud niet gelezen en niet geciteerd.
Voorbeeld
Stel de botbescherming zo in dat bekende crawlers (geverifieerde bots) worden doorgelaten, bijvoorbeeld „Verified Bots” toestaan in Cloudflare.
Bron
Google Search Central: Overview of Google crawlers
KritiekGeen JavaScript-controle of CAPTCHA vóór de inhoudtech.bots.no_captcha
Wat wordt gecontroleerd
Of er vóór de inhoud een CAPTCHA (reCAPTCHA, hCaptcha, Turnstile) staat of een controle die eerst JavaScript moet uitvoeren.
Waarom het telt
Crawlers lossen geen CAPTCHA's op en voeren vaak geen JavaScript uit. Een CAPTCHA vóór de hele pagina sluit ze buiten; in een formulier is hij geen probleem.
Voorbeeld
Gebruik de CAPTCHA alleen in het formulier, niet als toegangspagina.
Bron
Google Search Central: JavaScript SEO basics
KritiekGooglebot krijgt de inhoudtech.bots.googlebot
Wat wordt gecontroleerd
We halen de pagina daarnaast op met de naam Googlebot in de user-agent (gemarkeerd als controle van RELACON) en vergelijken het resultaat met ons normale verzoek.
Waarom het telt
Sommige firewalls blokkeren alles wat zich Googlebot noemt maar niet van de adressen van Google komt, andere laten alleen Googlebot door. De vergelijking laat zien of crawlers anders worden behandeld.
Voorbeeld
Controleer met de URL-inspectie in Search Console of de echte Googlebot de pagina kan ophalen.
Bron
Google: Verifying Googlebot
GemiddeldAI-crawlers krijgen de inhoudtech.bots.ai
Wat wordt gecontroleerd
We halen de pagina op met de naam GPTBot in de user-agent (gemarkeerd als controle van RELACON) en vergelijken het resultaat met ons normale verzoek.
Waarom het telt
Veel diensten voor botbescherming blokkeren AI-crawlers standaard, ook als robots.txt ze toestaat. Dan helpt de toestemming in robots.txt niet.
Voorbeeld
Sta AI-crawlers ook in de firewall toe, bij Cloudflare onder „AI Crawl Control”.
Bron
OpenAI: Overview of OpenAI crawlers
Gemiddeldrobots.txt leesbaar ondanks de firewalltech.bots.robots
Wat wordt gecontroleerd
Of /robots.txt als tekst wordt geleverd en niet als blokkadepagina van de firewall.
Waarom het telt
Krijgt een crawler in plaats van robots.txt een blokkadepagina of serverfout, dan behandelt Google voor de zekerheid de hele website als geblokkeerd.
Voorbeeld
Sluit `/robots.txt` uit van de botbescherming.
Bron
Google: How Google interprets robots.txt

Veelgestelde vragen

Slaat de check mijn pagina op?

Buiten het rapport wordt geen inhoud opgeslagen. Het rapport bevat de URL, de resultaten en het tijdstip van de controle.

Waarom staat er bij een regel n.v.t.?

n.v.t. betekent dat de regel niet op deze pagina van toepassing is, bijvoorbeeld videoregels op een pagina zonder video. n.v.t. kost nooit punten.

Meer over de website-check

Nu controleren

Wat de RELACON website-check controleert | RELACON