Skip to content
Start free scan
Public reportCertified until 8 July 2027

ogjg.nl

Visit ogjg.nl ↗

Speed
21

Better than 14% (national)

Security
79

Better than 68% (national)

Mobile
100

Better than 18% (national)

Accessibility
0

Better than 0% (national)

Average score
50/ 100
Better than 23% of the 22 scanned sites · methodology
No mark yet

Machine-readable verification: /api/verify/ogjg.nl

Certified on 9 July 2026 · 8 pages checked · 16 improvements found

Accessibility: what we do and do not prove

Our accessibility score comes from automated checks against WCAG 2.2 AA. Machines cover an estimated 30-50% of the criteria; contrast nuance, keyboard traps in complex flows and screen-reader experience need a human audit. The mark does not prove full WCAG conformance.

Read more about WCAG →Request a human deep-dive audit →

Full certification report

Part of the WebYes certification: beyond the four pillars we also audit SEO, structured data, content, links, privacy and AI findability. These extra categories do not count towards the certification score.

Spam signals
0
Content
87
On-page SEO
92
Technical
98
Structured data
99
Quality impression
99
Links
100
AI findability (GEO)
100
URL structure
100
Social
100
Privacy
100
Legal
100

Findings

  • ErrorAccessibilityAutomatically checked

    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.

    How to fix it

    Link every form field to a label via for/id, or use aria-label. A placeholder alone is not enough: it disappears as soon as someone types.

    Read more in the knowledge base: WCAG guidelines →

  • ErrorAccessibilityAutomatically checked

    1 <button> element(s) have no accessible name.

    Add visible text content, aria-label="...", or aria-labelledby="..." to every <button>.

    How to fix it

    Some buttons have no name, such as a hamburger or close button with only an icon. Add an aria-label (for example aria-label="Open menu").

    Read more in the knowledge base: WCAG guidelines →

  • ErrorAccessibilityAutomatically checked

    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.

    How to fix it

    Some links have no readable name, usually icon links. Give them an aria-label or visually hidden text so a screen reader announces more than just 'link'.

    Read more in the knowledge base: WCAG guidelines →

  • ErrorSpam signals

    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.

  • WarningSpeed

    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.

    How to fix it

    Reduce render-blocking CSS: inline the critical above-the-fold styles and load the rest asynchronously. Also remove CSS that is no longer used anywhere.

    Read more in the knowledge base: Testing website speed →

  • WarningSpeed

    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.

    How to fix it

    Give script tags in the head a defer or async attribute, or move them to the end of the body. Right now they block page rendering.

    Read more in the knowledge base: Testing website speed →

  • WarningSpeed

    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.

    How to fix it

    Remove loading="lazy" from the largest above-the-fold image. Lazy loading delays exactly that download and slows down your LCP.

    Read more in the knowledge base: Core Web Vitals →

  • WarningSpeed

    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.

    Read more in the knowledge base: Core Web Vitals →

  • WarningSpeed

    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.

    How to fix it

    Give every image a width and height attribute (or CSS aspect-ratio). The browser then reserves space and the page does not shift while loading (CLS).

    Read more in the knowledge base: Core Web Vitals →

  • WarningAccessibilityAutomatically checked

    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">.

    Read more in the knowledge base: WCAG guidelines →

  • WarningSecurity

    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.

    How to fix it

    Add a Content-Security-Policy header that defines which sources may load scripts and styles. Start with a report-only policy if needed and tighten it from there.

    Read more in the knowledge base: Security headers →

  • WarningOn-page SEO

    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.

  • WarningOn-page SEO

    Page has multiple <h1> tags (2).

    Consolidate to a single <h1> per page; use <h2>-<h6> for subsections.

  • WarningStructured 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.

  • WarningContent

    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/

  • WarningSpam signals

    Term "colleges" appears unusually often (12×, 5% of words).

    Rewrite for natural language — repeated exact-match phrases can trigger spam classifiers.

  • InfoSpeed

    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.

    How to fix it

    Prioritise your largest above-the-fold image with fetchpriority="high" or a preload link. The download then starts immediately instead of after the rest of the page.

    Read more in the knowledge base: Core Web Vitals →

  • InfoSpeed

    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.

    How to fix it

    Serve images in a modern format (WebP or AVIF), scaled to the size at which they are displayed. An image service or build step (such as next/image) handles this automatically.

    Read more in the knowledge base: Core Web Vitals →

  • InfoSpeed

    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)

    How to fix it

    CSS or JavaScript files are served unminified. Enable minification in your build process; virtually every bundler does this by default in production.

    Read more in the knowledge base: Testing website speed →

  • InfoSecurity

    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`.

    How to fix it

    Add Cross-Origin-Opener-Policy: same-origin (and where possible Cross-Origin-Embedder-Policy). This isolates your site from windows opened by other origins.

    Read more in the knowledge base: Security headers →

  • InfoSecurity

    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).

    How to fix it

    Add Cross-Origin-Resource-Policy: same-origin (or same-site) to your responses so other sites cannot freely embed your files.

    Read more in the knowledge base: Security headers →

  • InfoSecurity

    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.

    Read more in the knowledge base: Security headers →

  • InfoOn-page SEO

    Heading level jumps from h1 to h3, skipping h2.

  • InfoOn-page SEO

    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.

  • InfoTechnical

    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.

  • InfoTechnical

    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.

  • InfoQuality impression

    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.

More from the register

Other websites holding an active WebYes certification. Every report is public and audited on the same four pillars.

webyes.nl✓ Certified

Score 88 / 100 · view the report →

televisieselectie.nl✓ Certified

Score 90 / 100 · view the report →

solarfast.nl✓ Certified

Score 91 / 100 · view the report →

duurzaamgefinancierd.nl✓ Certified

Score 96 / 100 · view the report →

Scan your own websiteView the certification register →
webyes

Het onafhankelijke keurmerk voor Nederlandse websites. Kalm, transparant, periodiek herkeurd.

Start gratis scan

Keurmerk

  • Start gratis scan
  • Hoe het werkt
  • Keurmerkregister
  • Prijzen
  • Veelgestelde vragen

Kennis

  • Kennisbank
  • Blog
  • Jaarrapport

Bedrijf

  • Over ons
  • Contact
  • Mijn account

Juridisch

  • Privacybeleid
  • Algemene voorwaarden
  • Cookies
© 2026 WebYesGebouwd in Nederland.

    Jaarrapport in de maak. In de maak: het jaarrapport over de staat van het Nederlandse web. Lees meer →

    webyes
    WerkwijzePrijzenRegisterKennisbankOver onsContact
    InloggenStart gratis scan