Catalog / campsite-os.de
65

SEO audit for campsite-os.de

Campsite OS | The PMS Solution for Today's Campsite.

other

Health 65/100 (fair) · 21 pages crawled · generated 2026-08-26

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

Campsite OS is the Property Management System (PMS) for your campsite or motorhome park. Try it now.

21
pages crawled
20
indexable pages
0
errors
58
warnings
226
notices
0
orphan pages
0
broken links
Category breakdown
CategoryScoreErrorsWarningsNotices
Hreflang 60 0 28 0
Agent Readiness 71 0 20 1
Content 89 0 8 40
Crawlability 99 0 1 0
Robots 99 0 1 0
Cache 100 0 0 20
Canonical 100 0 0 1
Images 100 0 0 20
Performance 100 0 0 76
Security 100 0 0 20
Social 100 0 0 40
Structured Data 100 0 0 8
Findings

Warnings (7 rules)

warning Control has no accessible name

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

warning Thin content (low word count)

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

warning Incomplete/empty response after retries (likely transient — re-crawl)

Rule fetch.incomplete · Crawlability · 1 occurrence(s)

warning Self hreflang language disagrees with html lang

Rule hreflang.mismatch_html_lang · Hreflang · 16 occurrence(s)

  • https://www.campsite-os.de/cs — the self-referencing hreflang is "cs" but <html lang> is "de" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
  • https://www.campsite-os.de/cs/demo — the self-referencing hreflang is "cs" but <html lang> is "de" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
  • https://www.campsite-os.de/en/demo — the self-referencing hreflang is "en" but <html lang> is "de" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
  • https://www.campsite-os.de/en/integrations/terminals — the self-referencing hreflang is "en" but <html lang> is "de" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
  • https://www.campsite-os.de/es — the self-referencing hreflang is "es" but <html lang> is "de" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
  • https://www.campsite-os.de/es/demo — the self-referencing hreflang is "es" but <html lang> is "de" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
  • https://www.campsite-os.de/fr — the self-referencing hreflang is "fr" but <html lang> is "de" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
  • https://www.campsite-os.de/fr/demo — the self-referencing hreflang is "fr" but <html lang> is "de" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
  • https://www.campsite-os.de/fr/integrations/terminals — the self-referencing hreflang is "fr" but <html lang> is "de" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
  • https://www.campsite-os.de/it — the self-referencing hreflang is "it" but <html lang> is "de" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
  • https://www.campsite-os.de/it/demo — the self-referencing hreflang is "it" but <html lang> is "de" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
  • https://www.campsite-os.de/it/integrations/terminals — the self-referencing hreflang is "it" but <html lang> is "de" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
  • https://www.campsite-os.de/nl — the self-referencing hreflang is "nl" but <html lang> is "de" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
  • https://www.campsite-os.de/nl/demo — the self-referencing hreflang is "nl" but <html lang> is "de" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
  • https://www.campsite-os.de/pl — the self-referencing hreflang is "pl" but <html lang> is "de" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
  • https://www.campsite-os.de/pl/demo — the self-referencing hreflang is "pl" but <html lang> is "de" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.

warning hreflang set has no self-reference

Rule hreflang.missing_self · Hreflang · 1 occurrence(s)

warning hreflang has no return link (not reciprocal)

Rule hreflang.no_return · Hreflang · 11 occurrence(s)

warning robots.txt blocks CSS/JS the pages need to render

Rule robots.blocks_css_js · Robots · 1 occurrence(s)

  • https://campsite-os.de/ — robots.txt Disallow blocks render-critical CSS/JS under: /_next/static/chunks/ — Google's renderer can't fetch these, so the affected pages may render blank or thin. Allow the asset path(s) for Googlebot.

Notices (15 rules)

notice No llms.txt for AI agents

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

  • https://campsite-os.de/ — 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 · 20 occurrence(s)

notice Canonical points to a different URL

Rule canonical.non_self · Canonical · 1 occurrence(s)

notice Likely hero image lacks fetchpriority=high

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

  • https://campsite-os.de/en — the likely hero/LCP image (photo-1504280390367-361c6d9f38f4) 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://www.campsite-os.de/cs — the likely hero/LCP image (photo-1504280390367-361c6d9f38f4) 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://www.campsite-os.de/de — the likely hero/LCP image (photo-1504280390367-361c6d9f38f4) 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://www.campsite-os.de/es — the likely hero/LCP image (photo-1504280390367-361c6d9f38f4) 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://www.campsite-os.de/fr — the likely hero/LCP image (photo-1504280390367-361c6d9f38f4) 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://www.campsite-os.de/it — the likely hero/LCP image (photo-1504280390367-361c6d9f38f4) 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://www.campsite-os.de/nl — the likely hero/LCP image (photo-1504280390367-361c6d9f38f4) 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://www.campsite-os.de/pl — the likely hero/LCP image (photo-1504280390367-361c6d9f38f4) 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 · 20 occurrence(s)

notice Legacy <meta name=keywords> tag present (Google ignores it)

Rule meta.keywords_present · Content · 20 occurrence(s)

notice Missing Open Graph tags

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

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

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

  • https://campsite-os.de/en — 5 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.campsite-os.de/cs — 5 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.campsite-os.de/de — 5 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.campsite-os.de/es — 5 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.campsite-os.de/fr — 5 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.campsite-os.de/it — 5 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.campsite-os.de/nl — 5 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://www.campsite-os.de/pl — 5 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.

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

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

  • https://campsite-os.de/en — 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://www.campsite-os.de/cs — 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://www.campsite-os.de/cs/demo — 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://www.campsite-os.de/de — 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://www.campsite-os.de/de/demo — 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://www.campsite-os.de/de/integrations/terminals — 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://www.campsite-os.de/en/demo — 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://www.campsite-os.de/en/integrations/terminals — 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://www.campsite-os.de/es — 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://www.campsite-os.de/es/demo — 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://www.campsite-os.de/fr — 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://www.campsite-os.de/fr/demo — 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://www.campsite-os.de/fr/integrations/terminals — 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://www.campsite-os.de/it — 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://www.campsite-os.de/it/demo — 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://www.campsite-os.de/it/integrations/terminals — 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://www.campsite-os.de/nl — 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://www.campsite-os.de/nl/demo — 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://www.campsite-os.de/pl — 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://www.campsite-os.de/pl/demo — 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 No Last-Modified header (no conditional GET for unchanged pages)

Rule perf.no_last_modified · Performance · 20 occurrence(s)

  • https://campsite-os.de/en — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://www.campsite-os.de/cs — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://www.campsite-os.de/cs/demo — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://www.campsite-os.de/de — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://www.campsite-os.de/de/demo — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://www.campsite-os.de/de/integrations/terminals — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://www.campsite-os.de/en/demo — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://www.campsite-os.de/en/integrations/terminals — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://www.campsite-os.de/es — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://www.campsite-os.de/es/demo — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://www.campsite-os.de/fr — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://www.campsite-os.de/fr/demo — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://www.campsite-os.de/fr/integrations/terminals — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://www.campsite-os.de/it — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://www.campsite-os.de/it/demo — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://www.campsite-os.de/it/integrations/terminals — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://www.campsite-os.de/nl — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://www.campsite-os.de/nl/demo — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://www.campsite-os.de/pl — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://www.campsite-os.de/pl/demo — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.

notice Missing recommended security headers

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

Pages (showing 21 of 21)
URLStatusIndexableWordsIn-links
https://www.campsite-os.de/en/demo
Campsite OS | Book a Free Demo
200 yes 153 2
https://www.campsite-os.de/de
Campsite OS | Die PMS-Lösung für den Campingplatz von heute.
200 yes 695 3
https://www.campsite-os.de/de/demo
Campsite OS | Kostenlose Demo buchen
200 yes 145 3
https://www.campsite-os.de/fr
Campsite OS | La solution PMS pour le camping d'aujourd'hui.
200 yes 836 3
https://www.campsite-os.de/fr/demo
Campsite OS | Réservez une démo gratuite
200 yes 169 3
https://www.campsite-os.de/it
Campsite OS | La soluzione PMS per il campeggio di oggi.
200 yes 802 3
https://www.campsite-os.de/it/demo
Campsite OS | Prenota una demo gratuita
200 yes 159 3
https://campsite-os.de/en
Campsite OS | The PMS Solution for Today's Campsite.
200 yes 778 1
https://www.campsite-os.de/cs
Campsite OS | PMS řešení pro dnešní kemp.
200 yes 744 2
https://www.campsite-os.de/cs/demo
Campsite OS | Rezervujte si bezplatné demo
200 yes 144 2
https://www.campsite-os.de/es
Campsite OS | La solución PMS para el camping de hoy.
200 yes 842 2
https://www.campsite-os.de/es/demo
Campsite OS | Reserve una demo gratuita
200 yes 159 2
https://www.campsite-os.de/nl
Campsite OS | De PMS-oplossing voor de camping van vandaag.
200 yes 682 2
https://www.campsite-os.de/nl/demo
Campsite OS | Boek een gratis demo
200 yes 143 2
https://www.campsite-os.de/pl
Campsite OS | Rozwiązanie PMS dla dzisiejszego kempingu.
200 yes 738 2
https://www.campsite-os.de/pl/demo
Campsite OS | Zarezerwuj darmowe demo
200 yes 143 2
https://www.campsite-os.de/de/integrations/terminals
Campsite OS | Self-Service Terminals & API-Integration
200 yes 247 0
https://www.campsite-os.de/en/integrations/terminals
Campsite OS | Self-Service Terminals & API Integration
200 yes 281 0
https://www.campsite-os.de/fr/integrations/terminals
Campsite OS | Terminaux libre-service & intégration API
200 yes 306 0
https://www.campsite-os.de/it/integrations/terminals
Campsite OS | Terminali self-service & integrazione API
200 yes 296 0
https://www.campsite-os.de/es/integrations/terminals 0 no 0 0

Audit your own site — free

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

Scan your site →