ogjg.nl
Gekeurd op 9 juli 2026 · 8 pagina's gecontroleerd · 16 verbeterpunten gevonden
Volledige audit
Onderdeel van het WebYes-keurmerk: naast de vier pijlers keuren we ook SEO, structured data, content, links, privacy en AI-vindbaarheid. Deze extra categorieën tellen niet mee in de keurmerkscore.
Bevindingen (28)
- FoutToegankelijkheid
1 <input> element(s) have no associated label, aria-label, or aria-labelledby.
Associate a <label for="inputId"> or add aria-label="..." to every visible form input.
Zo los je het op
Koppel elk formulierveld aan een label via for/id, of gebruik aria-label. Een placeholder alleen is niet genoeg: die verdwijnt zodra iemand typt.
- FoutToegankelijkheid
1 <button> element(s) have no accessible name.
Add visible text content, aria-label="...", or aria-labelledby="..." to every <button>.
Zo los je het op
Er zijn knoppen zonder naam, zoals een hamburger- of sluitknop met alleen een icoon. Voeg een aria-label toe (bijvoorbeeld aria-label="Menu openen").
- FoutToegankelijkheid
14 link(s) have no accessible name (no text, aria-label, or title).
Add visible link text or aria-label to every <a> element so screen readers can announce the destination.
Zo los je het op
Er zijn links zonder leesbare naam, meestal icoon-links. Geef ze een aria-label of visueel verborgen tekst, zodat een schermlezer meer voorleest dan alleen 'link'.
- FoutSpam-signalen
Page CSS/HTML suggests hidden/off-screen text patterns often associated with cloaking.
Remove display:none / zero-font-size blocks used to inject extra keywords. Use visible, user-facing content only.
- WaarschuwingSnelheid
48 render-blocking <link rel="stylesheet"> in <head> (target: ≤2).
Inline critical CSS, lazy-load the rest with the `<link rel="preload" as="style" onload="this.rel='stylesheet'">` pattern, or split chunks per route. Each blocking stylesheet adds round-trips to LCP.
Zo los je het op
Verklein je render-blokkerende CSS: inline de kritieke stijlen voor boven de vouw en laad de rest asynchroon. Verwijder ook CSS die nergens meer gebruikt wordt.
- WaarschuwingSnelheid
1 parser-blocking <script src> in <head> (no defer/async).
Add `defer` or `async` to every external <script> in <head>. Parser-blocking scripts directly inflate INP and TBT.
Zo los je het op
Geef script-tags in de head een defer- of async-attribuut, of verplaats ze naar het einde van de body. Nu blokkeren ze het opbouwen van de pagina.
- WaarschuwingSnelheid
Likely LCP image has `loading="lazy"` — this is a known anti-pattern.
Remove `loading="lazy"` from the hero image (https://www.oudgeleerdjonggedaan.nl/wp-content/uploads/2025/01/icon-locaties.svg). Lazy-loading the LCP image delays it until intersection-observer fires.
Zo los je het op
Haal loading="lazy" weg van de grootste afbeelding boven de vouw. Lazy loading stelt juist die download uit en maakt je LCP langzamer.
- WaarschuwingSnelheid
Critical-path payload too heavy: 2 budgets breached simultaneously.
Breaches: 48 blocking <link rel="stylesheet">; 1 blocking <script src> without defer/async. Each one alone is borderline; together they translate to a multi-second LCP on slow networks. Inline only the above-the-fold critical CSS, defer everything else, and split route-specific bundles.
- WaarschuwingSnelheid
8 image(s) lack explicit width/height or aspect-ratio, risking layout shifts.
Examples: https://www.oudgeleerdjonggedaan.nl/wp-content/uploads/2025/01/icon-locaties.svg, https://www.oudgeleerdjonggedaan.nl/wp-content/uploads/2025/12/Aafje.png, https://www.oudgeleerdjonggedaan.nl/wp-content/uploads/2025/12/Amtelring.png. Always set width and height attributes (or CSS aspect-ratio) on <img> so the browser reserves space before the image loads. In Next.js, use the `width`/`height` props or `fill` with a sized parent.
Zo los je het op
Geef elke afbeelding een width- en height-attribuut (of CSS aspect-ratio). De browser reserveert dan ruimte en de pagina verspringt niet tijdens het laden (CLS).
- WaarschuwingToegankelijkheid
13 image(s) with alt="" lack role="presentation" or aria-hidden="true".
Mark decorative images explicitly: <img alt="" role="presentation"> or <img alt="" aria-hidden="true">.
- WaarschuwingVeiligheid
No Content-Security-Policy header — XSS / clickjacking surface is wide open.
Start with a strict-dynamic CSP using nonces: `Content-Security-Policy: script-src 'nonce-<...>' 'strict-dynamic'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'`. Roll out in `Content-Security-Policy-Report-Only` first to catch violations.
Zo los je het op
Voeg een Content-Security-Policy header toe die vastlegt welke bronnen scripts en stijlen mogen laden. Begin desnoods met een rapporterende policy (Content-Security-Policy-Report-Only) en scherp die daarna aan.
- WaarschuwingSEO on-page
Title is too long (78 chars, max 60); will be truncated in SERPs.
Trim to ~60 characters and keep the most important keywords on the left.
- WaarschuwingSEO on-page
Page has multiple <h1> tags (2).
Consolidate to a single <h1> per page; use <h2>-<h6> for subsections.
- WaarschuwingStructured data
Page looks like a watch page (1 content video, 0 words) but has no VideoObject structured data.
This page reads as a dedicated watch page (one video, minimal other text). Add a VideoObject JSON-LD block (name, description, thumbnailUrl, contentUrl, uploadDate, duration, url/embedUrl pointing at this page) so Google can index it as a video result. If the clip is only supplementary (e.g. a homepage promo), keep it inline without schema instead.
- WaarschuwingContent
Title overlaps significantly with 2 other page(s).
Differentiate titles to avoid cannibalisation. Similar pages: https://www.oudgeleerdjonggedaan.nl/colleges/online/, https://www.oudgeleerdjonggedaan.nl/colleges/op-locatie/
- WaarschuwingSpam-signalen
Term "colleges" appears unusually often (12×, 5% of words).
Rewrite for natural language — repeated exact-match phrases can trigger spam classifiers.
- InfoSnelheid
Likely LCP image is missing `fetchpriority="high"`.
Add `fetchpriority="high"` to the hero image (https://www.oudgeleerdjonggedaan.nl/wp-content/uploads/2025/01/icon-locaties.svg) so the browser fetches it ahead of low-priority resources. Saves 100-300ms LCP on typical pages.
Zo los je het op
Geef je grootste afbeelding boven de vouw voorrang met fetchpriority="high" of een preload-link. Zo start de download direct in plaats van na de rest van de pagina.
- InfoSnelheid
4 image(s) ≥800px wide without srcset or <picture> for responsive delivery.
Use `srcset` with multiple resolutions or wrap images in `<picture>` with WebP/AVIF sources. In Next.js, use `next/image` which handles this automatically. Without responsive images, mobile users download desktop-sized assets.
Zo los je het op
Lever afbeeldingen in een modern formaat (WebP of AVIF), geschaald naar het formaat waarop ze getoond worden. Een fotodienst of buildstap (zoals next/image) regelt dit automatisch.
- InfoSnelheid
Likely unminified JS/CSS: 6 inline blocks + 17 external files.
Minify JavaScript and CSS to cut bytes and parse time. Examples: https://js.mollie.com/v1/mollie.js?ver=1.8.2, https://pretix.eu/widget/v2.nl.js, https://www.oudgeleerdjonggedaan.nl/wp-content/plugins/talkie-text-to-speech//js/scripts.js (heuristic — external file contents are not fetched)
Zo los je het op
CSS- of JavaScript-bestanden worden ongeminified geserveerd. Zet minificatie aan in je buildproces; vrijwel elke bundler doet dit standaard in productie.
- InfoVeiligheid
Missing `Cross-Origin-Opener-Policy` + `Cross-Origin-Embedder-Policy`. Cross-origin isolation lets you use SharedArrayBuffer and high-resolution timers safely.
Send `Cross-Origin-Opener-Policy: same-origin` and `Cross-Origin-Embedder-Policy: require-corp`. Note this requires every embedded resource to send `Cross-Origin-Resource-Policy`.
Zo los je het op
Voeg Cross-Origin-Opener-Policy: same-origin toe (en waar mogelijk Cross-Origin-Embedder-Policy). Dit isoleert je site van vensters die door andere origins zijn geopend.
- InfoVeiligheid
No `Cross-Origin-Resource-Policy` header. Without it, side-channel attacks via Spectre-style speculative execution stay viable.
Send `Cross-Origin-Resource-Policy: same-origin` for HTML responses, and `cross-origin` for assets you intentionally publish (e.g. fonts, JS bundles).
Zo los je het op
Voeg Cross-Origin-Resource-Policy: same-origin (of same-site) toe aan je responses, zodat andere sites je bestanden niet zomaar kunnen insluiten.
- InfoVeiligheid
robots.txt Disallow lines reveal sensitive paths: /wp-admin/.
Listing a path under `Disallow:` doesn't hide it — it advertises it. Either move the resource behind auth and remove the Disallow line, or stop linking the path entirely so it never gets indexed.
- InfoSEO on-page
Heading level jumps from h1 to h3, skipping h2.
- InfoSEO on-page
8/25 images lack explicit width/height or aspect-ratio (CLS risk).
Set width+height attributes, or use `style="aspect-ratio: w / h"` on the <img> or its wrapper to reserve layout space.
- InfoContent
Text-to-HTML ratio is 1.4% (target ≥ 2%).
Very low ratios usually mean the hydration payload, inline RSC blob or a vendor script is bigger than the rendered prose. Inspect the largest scripts and externalise or split them.
- InfoTechniek
Crawl stopped at the max-pages limit (6); 671 sitemap URLs were not visited but might still be reachable.
Re-run with `--max-pages 2000` (or higher) before trusting orphan-from-sitemap counts.
- InfoTechniek
No HTML sitemap link found on the homepage. Placing one in the footer is an industry best practice for UX and crawler/AI discovery.
Add a link to a user-facing HTML sitemap (e.g. `/sitemap`, not `sitemap.xml`) inside the <footer>. An HTML sitemap acts as a structural overview for lost visitors and as a fallback discovery surface for search engines and AI crawlers.
- InfoKwaliteitsindruk
Homepage has no `<link rel="icon">` — browsers will request /favicon.ico which may 404.
Add a custom favicon that reflects your brand. A missing favicon causes extra 404 log noise and looks unprofessional in browser tabs and bookmarks.
Volledige audit uitgevoerd op 9 juli 2026.
Meer uit het keurmerkregister
Andere websites met een actief WebYes-keurmerk. Elk rapport is openbaar en op dezelfde vier pijlers gekeurd.