SEO audit for marcelschreiner.ch
Marcel Schreiner - <ms/> webdesign & code
Health 65/100 (fair) · 42 pages crawled · generated 2026-08-26
Download Markdown report (feed to ChatGPT / Claude / Cursor)Ausgezeichnetes Webdesign aus Thurgau. Marcel Schreiner entwickelt klare, schnelle und pflegeleichte Webseiten für KMU. Weniger, aber besser.
| Category | Score | Errors | Warnings | Notices |
|---|---|---|---|---|
| Links | 66 | 0 | 47 | 69 |
| Agent Readiness | 71 | 0 | 41 | 70 |
| Performance | 71 | 0 | 41 | 50 |
| Canonical | 74 | 0 | 37 | 0 |
| Content | 92 | 0 | 11 | 25 |
| Budget | 96 | 0 | 5 | 0 |
| Indexability | 96 | 0 | 5 | 0 |
| Duplicate | 97 | 0 | 4 | 2 |
| Headings | 99 | 0 | 1 | 0 |
| Crawlability | 100 | 0 | 0 | 2 |
| Images | 100 | 0 | 0 | 82 |
| Meta Description | 100 | 0 | 0 | 1 |
| Security | 100 | 0 | 0 | 82 |
| Structured Data | 100 | 0 | 0 | 1 |
| Titles | 100 | 0 | 0 | 5 |
Warnings (12 rules)
warning Control has no accessible name
Rule agent.control_no_name · Agent Readiness · 41 occurrence(s)
- https://marcelschreiner.ch/ — 2 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/agb — 3 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/email — 3 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/freelancer — 3 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/gear — 163 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/hobbies — 3 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/posts — 3 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/posts/bambulab-aktion — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/posts/deine-webseite-verwirrt — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/posts/frischekick-fur-die-webseite-von-sonjas-kunstschreinerei — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/posts/gear — 163 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/posts/google-analytics — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/posts/instagram-shop — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/rechtliches — 3 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/search — 3 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/tools/passwort-generator — 4 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/tools/qr-code-generator — 3 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/tools/search-und-social-preview — 3 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/tools/web-image-optimizer — 3 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/tools/website-analyse — 3 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/tools/website-carbon-audit — 3 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/webdesign — 3 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/webdesign-stgallen — 3 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/webdesign-thurgau — 3 button/link(s) with no text or aria-label — an agent can't target them
- https://marcelschreiner.ch/whatsapp — 3 button/link(s) with no text or aria-label — an agent can't target them
warning Noindex page receives internal links (crawl-budget waste)
Rule budget.noindex_linked · Budget · 5 occurrence(s)
- https://marcelschreiner.ch/agb — this noindex page has 41 internal inlink(s) — Googlebot follows them, fetches the page, then drops it unindexed, spending crawl budget for no indexing benefit (and the links leak equity). Remove/redirect the links, or drop the noindex if the page should be indexed. Linked from: https://marcelschreiner.ch/, https://marcelschreiner.ch/posts, https://marcelschreiner.ch/webdesign.
- https://marcelschreiner.ch/companion — this noindex page has 41 internal inlink(s) — Googlebot follows them, fetches the page, then drops it unindexed, spending crawl budget for no indexing benefit (and the links leak equity). Remove/redirect the links, or drop the noindex if the page should be indexed. Linked from: https://marcelschreiner.ch/, https://marcelschreiner.ch/posts, https://marcelschreiner.ch/webdesign.
- https://marcelschreiner.ch/email — this noindex page has 41 internal inlink(s) — Googlebot follows them, fetches the page, then drops it unindexed, spending crawl budget for no indexing benefit (and the links leak equity). Remove/redirect the links, or drop the noindex if the page should be indexed. Linked from: https://marcelschreiner.ch/, https://marcelschreiner.ch/posts, https://marcelschreiner.ch/webdesign.
- https://marcelschreiner.ch/rechtliches — this noindex page has 41 internal inlink(s) — Googlebot follows them, fetches the page, then drops it unindexed, spending crawl budget for no indexing benefit (and the links leak equity). Remove/redirect the links, or drop the noindex if the page should be indexed. Linked from: https://marcelschreiner.ch/, https://marcelschreiner.ch/posts, https://marcelschreiner.ch/webdesign.
- https://marcelschreiner.ch/whatsapp — this noindex page has 41 internal inlink(s) — Googlebot follows them, fetches the page, then drops it unindexed, spending crawl budget for no indexing benefit (and the links leak equity). Remove/redirect the links, or drop the noindex if the page should be indexed. Linked from: https://marcelschreiner.ch/, https://marcelschreiner.ch/posts, https://marcelschreiner.ch/webdesign.
warning Missing canonical tag
Rule canonical.missing · Canonical · 37 occurrence(s)
- https://marcelschreiner.ch/
- https://marcelschreiner.ch/freelancer
- https://marcelschreiner.ch/gear
- https://marcelschreiner.ch/hobbies
- https://marcelschreiner.ch/posts
- https://marcelschreiner.ch/posts/bambulab-aktion
- https://marcelschreiner.ch/posts/deine-webseite-verwirrt
- https://marcelschreiner.ch/posts/frischekick-fur-die-webseite-von-sonjas-kunstschreinerei
- https://marcelschreiner.ch/posts/gear
- https://marcelschreiner.ch/posts/google-analytics
- https://marcelschreiner.ch/posts/instagram-shop
- https://marcelschreiner.ch/posts/mein-buro
- https://marcelschreiner.ch/posts/mein-erster-merch
- https://marcelschreiner.ch/posts/merry-x-ms
- https://marcelschreiner.ch/posts/ms-companion
- https://marcelschreiner.ch/search
- https://marcelschreiner.ch/tools/passwort-generator
- https://marcelschreiner.ch/tools/qr-code-generator
- https://marcelschreiner.ch/tools/search-und-social-preview
- https://marcelschreiner.ch/tools/web-image-optimizer
- https://marcelschreiner.ch/tools/website-analyse
- https://marcelschreiner.ch/tools/website-carbon-audit
- https://marcelschreiner.ch/webdesign
- https://marcelschreiner.ch/webdesign-stgallen
- https://marcelschreiner.ch/webdesign-thurgau
warning Thin content (low word count)
Rule content.thin · Content · 11 occurrence(s)
- https://marcelschreiner.ch/posts/bambulab-aktion — 163 words
- https://marcelschreiner.ch/posts/deine-webseite-verwirrt — 152 words
- https://marcelschreiner.ch/posts/instagram-shop — 175 words
- https://marcelschreiner.ch/posts/mein-erster-merch — 165 words
- https://marcelschreiner.ch/posts/ms-companion — 197 words
- https://marcelschreiner.ch/posts/neuro-web-award-2025 — 187 words
- https://marcelschreiner.ch/posts/uber-mich — 147 words
- https://marcelschreiner.ch/posts/visitenkarten-die-nicht-langweilen — 187 words
- https://marcelschreiner.ch/posts/webseiten-performance — 178 words
- https://marcelschreiner.ch/posts/weniger-ist-mehr — 129 words
- https://marcelschreiner.ch/search — 102 words
warning Duplicate page content
Rule duplicate.content · Duplicate · 2 occurrence(s)
- https://marcelschreiner.ch/gear — content shared by 2 pages: https://marcelschreiner.ch/posts/gear
- https://marcelschreiner.ch/posts/gear — content shared by 2 pages: https://marcelschreiner.ch/gear
warning Duplicate <title> across pages
Rule duplicate.title · Duplicate · 2 occurrence(s)
- https://marcelschreiner.ch/gear — title shared by 2 pages: https://marcelschreiner.ch/posts/gear
- https://marcelschreiner.ch/posts/gear — title shared by 2 pages: https://marcelschreiner.ch/gear
warning Hero/LCP image is lazy-loaded (loading=lazy delays LCP)
Rule images.no_lazy_lcp_candidate · Performance · 41 occurrence(s)
- https://marcelschreiner.ch/ — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/agb — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/email — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/freelancer — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/gear — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/hobbies — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/posts — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/posts/bambulab-aktion — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/posts/deine-webseite-verwirrt — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/posts/frischekick-fur-die-webseite-von-sonjas-kunstschreinerei — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/posts/gear — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/posts/google-analytics — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/posts/instagram-shop — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/rechtliches — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/search — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/tools/passwort-generator — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/tools/qr-code-generator — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/tools/search-und-social-preview — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/tools/web-image-optimizer — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/tools/website-analyse — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/tools/website-carbon-audit — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/webdesign — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/webdesign-stgallen — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/webdesign-thurgau — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://marcelschreiner.ch/whatsapp — the likely hero/LCP image (68b6a692f74e85f4f3b2e5b4_a24f0a4bab79c82b5729c31863cdcc62_ms%20logo%20white.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
warning Page is noindex
Rule index.noindex · Indexability · 4 occurrence(s)
- https://marcelschreiner.ch/agb — meta/X-Robots: meta=noindex
- https://marcelschreiner.ch/email — meta/X-Robots: meta=noindex
- https://marcelschreiner.ch/rechtliches — meta/X-Robots: meta=noindex
- https://marcelschreiner.ch/whatsapp — meta/X-Robots: meta=noindex
warning noindex + nofollow (blocks link equity flow)
Rule index.noindex_nofollow · Indexability · 1 occurrence(s)
- https://marcelschreiner.ch/companion — meta/X-Robots: meta=noindex, nofollow
warning Orphan page (no internal inlinks)
Rule links.orphan · Links · 4 occurrence(s)
- https://marcelschreiner.ch/gear — no internal links point here
- https://marcelschreiner.ch/search — no internal links point here
- https://marcelschreiner.ch/webdesign-stgallen — no internal links point here
- https://marcelschreiner.ch/webdesign-thurgau — no internal links point here
warning Internal link points to a redirect
Rule links.redirect_target · Links · 43 occurrence(s)
- https://marcelschreiner.ch/ — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
- https://marcelschreiner.ch/ — https://marcelschreiner.ch/posts/gear → https://marcelschreiner.ch/gear
- https://marcelschreiner.ch/agb — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
- https://marcelschreiner.ch/email — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
- https://marcelschreiner.ch/freelancer — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
- https://marcelschreiner.ch/gear — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
- https://marcelschreiner.ch/hobbies — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
- https://marcelschreiner.ch/posts — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
- https://marcelschreiner.ch/posts — https://marcelschreiner.ch/posts/gear → https://marcelschreiner.ch/gear
- https://marcelschreiner.ch/posts/bambulab-aktion — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
- https://marcelschreiner.ch/posts/deine-webseite-verwirrt — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
- https://marcelschreiner.ch/posts/frischekick-fur-die-webseite-von-sonjas-kunstschreinerei — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
- https://marcelschreiner.ch/posts/gear — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
- https://marcelschreiner.ch/rechtliches — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
- https://marcelschreiner.ch/search — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
- https://marcelschreiner.ch/tools/passwort-generator — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
- https://marcelschreiner.ch/tools/qr-code-generator — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
- https://marcelschreiner.ch/tools/search-und-social-preview — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
- https://marcelschreiner.ch/tools/web-image-optimizer — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
- https://marcelschreiner.ch/tools/website-analyse — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
- https://marcelschreiner.ch/tools/website-carbon-audit — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
- https://marcelschreiner.ch/webdesign — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
- https://marcelschreiner.ch/webdesign-stgallen — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
- https://marcelschreiner.ch/webdesign-thurgau — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
- https://marcelschreiner.ch/whatsapp — https://marcelschreiner.ch/companion → https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion (off-site)
Notices (17 rules)
notice Heading levels skip a level
Rule agent.heading_skip · Agent Readiness · 29 occurrence(s)
- https://marcelschreiner.ch/agb — h3 follows h1 — skips h2
- https://marcelschreiner.ch/email — h3 follows h1 — skips h2
- https://marcelschreiner.ch/gear — h3 follows h1 — skips h2
- https://marcelschreiner.ch/posts/bambulab-aktion — h3 follows h1 — skips h2
- https://marcelschreiner.ch/posts/deine-webseite-verwirrt — h3 follows h1 — skips h2
- https://marcelschreiner.ch/posts/frischekick-fur-die-webseite-von-sonjas-kunstschreinerei — h3 follows h1 — skips h2
- https://marcelschreiner.ch/posts/gear — h3 follows h1 — skips h2
- https://marcelschreiner.ch/posts/instagram-shop — h3 follows h1 — skips h2
- https://marcelschreiner.ch/posts/mein-erster-merch — h3 follows h1 — skips h2
- https://marcelschreiner.ch/posts/merry-x-ms — h3 follows h1 — skips h2
- https://marcelschreiner.ch/posts/ms-companion — h3 follows h1 — skips h2
- https://marcelschreiner.ch/posts/neue-website-fur-jm-beauty-hair — h3 follows h1 — skips h2
- https://marcelschreiner.ch/posts/neue-website-fur-nadja-l-weinstein — h3 follows h1 — skips h2
- https://marcelschreiner.ch/posts/neue-website-fur-noemi-beza — h3 follows h1 — skips h2
- https://marcelschreiner.ch/posts/neue-website-fur-simonas-bastelatelier — h3 follows h1 — skips h2
- https://marcelschreiner.ch/posts/neues-buro — h3 follows h1 — skips h2
- https://marcelschreiner.ch/posts/neues-film-setup — h3 follows h1 — skips h2
- https://marcelschreiner.ch/posts/neuro-web-award-2025 — h3 follows h1 — skips h2
- https://marcelschreiner.ch/posts/uber-mich — h3 follows h1 — skips h2
- https://marcelschreiner.ch/rechtliches — h3 follows h1 — skips h2
- https://marcelschreiner.ch/search — h3 follows h1 — skips h2
- https://marcelschreiner.ch/webdesign — h4 follows h2 — skips h3
- https://marcelschreiner.ch/webdesign-stgallen — h4 follows h2 — skips h3
- https://marcelschreiner.ch/webdesign-thurgau — h4 follows h2 — skips h3
- https://marcelschreiner.ch/whatsapp — h3 follows h1 — skips h2
notice No main landmark for AI agents
Rule agent.no_main_landmark · Agent Readiness · 41 occurrence(s)
- https://marcelschreiner.ch/ — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/agb — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/email — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/freelancer — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/gear — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/hobbies — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/posts — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/posts/bambulab-aktion — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/posts/deine-webseite-verwirrt — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/posts/frischekick-fur-die-webseite-von-sonjas-kunstschreinerei — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/posts/gear — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/posts/google-analytics — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/posts/instagram-shop — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/rechtliches — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/search — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/tools/passwort-generator — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/tools/qr-code-generator — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/tools/search-und-social-preview — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/tools/web-image-optimizer — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/tools/website-analyse — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/tools/website-carbon-audit — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/webdesign — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/webdesign-stgallen — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/webdesign-thurgau — add a <main> element (or role=main) around the primary content
- https://marcelschreiner.ch/whatsapp — add a <main> element (or role=main) around the primary content
notice Low text-to-HTML ratio
Rule content.low_ratio · Content · 25 occurrence(s)
- https://marcelschreiner.ch/ — 2.2%
- https://marcelschreiner.ch/gear — 3.0%
- https://marcelschreiner.ch/posts — 2.9%
- https://marcelschreiner.ch/posts/bambulab-aktion — 2.9%
- https://marcelschreiner.ch/posts/deine-webseite-verwirrt — 2.9%
- https://marcelschreiner.ch/posts/frischekick-fur-die-webseite-von-sonjas-kunstschreinerei — 4.2%
- https://marcelschreiner.ch/posts/gear — 3.0%
- https://marcelschreiner.ch/posts/instagram-shop — 3.0%
- https://marcelschreiner.ch/posts/mein-buro — 4.0%
- https://marcelschreiner.ch/posts/mein-erster-merch — 3.0%
- https://marcelschreiner.ch/posts/merry-x-ms — 3.6%
- https://marcelschreiner.ch/posts/ms-companion — 3.3%
- https://marcelschreiner.ch/posts/neue-website-fur-jm-beauty-hair — 4.0%
- https://marcelschreiner.ch/posts/neue-website-fur-nadja-l-weinstein — 3.5%
- https://marcelschreiner.ch/posts/neue-website-fur-noemi-beza — 3.5%
- https://marcelschreiner.ch/posts/neue-website-fur-simonas-bastelatelier — 3.8%
- https://marcelschreiner.ch/posts/neues-buro — 3.5%
- https://marcelschreiner.ch/posts/neues-film-setup — 3.5%
- https://marcelschreiner.ch/posts/neuro-web-award-2025 — 3.2%
- https://marcelschreiner.ch/posts/uber-mich — 2.6%
- https://marcelschreiner.ch/posts/visitenkarten-die-nicht-langweilen — 3.3%
- https://marcelschreiner.ch/posts/webseiten-performance — 3.1%
- https://marcelschreiner.ch/posts/weniger-ist-mehr — 2.6%
- https://marcelschreiner.ch/search — 2.6%
- https://marcelschreiner.ch/tools/passwort-generator — 4.2%
notice Duplicate meta description across pages
Rule duplicate.meta_desc · Duplicate · 2 occurrence(s)
- https://marcelschreiner.ch/gear — meta description shared by 2 pages: https://marcelschreiner.ch/posts/gear
- https://marcelschreiner.ch/posts/gear — meta description shared by 2 pages: https://marcelschreiner.ch/gear
notice Image alt text is very long (possible keyword stuffing)
Rule images.alt_too_long · Images · 41 occurrence(s)
- https://marcelschreiner.ch/ — 3 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/agb — 3 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/email — 3 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/freelancer — 2 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/gear — 2 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/hobbies — 4 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/posts — 2 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/posts/bambulab-aktion — 2 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/posts/deine-webseite-verwirrt — 2 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/posts/frischekick-fur-die-webseite-von-sonjas-kunstschreinerei — 2 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/posts/gear — 2 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/posts/google-analytics — 2 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/posts/instagram-shop — 2 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/rechtliches — 2 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/search — 3 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/tools/passwort-generator — 3 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/tools/qr-code-generator — 3 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/tools/search-und-social-preview — 3 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/tools/web-image-optimizer — 3 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/tools/website-analyse — 3 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/tools/website-carbon-audit — 3 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/webdesign — 2 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/webdesign-stgallen — 2 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/webdesign-thurgau — 2 image(s) with alt text over 100 chars — shorten it to a concise description
- https://marcelschreiner.ch/whatsapp — 3 image(s) with alt text over 100 chars — shorten it to a concise description
notice Images without width/height (layout shift / CLS)
Rule images.missing_dimensions · Images · 41 occurrence(s)
- https://marcelschreiner.ch/ — 9 of 28 images without width/height
- https://marcelschreiner.ch/agb — 5 of 5 images without width/height
- https://marcelschreiner.ch/email — 5 of 5 images without width/height
- https://marcelschreiner.ch/freelancer — 6 of 6 images without width/height
- https://marcelschreiner.ch/gear — 44 of 44 images without width/height
- https://marcelschreiner.ch/hobbies — 9 of 9 images without width/height
- https://marcelschreiner.ch/posts — 4 of 26 images without width/height
- https://marcelschreiner.ch/posts/bambulab-aktion — 5 of 5 images without width/height
- https://marcelschreiner.ch/posts/deine-webseite-verwirrt — 5 of 5 images without width/height
- https://marcelschreiner.ch/posts/frischekick-fur-die-webseite-von-sonjas-kunstschreinerei — 8 of 8 images without width/height
- https://marcelschreiner.ch/posts/gear — 44 of 44 images without width/height
- https://marcelschreiner.ch/posts/google-analytics — 7 of 7 images without width/height
- https://marcelschreiner.ch/posts/instagram-shop — 10 of 10 images without width/height
- https://marcelschreiner.ch/rechtliches — 4 of 4 images without width/height
- https://marcelschreiner.ch/search — 5 of 5 images without width/height
- https://marcelschreiner.ch/tools/passwort-generator — 5 of 5 images without width/height
- https://marcelschreiner.ch/tools/qr-code-generator — 5 of 5 images without width/height
- https://marcelschreiner.ch/tools/search-und-social-preview — 5 of 5 images without width/height
- https://marcelschreiner.ch/tools/web-image-optimizer — 5 of 5 images without width/height
- https://marcelschreiner.ch/tools/website-analyse — 5 of 5 images without width/height
- https://marcelschreiner.ch/tools/website-carbon-audit — 5 of 5 images without width/height
- https://marcelschreiner.ch/webdesign — 19 of 19 images without width/height
- https://marcelschreiner.ch/webdesign-stgallen — 14 of 14 images without width/height
- https://marcelschreiner.ch/webdesign-thurgau — 14 of 14 images without width/height
- https://marcelschreiner.ch/whatsapp — 5 of 5 images without width/height
notice Internal link has no anchor text / accessible name
Rule links.no_anchor_text · Links · 40 occurrence(s)
- https://marcelschreiner.ch/agb — 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.
- https://marcelschreiner.ch/email — 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.
- https://marcelschreiner.ch/freelancer — 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.
- https://marcelschreiner.ch/gear — 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.
- https://marcelschreiner.ch/hobbies — 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.
- https://marcelschreiner.ch/posts — 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.
- https://marcelschreiner.ch/posts/bambulab-aktion — 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.
- https://marcelschreiner.ch/posts/deine-webseite-verwirrt — 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.
- https://marcelschreiner.ch/posts/frischekick-fur-die-webseite-von-sonjas-kunstschreinerei — 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.
- https://marcelschreiner.ch/posts/gear — 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.
- https://marcelschreiner.ch/posts/google-analytics — 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.
- https://marcelschreiner.ch/posts/instagram-shop — 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.
- https://marcelschreiner.ch/posts/mein-buro — 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.
- https://marcelschreiner.ch/rechtliches — 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.
- https://marcelschreiner.ch/search — 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.
- https://marcelschreiner.ch/tools/passwort-generator — 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.
- https://marcelschreiner.ch/tools/qr-code-generator — 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.
- https://marcelschreiner.ch/tools/search-und-social-preview — 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.
- https://marcelschreiner.ch/tools/web-image-optimizer — 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.
- https://marcelschreiner.ch/tools/website-analyse — 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.
- https://marcelschreiner.ch/tools/website-carbon-audit — 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.
- https://marcelschreiner.ch/webdesign — 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.
- https://marcelschreiner.ch/webdesign-stgallen — 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.
- https://marcelschreiner.ch/webdesign-thurgau — 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.
- https://marcelschreiner.ch/whatsapp — 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 · 29 occurrence(s)
- https://marcelschreiner.ch/freelancer — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/hobbies — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/posts — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/posts/bambulab-aktion — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/posts/deine-webseite-verwirrt — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/posts/frischekick-fur-die-webseite-von-sonjas-kunstschreinerei — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/posts/google-analytics — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/posts/instagram-shop — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/posts/mein-buro — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/posts/mein-erster-merch — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/posts/merry-x-ms — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/posts/ms-companion — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/posts/neue-website-fur-jm-beauty-hair — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/posts/neue-website-fur-nadja-l-weinstein — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/posts/neue-website-fur-noemi-beza — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/posts/neue-website-fur-simonas-bastelatelier — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/posts/neues-film-setup — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/posts/neuro-web-award-2025 — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/tools/passwort-generator — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/tools/qr-code-generator — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/tools/search-und-social-preview — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/tools/web-image-optimizer — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/tools/website-analyse — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/tools/website-carbon-audit — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://marcelschreiner.ch/webdesign — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
notice Meta description too long
Rule meta_desc.too_long · Meta Description · 1 occurrence(s)
notice Legacy image format (jpg/png/gif) with no next-gen fallback
Rule perf.images_legacy_format · Performance · 8 occurrence(s)
- https://marcelschreiner.ch/ — 1 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://marcelschreiner.ch/posts — 3 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://marcelschreiner.ch/posts/merry-x-ms — 1 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://marcelschreiner.ch/posts/neue-website-fur-simonas-bastelatelier — 3 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://marcelschreiner.ch/posts/neues-buro — 1 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://marcelschreiner.ch/webdesign — 1 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://marcelschreiner.ch/webdesign-stgallen — 1 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://marcelschreiner.ch/webdesign-thurgau — 1 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 · 41 occurrence(s)
- https://marcelschreiner.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://marcelschreiner.ch/agb — 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://marcelschreiner.ch/email — 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://marcelschreiner.ch/freelancer — 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://marcelschreiner.ch/gear — 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://marcelschreiner.ch/hobbies — 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://marcelschreiner.ch/posts — 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://marcelschreiner.ch/posts/bambulab-aktion — 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://marcelschreiner.ch/posts/deine-webseite-verwirrt — 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://marcelschreiner.ch/posts/frischekick-fur-die-webseite-von-sonjas-kunstschreinerei — 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://marcelschreiner.ch/posts/gear — 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://marcelschreiner.ch/posts/google-analytics — 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://marcelschreiner.ch/posts/instagram-shop — 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://marcelschreiner.ch/rechtliches — 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://marcelschreiner.ch/search — 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://marcelschreiner.ch/tools/passwort-generator — 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://marcelschreiner.ch/tools/qr-code-generator — 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://marcelschreiner.ch/tools/search-und-social-preview — 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://marcelschreiner.ch/tools/web-image-optimizer — 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://marcelschreiner.ch/tools/website-analyse — 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://marcelschreiner.ch/tools/website-carbon-audit — 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://marcelschreiner.ch/webdesign — 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://marcelschreiner.ch/webdesign-stgallen — 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://marcelschreiner.ch/webdesign-thurgau — 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://marcelschreiner.ch/whatsapp — 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 Slow server response
Rule perf.slow_response · Performance · 1 occurrence(s)
- https://marcelschreiner.ch/companion — 3368 ms
notice URL redirects to another URL
Rule redirect.single · Crawlability · 2 occurrence(s)
- https://marcelschreiner.ch/companion — redirects to https://chatgpt.com/g/g-687255d71b6081918e0e8d244174ade3-ms-companion
- https://marcelschreiner.ch/posts/gear — redirects to https://marcelschreiner.ch/gear
notice No structured data detected
Rule schema.none · Structured Data · 1 occurrence(s)
notice Missing recommended security headers
Rule security.missing_headers · Security · 41 occurrence(s)
- https://marcelschreiner.ch/ — X-Content-Type-Options
- https://marcelschreiner.ch/agb — X-Content-Type-Options
- https://marcelschreiner.ch/email — X-Content-Type-Options
- https://marcelschreiner.ch/freelancer — X-Content-Type-Options
- https://marcelschreiner.ch/gear — X-Content-Type-Options
- https://marcelschreiner.ch/hobbies — X-Content-Type-Options
- https://marcelschreiner.ch/posts — X-Content-Type-Options
- https://marcelschreiner.ch/posts/bambulab-aktion — X-Content-Type-Options
- https://marcelschreiner.ch/posts/deine-webseite-verwirrt — X-Content-Type-Options
- https://marcelschreiner.ch/posts/frischekick-fur-die-webseite-von-sonjas-kunstschreinerei — X-Content-Type-Options
- https://marcelschreiner.ch/posts/gear — X-Content-Type-Options
- https://marcelschreiner.ch/posts/google-analytics — X-Content-Type-Options
- https://marcelschreiner.ch/posts/instagram-shop — X-Content-Type-Options
- https://marcelschreiner.ch/rechtliches — X-Content-Type-Options
- https://marcelschreiner.ch/search — X-Content-Type-Options
- https://marcelschreiner.ch/tools/passwort-generator — X-Content-Type-Options
- https://marcelschreiner.ch/tools/qr-code-generator — X-Content-Type-Options
- https://marcelschreiner.ch/tools/search-und-social-preview — X-Content-Type-Options
- https://marcelschreiner.ch/tools/web-image-optimizer — X-Content-Type-Options
- https://marcelschreiner.ch/tools/website-analyse — X-Content-Type-Options
- https://marcelschreiner.ch/tools/website-carbon-audit — X-Content-Type-Options
- https://marcelschreiner.ch/webdesign — X-Content-Type-Options
- https://marcelschreiner.ch/webdesign-stgallen — X-Content-Type-Options
- https://marcelschreiner.ch/webdesign-thurgau — X-Content-Type-Options
- https://marcelschreiner.ch/whatsapp — X-Content-Type-Options
notice target=_blank link without rel=noopener (tab-napping)
Rule security.unsafe_cross_origin_links · Security · 41 occurrence(s)
- https://marcelschreiner.ch/ — 14 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/agb — 9 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/email — 9 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/freelancer — 9 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/gear — 9 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/hobbies — 9 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/posts — 9 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/posts/bambulab-aktion — 9 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/posts/deine-webseite-verwirrt — 9 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/posts/frischekick-fur-die-webseite-von-sonjas-kunstschreinerei — 9 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/posts/gear — 9 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/posts/google-analytics — 9 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/posts/instagram-shop — 9 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/rechtliches — 9 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/search — 9 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/tools/passwort-generator — 9 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/tools/qr-code-generator — 9 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/tools/search-und-social-preview — 9 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/tools/web-image-optimizer — 9 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/tools/website-analyse — 9 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/tools/website-carbon-audit — 9 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/webdesign — 15 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/webdesign-stgallen — 15 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/webdesign-thurgau — 15 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://marcelschreiner.ch/whatsapp — 9 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
notice Title is very short
Rule title.too_short · Titles · 5 occurrence(s)
- https://marcelschreiner.ch/agb — 9 chars
- https://marcelschreiner.ch/email — 11 chars
- https://marcelschreiner.ch/hobbies — 13 chars
- https://marcelschreiner.ch/search — 11 chars
- https://marcelschreiner.ch/whatsapp — 14 chars
| URL | Status | Indexable | Words | In-links |
|---|---|---|---|---|
| https://marcelschreiner.ch/ Marcel Schreiner - <ms/> webdesign & code |
200 | yes | 392 | 41 |
| https://marcelschreiner.ch/agb <ms/> AGB |
200 | no | 2349 | 41 |
| https://marcelschreiner.ch/companion ChatGPT - <ms/> companion |
200 | no | 79 | 41 |
| https://marcelschreiner.ch/email <ms/> Email |
200 | no | 95 | 41 |
| https://marcelschreiner.ch/rechtliches <ms/> Rechtliches |
200 | no | 83 | 41 |
| https://marcelschreiner.ch/whatsapp <ms/> Whatsapp |
200 | no | 95 | 41 |
| https://marcelschreiner.ch/posts/gear <ms/> Tools & Technik |
200 | yes | 895 | 2 |
| https://marcelschreiner.ch/posts/neues-buro <ms/> Post - Neues Büro |
200 | yes | 216 | 2 |
| https://marcelschreiner.ch/posts/webseite-selber-anpassen <ms/> Post - Webseite selber anpassen |
200 | yes | 420 | 2 |
| https://marcelschreiner.ch/freelancer <ms/> Freelancer |
200 | yes | 578 | 1 |
| https://marcelschreiner.ch/hobbies <ms/> Hobbies |
200 | yes | 324 | 1 |
| https://marcelschreiner.ch/posts <ms/> Stories & Showcases |
200 | yes | 263 | 1 |
| https://marcelschreiner.ch/tools/passwort-generator <ms/> Passwort Generator – Kostenlos & 100% lokal |
200 | yes | 403 | 1 |
| https://marcelschreiner.ch/tools/qr-code-generator <ms/> QR-Code Generator – Kostenlos 100% im Browser & privat |
200 | yes | 609 | 1 |
| https://marcelschreiner.ch/tools/search-und-social-preview <ms/> Search & Social Preview – Kostenloser Link-Vorschau Check |
200 | yes | 490 | 1 |
| https://marcelschreiner.ch/tools/web-image-optimizer <ms/> Bilder komprimieren für Web – Kostenlos & 100% lokal |
200 | yes | 487 | 1 |
| https://marcelschreiner.ch/tools/website-analyse <ms/> Website Analyse – Kostenloser Performance & SEO Check |
200 | yes | 525 | 1 |
| https://marcelschreiner.ch/tools/website-carbon-audit <ms/> Website CO2 Check – Wie nachhaltig ist deine Webseite? |
200 | yes | 614 | 1 |
| https://marcelschreiner.ch/webdesign <ms/> Webdesign |
200 | yes | 762 | 1 |
| https://marcelschreiner.ch/posts/bambulab-aktion <ms/> Post - Bambulab Aktion |
200 | yes | 163 | 1 |
| https://marcelschreiner.ch/posts/deine-webseite-verwirrt <ms/> Post - Deine Webseite verwirrt |
200 | yes | 152 | 1 |
| https://marcelschreiner.ch/posts/frischekick-fur-die-webseite-von-sonjas-kunstschreinerei <ms/> Post - Frischekick für die Webseite von Sonjas Kunstschreinerei |
200 | yes | 287 | 1 |
| https://marcelschreiner.ch/posts/google-analytics <ms/> Post - Google Analytics in der Schweiz |
200 | yes | 720 | 1 |
| https://marcelschreiner.ch/posts/instagram-shop <ms/> Post - Instagram Shop |
200 | yes | 175 | 1 |
| https://marcelschreiner.ch/posts/mein-buro <ms/> Post - Mein Büro |
200 | yes | 315 | 1 |
| https://marcelschreiner.ch/posts/mein-erster-merch <ms/> Post - Mein erster Merch! |
200 | yes | 165 | 1 |
| https://marcelschreiner.ch/posts/merry-x-ms <ms/> Post - Merry X-<ms/> |
200 | yes | 204 | 1 |
| https://marcelschreiner.ch/posts/ms-companion <ms/> Post - <ms/> companion |
200 | yes | 197 | 1 |
| https://marcelschreiner.ch/posts/neue-website-fur-jm-beauty-hair <ms/> Post - Neue Website für JM Beauty & Hair |
200 | yes | 264 | 1 |
| https://marcelschreiner.ch/posts/neue-website-fur-nadja-l-weinstein <ms/> Post - Neue Website für Nadja L. Weinstein |
200 | yes | 213 | 1 |
| https://marcelschreiner.ch/posts/neue-website-fur-noemi-beza <ms/> Post - Neue Website für Noemi Beza |
200 | yes | 208 | 1 |
| https://marcelschreiner.ch/posts/neue-website-fur-simonas-bastelatelier <ms/> Post - Neue Website für Simonas Bastelatelier |
200 | yes | 240 | 1 |
| https://marcelschreiner.ch/posts/neues-film-setup <ms/> Post - Neues Film Setup |
200 | yes | 207 | 1 |
| https://marcelschreiner.ch/posts/neuro-web-award-2025 <ms/> Post - Neuro Web Award 2025 |
200 | yes | 187 | 1 |
| https://marcelschreiner.ch/posts/uber-mich <ms/> Post - Über mich |
200 | yes | 147 | 1 |
| https://marcelschreiner.ch/posts/visitenkarten-die-nicht-langweilen <ms/> Post - Visitenkarten, die nicht langweilen |
200 | yes | 187 | 1 |
| https://marcelschreiner.ch/posts/webseiten-performance <ms/> Post - Webseiten Performance |
200 | yes | 178 | 1 |
| https://marcelschreiner.ch/posts/weniger-ist-mehr <ms/> Post - Weniger ist mehr |
200 | yes | 129 | 1 |
| https://marcelschreiner.ch/gear <ms/> Tools & Technik |
200 | yes | 895 | 0 |
| https://marcelschreiner.ch/search <ms/> Suche |
200 | yes | 102 | 0 |
| https://marcelschreiner.ch/webdesign-stgallen <ms/> Webdesign St. Gallen – Moderne Webseiten |
200 | yes | 1009 | 0 |
| https://marcelschreiner.ch/webdesign-thurgau <ms/> Webdesign Thurgau – Moderne Webseiten |
200 | yes | 1015 | 0 |
Audit your own site — free
157 checks, internal PageRank, render-diff. No signup, results in ~30s.