Catalog / kastelaar.com
64

SEO audit for kastelaar.com

Kastelaar | Italia

other

Health 64/100 (fair) · 50 pages crawled · generated 2026-08-26

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

Create hight-performance modern sport equipement in wood and eco-sosteinable material: wood ski, tennis, golf, bike, water sport in Vicenza, Italy. Discover how we can help you, visit our website toda…

Screenshot of kastelaar.com
50
pages crawled
39
indexable pages
6
errors
294
warnings
523
notices
0
orphan pages
5
broken links
Category breakdown
CategoryScoreErrorsWarningsNotices
Links 29 5 101 28
Crawlability 97 1 2 7
Canonical 78 0 37 5
Images 80 0 34 39
Performance 80 0 33 144
Duplicate 87 0 21 9
Meta Description 92 0 13 19
Structured Data 92 0 13 34
Agent Readiness 93 0 11 74
Security 93 0 11 46
Headings 95 0 9 2
Hreflang 97 0 5 0
Content 98 0 4 28
Cache 100 0 0 2
Mobile 100 0 0 5
Robots 100 0 0 1
Social 100 0 0 77
URL 100 0 0 3
Findings

Errors (2 rules)

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

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

error Client error (4xx) response

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

Warnings (17 rules)

warning Control has no accessible name

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

warning Interior page canonicalizes to the homepage

Rule canonical.points_to_homepage · Canonical · 4 occurrence(s)

warning Thin content (low word count)

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

warning Duplicate page content

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

warning Near-duplicate page content

Rule duplicate.near · Duplicate · 2 occurrence(s)

warning Homepage duplicated across protocol/host variants (no redirect)

Rule duplicate.protocol_host · Duplicate · 3 occurrence(s)

  • https://kastelaar.com/ — http://kastelaar.com/ serves the same homepage content with a 200 and no redirect — Google sees a duplicate. Pick one canonical host/scheme and 301-redirect the others.
  • https://kastelaar.com/ — http://www.kastelaar.com/ serves the same homepage content with a 200 and no redirect — Google sees a duplicate. Pick one canonical host/scheme and 301-redirect the others.
  • https://kastelaar.com/ — https://www.kastelaar.com/ serves the same homepage content with a 200 and no redirect — Google sees a duplicate. Pick one canonical host/scheme and 301-redirect the others.

warning Duplicate <title> across pages

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

warning Content-Type header doesn't match the actual content

Rule headers.content_type_mismatch · Security · 11 occurrence(s)

  • https://kastelaar.com/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://www.kastelaar.com/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://www.kastelaar.com/alpineski.html — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://www.kastelaar.com/index-ita.html — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://www.kastelaar.com/index.html — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://www.kastelaar.com/lifestyle.html — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://www.kastelaar.com/products-ita.html — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://www.kastelaar.com/products.html — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://www.kastelaar.com/sci_di_legno_artigianali_moderni_ecologici.html — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://www.kastelaar.com/summer.html — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
  • https://www.kastelaar.com/wood_ski_modern_ecological_handcrafted.html — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".

warning hreflang set has no self-reference

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

warning Images missing alt text

Rule images.missing_alt · Images · 34 occurrence(s)

warning Internal link points to a redirect

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

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

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

warning Redirect chain (multiple hops)

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

warning Deprecated data-vocabulary.org markup (no rich-result eligibility)

Rule schema.data_vocabulary · Structured Data · 13 occurrence(s)

  • https://kastelaar.com/store/it/13-alpine — the page uses the retired data-vocabulary.org vocabulary — Google no longer processes it for any rich result. Migrate to schema.org (e.g. data-vocabulary.org/Breadcrumb → schema.org/BreadcrumbList).
  • https://kastelaar.com/store/it/14-freeski — the page uses the retired data-vocabulary.org vocabulary — Google no longer processes it for any rich result. Migrate to schema.org (e.g. data-vocabulary.org/Breadcrumb → schema.org/BreadcrumbList).
  • https://kastelaar.com/store/it/15-nordic — the page uses the retired data-vocabulary.org vocabulary — Google no longer processes it for any rich result. Migrate to schema.org (e.g. data-vocabulary.org/Breadcrumb → schema.org/BreadcrumbList).
  • https://kastelaar.com/store/it/16-snowboard — the page uses the retired data-vocabulary.org vocabulary — Google no longer processes it for any rich result. Migrate to schema.org (e.g. data-vocabulary.org/Breadcrumb → schema.org/BreadcrumbList).
  • https://kastelaar.com/store/it/19-newclassic — the page uses the retired data-vocabulary.org vocabulary — Google no longer processes it for any rich result. Migrate to schema.org (e.g. data-vocabulary.org/Breadcrumb → schema.org/BreadcrumbList).
  • https://kastelaar.com/store/it/20-monoski — the page uses the retired data-vocabulary.org vocabulary — Google no longer processes it for any rich result. Migrate to schema.org (e.g. data-vocabulary.org/Breadcrumb → schema.org/BreadcrumbList).
  • https://kastelaar.com/store/it/21-jewels — the page uses the retired data-vocabulary.org vocabulary — Google no longer processes it for any rich result. Migrate to schema.org (e.g. data-vocabulary.org/Breadcrumb → schema.org/BreadcrumbList).
  • https://kastelaar.com/store/it/22-eyewear — the page uses the retired data-vocabulary.org vocabulary — Google no longer processes it for any rich result. Migrate to schema.org (e.g. data-vocabulary.org/Breadcrumb → schema.org/BreadcrumbList).
  • https://kastelaar.com/store/it/25-tennis — the page uses the retired data-vocabulary.org vocabulary — Google no longer processes it for any rich result. Migrate to schema.org (e.g. data-vocabulary.org/Breadcrumb → schema.org/BreadcrumbList).
  • https://kastelaar.com/store/it/26-golf — the page uses the retired data-vocabulary.org vocabulary — Google no longer processes it for any rich result. Migrate to schema.org (e.g. data-vocabulary.org/Breadcrumb → schema.org/BreadcrumbList).
  • https://kastelaar.com/store/it/27-water-sport — the page uses the retired data-vocabulary.org vocabulary — Google no longer processes it for any rich result. Migrate to schema.org (e.g. data-vocabulary.org/Breadcrumb → schema.org/BreadcrumbList).
  • https://kastelaar.com/store/it/5-tshirts — the page uses the retired data-vocabulary.org vocabulary — Google no longer processes it for any rich result. Migrate to schema.org (e.g. data-vocabulary.org/Breadcrumb → schema.org/BreadcrumbList).
  • https://kastelaar.com/store/it/winter-passions/8-adrenalina.html — the page uses the retired data-vocabulary.org vocabulary — Google no longer processes it for any rich result. Migrate to schema.org (e.g. data-vocabulary.org/Breadcrumb → schema.org/BreadcrumbList).

Notices (31 rules)

notice Heading levels skip a level

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

notice No llms.txt for AI agents

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

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

notice No main landmark for AI agents

Rule agent.no_main_landmark · Agent Readiness · 39 occurrence(s)

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

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

notice Canonical points to a different URL

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

notice Low text-to-HTML ratio

Rule content.low_ratio · Content · 2 occurrence(s)

notice Main text is hard to read (low Flesch Reading Ease)

Rule content.readability_poor · Content · 14 occurrence(s)

  • https://kastelaar.com/ — this page reads as difficult (Flesch Reading Ease 38, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://kastelaar.com/store/ — this page reads as difficult (Flesch Reading Ease 48, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://kastelaar.com/store/en/ — this page reads as difficult (Flesch Reading Ease 48, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://www.kastelaar.com/ — this page reads as difficult (Flesch Reading Ease 38, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://www.kastelaar.com/alpineski.html — this page reads as very difficult (Flesch Reading Ease 10, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://www.kastelaar.com/index.html — this page reads as difficult (Flesch Reading Ease 38, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://www.kastelaar.com/lifestyle.html — this page reads as difficult (Flesch Reading Ease 37, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://www.kastelaar.com/products-ita.html — this page reads as very difficult (Flesch Reading Ease 3, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://www.kastelaar.com/products.html — this page reads as difficult (Flesch Reading Ease 36, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://www.kastelaar.com/store/en/ — this page reads as difficult (Flesch Reading Ease 48, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://www.kastelaar.com/store/en/12-winter — this page reads as difficult (Flesch Reading Ease 48, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://www.kastelaar.com/store/en/17-lifestyle — this page reads as very difficult (Flesch Reading Ease 16, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://www.kastelaar.com/store/en/18-summer — this page reads as difficult (Flesch Reading Ease 36, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://www.kastelaar.com/summer.html — this page reads as difficult (Flesch Reading Ease 38, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.

notice Duplicate meta description across pages

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

notice Likely hero image lacks fetchpriority=high

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

  • https://kastelaar.com/ — the likely hero/LCP image (kk.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://kastelaar.com/store/ — the likely hero/LCP image (logo.jpg) 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://kastelaar.com/store/en/ — the likely hero/LCP image (logo.jpg) 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://kastelaar.com/store/en/12-winter-passions?p=2 — the likely hero/LCP image (logo.jpg) 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://kastelaar.com/store/it/12-winter-passions — the likely hero/LCP image (logo.jpg) 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://kastelaar.com/store/it/cart?add=1&id_product=21&token=fe96c40336d49a9c828df91cdd017374 — the likely hero/LCP image (logo.jpg) 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://kastelaar.com/store/it/cart?add=1&id_product=8&ipa=451&token=fe96c40336d49a9c828df91cdd017374 — the likely hero/LCP image (logo.jpg) 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://kastelaar.com/store/it/contact-us — the likely hero/LCP image (logo.jpg) 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://kastelaar.com/store/it/my-account — the likely hero/LCP image (logo.jpg) 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://kastelaar.com/store/it/winter-passions/8-adrenalina.html — the likely hero/LCP image (logo.jpg) 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.kastelaar.com/ — the likely hero/LCP image (kk.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://www.kastelaar.com/alpineski.html — the likely hero/LCP image (arrow.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://www.kastelaar.com/index-ita.html — the likely hero/LCP image (kk.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://www.kastelaar.com/index.html — the likely hero/LCP image (kk.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://www.kastelaar.com/lifestyle.html — the likely hero/LCP image (arrow.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://www.kastelaar.com/products-ita.html — the likely hero/LCP image (arrow.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://www.kastelaar.com/products.html — the likely hero/LCP image (arrow.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://www.kastelaar.com/sci_di_legno_artigianali_moderni_ecologici.html — the likely hero/LCP image (kk.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://www.kastelaar.com/store/en/ — the likely hero/LCP image (logo.jpg) 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.kastelaar.com/store/en/12-winter — the likely hero/LCP image (logo.jpg) 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.kastelaar.com/store/en/17-lifestyle — the likely hero/LCP image (logo.jpg) 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.kastelaar.com/store/en/18-summer — the likely hero/LCP image (logo.jpg) 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.kastelaar.com/store/it/ — the likely hero/LCP image (logo.jpg) 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.kastelaar.com/summer.html — the likely hero/LCP image (arrow.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://www.kastelaar.com/wood_ski_modern_ecological_handcrafted.html — the likely hero/LCP image (kk.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 · 39 occurrence(s)

notice Internal link has no anchor text / accessible name

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

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

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

notice Meta description too short

Rule meta_desc.too_short · Meta Description · 5 occurrence(s)

notice Missing Open Graph tags

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

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

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

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

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

  • https://kastelaar.com/store/ — 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://kastelaar.com/store/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://kastelaar.com/store/en/12-winter-passions?p=2 — 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://kastelaar.com/store/it/12-winter-passions — 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://kastelaar.com/store/it/13-alpine — 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://kastelaar.com/store/it/14-freeski — 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://kastelaar.com/store/it/15-nordic — 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://kastelaar.com/store/it/16-snowboard — 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://kastelaar.com/store/it/17-lifestyle — 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://kastelaar.com/store/it/18-summer-passions — 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://kastelaar.com/store/it/19-newclassic — 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://kastelaar.com/store/it/20-monoski — 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://kastelaar.com/store/it/25-tennis — 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://kastelaar.com/store/it/26-golf — 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://kastelaar.com/store/it/27-water-sport — 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://kastelaar.com/store/it/cart?add=1&id_product=21&token=fe96c40336d49a9c828df91cdd017374 — 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://kastelaar.com/store/it/cart?add=1&id_product=8&ipa=451&token=fe96c40336d49a9c828df91cdd017374 — 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://kastelaar.com/store/it/contact-us — 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://kastelaar.com/store/it/my-account — 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://kastelaar.com/store/it/winter-passions/8-adrenalina.html — 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.kastelaar.com/store/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.kastelaar.com/store/en/12-winter — 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.kastelaar.com/store/en/17-lifestyle — 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.kastelaar.com/store/en/18-summer — 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.kastelaar.com/store/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.

notice No Last-Modified header (no conditional GET for unchanged pages)

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

  • https://kastelaar.com/store/ — 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://kastelaar.com/store/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://kastelaar.com/store/en/12-winter-passions?p=2 — 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://kastelaar.com/store/it/12-winter-passions — 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://kastelaar.com/store/it/13-alpine — 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://kastelaar.com/store/it/14-freeski — 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://kastelaar.com/store/it/15-nordic — 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://kastelaar.com/store/it/16-snowboard — 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://kastelaar.com/store/it/17-lifestyle — 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://kastelaar.com/store/it/18-summer-passions — 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://kastelaar.com/store/it/19-newclassic — 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://kastelaar.com/store/it/20-monoski — 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://kastelaar.com/store/it/25-tennis — 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://kastelaar.com/store/it/26-golf — 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://kastelaar.com/store/it/27-water-sport — 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://kastelaar.com/store/it/cart?add=1&id_product=21&token=fe96c40336d49a9c828df91cdd017374 — 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://kastelaar.com/store/it/cart?add=1&id_product=8&ipa=451&token=fe96c40336d49a9c828df91cdd017374 — 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://kastelaar.com/store/it/contact-us — 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://kastelaar.com/store/it/my-account — 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://kastelaar.com/store/it/winter-passions/8-adrenalina.html — 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.kastelaar.com/store/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.kastelaar.com/store/en/12-winter — 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.kastelaar.com/store/en/17-lifestyle — 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.kastelaar.com/store/en/18-summer — 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.kastelaar.com/store/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.

notice Slow server response

Rule perf.slow_response · Performance · 2 occurrence(s)

notice URL redirects to another URL

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

notice robots.txt missing (root returns 404/none)

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

  • https://kastelaar.com/ — robots.txt did not return a 200 at the site root — a healthy site should serve one (declare your sitemap and confirm the host serves root files)

notice Deep page has no BreadcrumbList structured data

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

notice Missing recommended security headers

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

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

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

notice Many query parameters

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

notice Underscores in URL path (prefer hyphens)

Rule url.underscores · URL · 2 occurrence(s)

Pages (showing 50 of 50)
URLStatusIndexableWordsIn-links
https://kastelaar.com/store/
Kastelaar Store
200 yes 1324 29
https://www.kastelaar.com/store/en/17-lifestyle
LifeStyle - Kastelaar Store
200 yes 431 11
https://www.kastelaar.com/store/en/18-summer
Summer Passions - Kastelaar Store
200 yes 365 11
https://www.kastelaar.com/store/en/12-winter
Winter Passions - Kastelaar Store
200 yes 1115 11
https://kastelaar.com/store/it/12-winter-passions
Winter Passions - Kastelaar Store
200 yes 1059 23
https://kastelaar.com/store/it/17-lifestyle
LifeStyle - Kastelaar Store
200 yes 500 22
https://kastelaar.com/store/it/18-summer-passions
Summer Passions - Kastelaar Store
200 yes 416 22
https://kastelaar.com/store/it/13-alpine
Alpine - Kastelaar Store
200 yes 955 21
https://kastelaar.com/store/it/14-freeski
Freeski - Kastelaar Store
200 yes 817 21
https://kastelaar.com/store/it/15-nordic
Nordic - Kastelaar Store
200 yes 346 21
https://kastelaar.com/store/it/16-snowboard
Snowboard - Kastelaar Store
200 yes 256 21
https://kastelaar.com/store/it/19-newclassic
NewClassic - Kastelaar Store
200 yes 647 21
https://kastelaar.com/store/it/20-monoski
Monoski - Kastelaar Store
200 yes 352 21
https://kastelaar.com/store/it/21-jewels
jewels - Kastelaar Store
200 yes 655 21
https://kastelaar.com/store/it/22-eyewear
Eyewear - Kastelaar Store
200 yes 469 21
https://kastelaar.com/store/it/25-tennis
Tennis - Kastelaar Store
200 yes 276 21
https://kastelaar.com/store/it/26-golf
golf - Kastelaar Store
200 yes 147 21
https://kastelaar.com/store/it/27-water-sport
water sport - Kastelaar Store
200 yes 149 21
https://kastelaar.com/store/it/5-tshirts
T-shirts - Kastelaar Store
200 yes 292 21
https://kastelaar.com/store/it/contact-us
Contact us - Kastelaar Store
200 yes 174 21
https://kastelaar.com/store/it/my-account
Login - Kastelaar Store
200 yes 165 21
https://www.kastelaar.com/store/it/
Kastelaar Store
200 yes 1249 9
https://www.kastelaar.com/index.html
Kastelaar | Italia
200 yes 1137 6
https://www.kastelaar.com/index-ita.html
Kastelaar | Italia
200 yes 1262 5
https://kastelaar.com/store/en/12-winter-passions?p=2
Winter Passions (2) - Kastelaar Store
200 yes 986 1
https://www.kastelaar.com/wood_ski_modern_ecological_handcrafted.html
Modern Wooden Skis, handmade, high-performances | Kastelaar Italia
200 yes 1592 4
https://www.kastelaar.com/store/en/
Kastelaar Store
200 yes 1324 4
https://www.kastelaar.com/sci_di_legno_artigianali_moderni_ecologici.html
Sci in legno innovativi artigianali | Kastelaar Italia
200 yes 1676 2
https://www.kastelaar.com/
Kastelaar | Italia
200 yes 1137 4
https://kastelaar.com/store/it/winter-passions/8-adrenalina.html
KASTELAAR ADRENALINA - Kastelaar Store
200 yes 890 5
https://www.kastelaar.com/products.html
Passions | kastelaar
200 yes 553 4
https://kastelaar.com/store/it/cart?add=1&id_product=8&ipa=451&token=fe96c40336d49a9c828df91cdd017374
Order - Kastelaar Store
200 yes 1363 3
https://www.kastelaar.com/products-ita.html
Passions | kastelaar
200 yes 588 2
https://kastelaar.com/store/en/
Kastelaar Store
200 yes 1324 3
https://kastelaar.com/store/it/cart?add=1&id_product=21&token=fe96c40336d49a9c828df91cdd017374
Order - Kastelaar Store
200 yes 1325 2
https://www.kastelaar.com/alpineski.html
alpine ski | kastelaar
200 yes 615 2
https://www.kastelaar.com/lifestyle.html
LifeStyle | kastelaar
200 yes 596 2
https://www.kastelaar.com/summer.html
summer | kastelaar
200 yes 554 2
https://kastelaar.com/
Kastelaar | Italia
200 yes 1137 1
http://www.kastelaar.com/kastelaar-book.pdf 200 no 0 4
https://www.kastelaar.com/en/shop/cart
404 Not Found
404 no 11 5
https://www.kastelaar.com/kastelaar-book.pdf 200 no 0 4
https://www.kastelaar.com/kastelaar-faq.pdf 200 no 0 4
https://www.kastelaar.com/kastelaar-home.pdf 200 no 0 4
https://www.kastelaar.com/kastelaar-jewels.pdf 200 no 0 4
https://www.kastelaar.com/kastelaar-lifestyle.pdf 200 no 0 4
https://www.kastelaar.com/kastelaar-summer.pdf 200 no 0 4
https://www.kastelaar.com/kastelaar-tshirt.pdf 200 no 0 4
https://www.kastelaar.com/kastelaar-winter-mini.pdf 200 no 0 4
https://www.kastelaar.com/kastelaar-winter.pdf 200 no 0 6

Audit your own site — free

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

Scan your site →