Catalog / zstech.ch
65

SEO audit for zstech.ch

Über uns | zstech ag

other

Health 65/100 (fair) · 17 pages crawled · generated 2026-07-29

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

%

Screenshot of zstech.ch
17
pages crawled
17
indexable pages
0
errors
59
warnings
184
notices
1
orphan pages
0
broken links
Category breakdown
CategoryScoreErrorsWarningsNotices
Agent Readiness 72 0 16 24
Images 72 0 16 16
Content 77 0 13 5
Meta Description 82 0 10 6
Crawlability 98 0 1 0
Headings 98 0 1 1
Links 98 0 1 22
Structured Data 98 0 1 16
Duplicate 100 0 0 6
Performance 100 0 0 54
Security 100 0 0 16
Social 100 0 0 16
URL 100 0 0 2
Findings

Warnings (8 rules)

warning Control has no accessible name

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

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

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

warning Missing <h1>

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

warning Images missing alt text

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

warning Orphan page (no internal inlinks)

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

warning BreadcrumbList present but structurally incomplete

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

  • https://www.zstech.ch/ — a BreadcrumbList is present but structurally incomplete — missing required itemListElement. Give itemListElement at least 2 ListItems, each with a sequential integer position and a name, and an item URL on every entry except the last.

Notices (18 rules)

notice Heading levels skip a level

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

notice No llms.txt for AI agents

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

  • https://www.zstech.ch/ — 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 · 14 occurrence(s)

notice Duplicate meta description across pages

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

  • https://www.zstech.ch/ — meta description shared by 6 pages: https://www.zstech.ch/produkte/, https://www.zstech.ch/optionen/, https://www.zstech.ch/impressum/
  • https://www.zstech.ch/datenschutzerklaerung/ — meta description shared by 6 pages: https://www.zstech.ch/, https://www.zstech.ch/produkte/, https://www.zstech.ch/optionen/
  • https://www.zstech.ch/downloads/ — meta description shared by 6 pages: https://www.zstech.ch/, https://www.zstech.ch/produkte/, https://www.zstech.ch/optionen/
  • https://www.zstech.ch/impressum/ — meta description shared by 6 pages: https://www.zstech.ch/, https://www.zstech.ch/produkte/, https://www.zstech.ch/optionen/
  • https://www.zstech.ch/optionen/ — meta description shared by 6 pages: https://www.zstech.ch/, https://www.zstech.ch/produkte/, https://www.zstech.ch/impressum/
  • https://www.zstech.ch/produkte/ — meta description shared by 6 pages: https://www.zstech.ch/, https://www.zstech.ch/optionen/, https://www.zstech.ch/impressum/

notice Multiple <h1> elements

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

notice Likely hero image lacks fetchpriority=high

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

  • https://www.zstech.ch/optionen/ — the likely hero/LCP image (zadat_2-510x228.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.zstech.ch/optionen/datenauswertung-via-datenbank-zadat/ — the likely hero/LCP image (zadat_2-510x228.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.zstech.ch/optionen/happy-hour-zaws/ — the likely hero/LCP image (zaws-510x586.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.zstech.ch/optionen/la%CC%88ngenerkennung-tiefenerkennung-zalek/ — the likely hero/LCP image (höhenerkennung-angepasst-510x586.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.zstech.ch/optionen/sto%CC%88rungsmeldung-via-mail-zamail/ — the likely hero/LCP image (e-mail-logo-510x586.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.zstech.ch/produkte/ — the likely hero/LCP image (carhelbling-ibach-510x586.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.zstech.ch/produkte/jetonwechsler-br35jet/ — the likely hero/LCP image (carhelbling-ibach-510x586.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.zstech.ch/produkte/kundenspezifische-anlagen-spezialanfertigungen/ — the likely hero/LCP image (waschmaschinen-spital-baden-510x586.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.zstech.ch/produkte/zahlsystem-br26f/ — the likely hero/LCP image (26f-510x586.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.zstech.ch/produkte/zahlsystem-br26w/ — the likely hero/LCP image (br26w_2-510x586.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.zstech.ch/produkte/zahlsystem-br37w/ — the likely hero/LCP image (br37w_2-451x586.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 · 16 occurrence(s)

notice Internal link has no anchor text / accessible name

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

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

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

notice Meta description too short

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

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

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

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

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

  • https://www.zstech.ch/ — 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.zstech.ch/category/uncategorized/ — 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.zstech.ch/datenschutzerklaerung/ — 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.zstech.ch/downloads/ — 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.zstech.ch/impressum/ — 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.zstech.ch/optionen/ — 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.zstech.ch/optionen/datenauswertung-via-datenbank-zadat/ — 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.zstech.ch/optionen/happy-hour-zaws/ — 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.zstech.ch/optionen/la%CC%88ngenerkennung-tiefenerkennung-zalek/ — 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.zstech.ch/optionen/sto%CC%88rungsmeldung-via-mail-zamail/ — 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.zstech.ch/produkte/ — 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.zstech.ch/produkte/jetonwechsler-br35jet/ — 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.zstech.ch/produkte/kundenspezifische-anlagen-spezialanfertigungen/ — 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.zstech.ch/produkte/zahlsystem-br26f/ — 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.zstech.ch/produkte/zahlsystem-br26w/ — 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.zstech.ch/produkte/zahlsystem-br37w/ — 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 · 16 occurrence(s)

  • https://www.zstech.ch/ — 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.zstech.ch/category/uncategorized/ — 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.zstech.ch/datenschutzerklaerung/ — 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.zstech.ch/downloads/ — 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.zstech.ch/impressum/ — 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.zstech.ch/optionen/ — 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.zstech.ch/optionen/datenauswertung-via-datenbank-zadat/ — 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.zstech.ch/optionen/happy-hour-zaws/ — 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.zstech.ch/optionen/la%CC%88ngenerkennung-tiefenerkennung-zalek/ — 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.zstech.ch/optionen/sto%CC%88rungsmeldung-via-mail-zamail/ — 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.zstech.ch/produkte/ — 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.zstech.ch/produkte/jetonwechsler-br35jet/ — 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.zstech.ch/produkte/kundenspezifische-anlagen-spezialanfertigungen/ — 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.zstech.ch/produkte/zahlsystem-br26f/ — 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.zstech.ch/produkte/zahlsystem-br26w/ — 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.zstech.ch/produkte/zahlsystem-br37w/ — 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 Deprecated schema type with no Google rich result

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

notice Missing recommended security headers

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

Pages (showing 17 of 17)
URLStatusIndexableWordsIn-links
https://www.zstech.ch/
Über uns | zstech ag
200 yes 106 16
https://www.zstech.ch/datenschutzerklaerung/
Datenschutzerklärung | zstech ag
200 yes 2601 16
https://www.zstech.ch/downloads/
Downloads | zstech ag
200 yes 29 16
https://www.zstech.ch/impressum/
Impressum | zstech ag
200 yes 28 16
https://www.zstech.ch/optionen/
Optionen | zstech ag
200 yes 71 16
https://www.zstech.ch/produkte/
Produkte | zstech ag
200 yes 67 16
https://www.zstech.ch/optionen/datenauswertung-via-datenbank-zadat/
Datenauswertung via Datenbank ZADAT | zstech ag
200 yes 81 3
https://www.zstech.ch/optionen/happy-hour-zaws/
Happy Hour ZAWS | zstech ag
200 yes 84 3
https://www.zstech.ch/optionen/sto%CC%88rungsmeldung-via-mail-zamail/
Störungsversand SMS / E-Mail | zstech ag
200 yes 78 3
https://www.zstech.ch/optionen/la%CC%88ngenerkennung-tiefenerkennung-zalek/
HöhenerkennungZAHEK/ Tiefenerkennung ZALEK | zstech ag
200 yes 103 1
https://www.zstech.ch/produkte/jetonwechsler-br35jet/
Jetonwechsler BR35JET | zstech ag
200 yes 123 1
https://www.zstech.ch/produkte/kundenspezifische-anlagen-spezialanfertigungen/
Kundenspezifische Anlagen/Spezialanfertigungen | zstech ag
200 yes 58 1
https://www.zstech.ch/produkte/zahlsystem-br26f/
Zahlsystem BR26F | zstech ag
200 yes 162 1
https://www.zstech.ch/produkte/zahlsystem-br26w/
Zahlsystem BR26W | zstech ag
200 yes 203 1
https://www.zstech.ch/produkte/zahlsystem-br37w/
Zahlsystem BR37W | zstech ag
200 yes 237 1
https://www.zstech.ch/category/uncategorized/
Uncategorized Archive | zstech ag
200 yes 92 0
https://www.zstech.ch/hello-world/ 200 yes 0 0

Audit your own site — free

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

Scan your site →