Catalog / eyeroskilde.dk
61

SEO audit for eyeroskilde.dk

Øjenlæge i Roskilde

otherWordPress

Health 61/100 (fair) · 31 pages crawled · generated 2026-08-26

Download Markdown report (feed to ChatGPT / Claude / Cursor)

Kom til øjenlæge på Stændertorvet 2 i Roskilde.

Screenshot of eyeroskilde.dk
31
pages crawled
27
indexable pages
4
errors
53
warnings
274
notices
2
orphan pages
2
broken links
Category breakdown
CategoryScoreErrorsWarningsNotices
Links 90 2 4 3
Crawlability 94 2 0 2
Performance 74 0 27 81
Duplicate 92 0 8 8
Content 96 0 4 17
Agent Readiness 97 0 3 7
Meta Description 97 0 3 8
Indexability 98 0 2 27
Headings 99 0 1 1
Structured Data 99 0 1 28
Cache 100 0 0 27
Images 100 0 0 27
Security 100 0 0 34
Social 100 0 0 3
URL 100 0 0 1
Findings

Errors (2 rules)

error Broken internal link (target 4xx/5xx)

Rule links.broken_internal · Links · 2 occurrence(s)

error Client error (4xx) response

Rule status.4xx · Crawlability · 2 occurrence(s)

Warnings (11 rules)

warning Control has no accessible name

Rule agent.control_no_name · Agent Readiness · 3 occurrence(s)

warning Thin content (low word count)

Rule content.thin · Content · 4 occurrence(s)

warning Duplicate page content

Rule duplicate.content · Duplicate · 4 occurrence(s)

warning Duplicate <title> across pages

Rule duplicate.title · Duplicate · 4 occurrence(s)

warning Missing <h1>

Rule h1.missing · Headings · 1 occurrence(s)

warning Page is noindex

Rule index.noindex · Indexability · 2 occurrence(s)

warning Orphan page (no internal inlinks)

Rule links.orphan · Links · 2 occurrence(s)

warning Internal link points to a redirect

Rule links.redirect_target · Links · 2 occurrence(s)

warning Missing meta description

Rule meta_desc.missing · Meta Description · 3 occurrence(s)

warning Render-blocking script in <head> (no defer/async)

Rule perf.render_blocking · Performance · 27 occurrence(s)

warning Schema describes content not visible on the page

Rule schema.hidden_content · Structured Data · 1 occurrence(s)

  • https://eyeroskilde.dk/ — a schema name/headline ("Øjenlæge i Roskilde") does not appear in the page's visible text — Google's policies prohibit marking up content not visible to readers. This is a heuristic (a static-HTML substring check): JS-rendered or abbreviated names can be false positives, so verify before removing.

Notices (22 rules)

notice Heading levels skip a level

Rule agent.heading_skip · Agent Readiness · 6 occurrence(s)

notice No llms.txt for AI agents

Rule agent.llms_txt_missing · Agent Readiness · 1 occurrence(s)

  • https://eyeroskilde.dk/ — no llms.txt found at the site root — add one so AI agents get a curated site summary

notice Page served uncached (no-store/private or CDN bypass)

Rule cache.not_cacheable · Cache · 27 occurrence(s)

notice noarchive directive (blocks cached copy)

Rule directives.noarchive · Indexability · 27 occurrence(s)

notice Duplicate meta description across pages

Rule duplicate.meta_desc · Duplicate · 8 occurrence(s)

notice Multiple <h1> elements

Rule h1.multiple · Headings · 1 occurrence(s)

notice Likely hero image lacks fetchpriority=high

Rule images.hero_no_fetchpriority · Performance · 27 occurrence(s)

  • https://eyeroskilde.dk/ — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/behandling — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/behandling/alderspletter-nethinden-amd — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/behandling/blodpropper-i-oejet — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/behandling/diabetisk-oejensygdom — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/behandling/efterstaer — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/behandling/fluer-og-lysglimt-i-synsfeltet — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/behandling/graa-staer — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/behandling/groen-staer — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/behandling/oejenlaagsoperation — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/behandling/toerre-oejne — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/find-vej — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/kvalitet — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/kvalitet/privatlivspolitik — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/links — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/oejenlaege-panteleimon-mortzos — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/om-os/praktisk-information — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/personale — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/personale/operationer/skeleoperation — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/personale/undersoegelser — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/praktisk-information — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/praktisk-information/afbud-og-udeblivelse — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/praktisk-information/for-boern — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/praktisk-information/husk — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://eyeroskilde.dk/praktisk-information/ventetid — the likely hero/LCP image (cropped-logo-2024.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.

notice Images without width/height (layout shift / CLS)

Rule images.missing_dimensions · Images · 27 occurrence(s)

notice Internal link has no anchor text / accessible name

Rule links.no_anchor_text · Links · 1 occurrence(s)

  • https://eyeroskilde.dk/kvalitet — 1 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.

notice Page has only one internal inlink (fragile crawl path)

Rule links.single_inlink · Links · 2 occurrence(s)

notice Meta description too long

Rule meta_desc.too_long · Meta Description · 2 occurrence(s)

notice Missing Open Graph tags

Rule og.missing · Social · 3 occurrence(s)

notice Legacy image format (jpg/png/gif) with no next-gen fallback

Rule perf.images_legacy_format · Performance · 27 occurrence(s)

notice No ETag header (no conditional GET for unchanged pages)

Rule perf.no_etag · Performance · 27 occurrence(s)

  • https://eyeroskilde.dk/ — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/behandling — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/behandling/alderspletter-nethinden-amd — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/behandling/blodpropper-i-oejet — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/behandling/diabetisk-oejensygdom — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/behandling/efterstaer — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/behandling/fluer-og-lysglimt-i-synsfeltet — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/behandling/graa-staer — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/behandling/groen-staer — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/behandling/oejenlaagsoperation — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/behandling/toerre-oejne — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/find-vej — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/kvalitet — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/kvalitet/privatlivspolitik — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/links — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/oejenlaege-panteleimon-mortzos — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/om-os/praktisk-information — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/personale — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/personale/operationer/skeleoperation — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/personale/undersoegelser — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/praktisk-information — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/praktisk-information/afbud-og-udeblivelse — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/praktisk-information/for-boern — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/praktisk-information/husk — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://eyeroskilde.dk/praktisk-information/ventetid — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.

notice URL redirects to another URL

Rule redirect.single · Crawlability · 2 occurrence(s)

notice Deep page has no BreadcrumbList structured data

Rule schema.breadcrumb_missing · Structured Data · 1 occurrence(s)

notice Deprecated schema type with no Google rich result

Rule schema.deprecated_type · Structured Data · 27 occurrence(s)

notice Missing recommended security headers

Rule security.missing_headers · Security · 29 occurrence(s)

notice target=_blank link without rel=noopener (tab-napping)

Rule security.unsafe_cross_origin_links · Security · 5 occurrence(s)

notice Uppercase letters in URL path

Rule url.uppercase · URL · 1 occurrence(s)

Pages (showing 31 of 31)
URLStatusIndexableWordsIn-links
https://eyeroskilde.dk/
Øjenlæge i Roskilde
200 yes 189 29
https://eyeroskilde.dk/behandling
Behandling – Stændertorvets Øjenklinik
200 yes 350 29
https://eyeroskilde.dk/behandling/alderspletter-nethinden-amd
Alderspletter på nethinden - AMD – Stændertorvets Øjenklinik
200 yes 271 29
https://eyeroskilde.dk/behandling/blodpropper-i-oejet
Blodpropper i øjet – Stændertorvets Øjenklinik
200 yes 234 29
https://eyeroskilde.dk/behandling/diabetisk-oejensygdom
Diabetisk Øjensygdom – Stændertorvets Øjenklinik
200 yes 235 29
https://eyeroskilde.dk/behandling/efterstaer
Efterstær – Stændertorvets Øjenklinik
200 yes 343 29
https://eyeroskilde.dk/behandling/fluer-og-lysglimt-i-synsfeltet
Fluer og lysglimt i synsfeltet – Stændertorvets Øjenklinik
200 yes 255 29
https://eyeroskilde.dk/behandling/graa-staer
Grå stær – Stændertorvets Øjenklinik
200 yes 490 29
https://eyeroskilde.dk/behandling/groen-staer
Grøn Stær – Stændertorvets Øjenklinik
200 yes 321 29
https://eyeroskilde.dk/behandling/oejenlaagsoperation
Øjenlågsoperation – Stændertorvets Øjenklinik
200 yes 626 29
https://eyeroskilde.dk/behandling/toerre-oejne
Tørre øjne – Stændertorvets Øjenklinik
200 yes 228 29
https://eyeroskilde.dk/find-vej
Kontakt os / Find Vej – Stændertorvets Øjenklinik
200 yes 294 29
https://eyeroskilde.dk/kvalitet
Kvalitet – Stændertorvets Øjenklinik
200 yes 221 29
https://eyeroskilde.dk/kvalitet/privatlivspolitik
Privatlivspolitik – Stændertorvets Øjenklinik
200 yes 1221 29
https://eyeroskilde.dk/links
Links – Stændertorvets Øjenklinik
200 yes 189 29
https://eyeroskilde.dk/oejenlaege-panteleimon-mortzos
Øjenlæge Panteleimon Mortzos – Stændertorvets Øjenklinik
200 yes 293 29
https://eyeroskilde.dk/personale
Personale – Stændertorvets Øjenklinik
200 yes 334 29
https://eyeroskilde.dk/personale/operationer/skeleoperation
Skeleoperation – Stændertorvets Øjenklinik
200 yes 198 29
https://eyeroskilde.dk/praktisk-information
Praktisk Information – Stændertorvets Øjenklinik
200 yes 355 29
https://eyeroskilde.dk/praktisk-information/afbud-og-udeblivelse
Afbud og udeblivelse – Stændertorvets Øjenklinik
200 yes 214 29
https://eyeroskilde.dk/praktisk-information/for-boern
For børn – Stændertorvets Øjenklinik
200 yes 270 29
https://eyeroskilde.dk/praktisk-information/husk
Husk – Stændertorvets Øjenklinik
200 yes 276 29
https://eyeroskilde.dk/praktisk-information/ventetid
Ventetid – Stændertorvets Øjenklinik
200 yes 248 29
https://eyeroskilde.dk/om-os/praktisk-information
Praktisk Information – Stændertorvets Øjenklinik
200 yes 355 1
https://eyeroskilde.dk/klinikken/operationer/graa-staer
Grå stær – Stændertorvets Øjenklinik
200 yes 490 1
https://eyeroskilde.dk/personale/operationer
Operationer – Stændertorvets Øjenklinik
200 yes 221 0
https://eyeroskilde.dk/personale/undersoegelser
Undersøgelser – Stændertorvets Øjenklinik
200 yes 196 0
https://eyeroskilde.dk/klinikken/operationer/efterstaer
Side ikke fundet – Stændertorvets Øjenklinik
404 no 205 1
https://eyeroskilde.dk/klinikken/operationer/oejenlaagsoperation
Side ikke fundet – Stændertorvets Øjenklinik
404 no 205 1
https://eyeroskilde.dk/wp-content/uploads/2018/08/kvalitets-resultater.pdf 200 no 0 29
https://eyeroskilde.dk/wp-content/uploads/2022/01/Afgoerelse-om-akkrediteringsstatus.pdf 200 no 0 1

Audit your own site — free

157 checks, internal PageRank, render-diff. No signup, results in ~30s.

Scan your site →