SEO audit for technicpiscine.com
Technic'Piscine 89
Health 81/100 (good) · 50 pages crawled · generated 2026-07-29
Download Markdown report (feed to ChatGPT / Claude / Cursor)
| Category | Score | Errors | Warnings | Notices |
|---|---|---|---|---|
| Links | 95 | 2 | 2 | 0 |
| Crawlability | 96 | 2 | 0 | 2 |
| Agent Readiness | 92 | 0 | 13 | 27 |
| Meta Description | 92 | 0 | 13 | 0 |
| Performance | 92 | 0 | 13 | 54 |
| Duplicate | 95 | 0 | 8 | 0 |
| Content | 98 | 0 | 3 | 3 |
| Headings | 100 | 0 | 0 | 2 |
| Images | 100 | 0 | 0 | 26 |
| Security | 100 | 0 | 0 | 28 |
| Social | 100 | 0 | 0 | 26 |
| Structured Data | 100 | 0 | 0 | 13 |
| URL | 100 | 0 | 0 | 35 |
Errors (2 rules)
error Broken internal link (target 4xx/5xx)
Rule links.broken_internal · Links · 2 occurrence(s)
- https://technicpiscine.com/nos-services/ — https://technicpiscine.com/site/index-slide/nos-contrats-dentretien-piscine/ (HTTP 404)
- https://technicpiscine.com/nos-services/offres-nettoyage/ — https://technicpiscine.com/contacts/ (HTTP 404)
error Client error (4xx) response
Rule status.4xx · Crawlability · 2 occurrence(s)
Warnings (7 rules)
warning Control has no accessible name
Rule agent.control_no_name · Agent Readiness · 13 occurrence(s)
- https://technicpiscine.com/ — 1 button/link(s) with no text or aria-label — an agent can't target them
- https://technicpiscine.com/contact/ — 1 button/link(s) with no text or aria-label — an agent can't target them
- https://technicpiscine.com/fiche-pratique-entretenir-sa-piscine/ — 1 button/link(s) with no text or aria-label — an agent can't target them
- https://technicpiscine.com/galerie/ — 1 button/link(s) with no text or aria-label — an agent can't target them
- https://technicpiscine.com/mentions-legales/ — 1 button/link(s) with no text or aria-label — an agent can't target them
- https://technicpiscine.com/nos-produits/ — 1 button/link(s) with no text or aria-label — an agent can't target them
- https://technicpiscine.com/nos-services/ — 1 button/link(s) with no text or aria-label — an agent can't target them
- https://technicpiscine.com/nos-services/nos-contrats-entretien-piscine/ — 1 button/link(s) with no text or aria-label — an agent can't target them
- https://technicpiscine.com/nos-services/nos-entretiens-piscine/ — 1 button/link(s) with no text or aria-label — an agent can't target them
- https://technicpiscine.com/nos-services/offres-depannage/ — 1 button/link(s) with no text or aria-label — an agent can't target them
- https://technicpiscine.com/nos-services/offres-nettoyage/ — 1 button/link(s) with no text or aria-label — an agent can't target them
- https://technicpiscine.com/site/index-slide/nos-entretiens-piscine/ — 1 button/link(s) with no text or aria-label — an agent can't target them
- https://technicpiscine.com/site/offres-depannage/ — 1 button/link(s) with no text or aria-label — an agent can't target them
warning Thin content (low word count)
Rule content.thin · Content · 3 occurrence(s)
- https://technicpiscine.com/contact/ — 159 words
- https://technicpiscine.com/galerie/ — 101 words
- https://technicpiscine.com/nos-services/offres-nettoyage/ — 173 words
warning Duplicate page content
Rule duplicate.content · Duplicate · 4 occurrence(s)
- https://technicpiscine.com/nos-services/nos-entretiens-piscine/ — content shared by 2 pages: https://technicpiscine.com/site/index-slide/nos-entretiens-piscine/
- https://technicpiscine.com/nos-services/offres-depannage/ — content shared by 2 pages: https://technicpiscine.com/site/offres-depannage/
- https://technicpiscine.com/site/index-slide/nos-entretiens-piscine/ — content shared by 2 pages: https://technicpiscine.com/nos-services/nos-entretiens-piscine/
- https://technicpiscine.com/site/offres-depannage/ — content shared by 2 pages: https://technicpiscine.com/nos-services/offres-depannage/
warning Duplicate <title> across pages
Rule duplicate.title · Duplicate · 4 occurrence(s)
- https://technicpiscine.com/nos-services/nos-entretiens-piscine/ — title shared by 2 pages: https://technicpiscine.com/site/index-slide/nos-entretiens-piscine/
- https://technicpiscine.com/nos-services/offres-depannage/ — title shared by 2 pages: https://technicpiscine.com/site/offres-depannage/
- https://technicpiscine.com/site/index-slide/nos-entretiens-piscine/ — title shared by 2 pages: https://technicpiscine.com/nos-services/nos-entretiens-piscine/
- https://technicpiscine.com/site/offres-depannage/ — title shared by 2 pages: https://technicpiscine.com/nos-services/offres-depannage/
warning Internal link points to a redirect
Rule links.redirect_target · Links · 2 occurrence(s)
- https://technicpiscine.com/nos-services/ — https://technicpiscine.com/site/index-slide/nos-entretiens-piscine/ → https://technicpiscine.com/nos-services/nos-entretiens-piscine/
- https://technicpiscine.com/nos-services/ — https://technicpiscine.com/site/offres-depannage/ → https://technicpiscine.com/nos-services/offres-depannage/
warning Missing meta description
Rule meta_desc.missing · Meta Description · 13 occurrence(s)
- https://technicpiscine.com/
- https://technicpiscine.com/contact/
- https://technicpiscine.com/fiche-pratique-entretenir-sa-piscine/
- https://technicpiscine.com/galerie/
- https://technicpiscine.com/mentions-legales/
- https://technicpiscine.com/nos-produits/
- https://technicpiscine.com/nos-services/
- https://technicpiscine.com/nos-services/nos-contrats-entretien-piscine/
- https://technicpiscine.com/nos-services/nos-entretiens-piscine/
- https://technicpiscine.com/nos-services/offres-depannage/
- https://technicpiscine.com/nos-services/offres-nettoyage/
- https://technicpiscine.com/site/index-slide/nos-entretiens-piscine/
- https://technicpiscine.com/site/offres-depannage/
warning Render-blocking script in <head> (no defer/async)
Rule perf.render_blocking · Performance · 13 occurrence(s)
- https://technicpiscine.com/ — 3 render-blocking <script> in <head> (add defer/async or use type=module)
- https://technicpiscine.com/contact/ — 3 render-blocking <script> in <head> (add defer/async or use type=module)
- https://technicpiscine.com/fiche-pratique-entretenir-sa-piscine/ — 3 render-blocking <script> in <head> (add defer/async or use type=module)
- https://technicpiscine.com/galerie/ — 3 render-blocking <script> in <head> (add defer/async or use type=module)
- https://technicpiscine.com/mentions-legales/ — 3 render-blocking <script> in <head> (add defer/async or use type=module)
- https://technicpiscine.com/nos-produits/ — 3 render-blocking <script> in <head> (add defer/async or use type=module)
- https://technicpiscine.com/nos-services/ — 3 render-blocking <script> in <head> (add defer/async or use type=module)
- https://technicpiscine.com/nos-services/nos-contrats-entretien-piscine/ — 3 render-blocking <script> in <head> (add defer/async or use type=module)
- https://technicpiscine.com/nos-services/nos-entretiens-piscine/ — 3 render-blocking <script> in <head> (add defer/async or use type=module)
- https://technicpiscine.com/nos-services/offres-depannage/ — 3 render-blocking <script> in <head> (add defer/async or use type=module)
- https://technicpiscine.com/nos-services/offres-nettoyage/ — 3 render-blocking <script> in <head> (add defer/async or use type=module)
- https://technicpiscine.com/site/index-slide/nos-entretiens-piscine/ — 3 render-blocking <script> in <head> (add defer/async or use type=module)
- https://technicpiscine.com/site/offres-depannage/ — 3 render-blocking <script> in <head> (add defer/async or use type=module)
Notices (21 rules)
notice Heading levels skip a level
Rule agent.heading_skip · Agent Readiness · 13 occurrence(s)
- https://technicpiscine.com/ — h3 follows h1 — skips h2
- https://technicpiscine.com/contact/ — h5 follows h1 — skips h2
- https://technicpiscine.com/fiche-pratique-entretenir-sa-piscine/ — h3 follows h1 — skips h2
- https://technicpiscine.com/galerie/ — h3 follows h1 — skips h2
- https://technicpiscine.com/mentions-legales/ — h3 follows h1 — skips h2
- https://technicpiscine.com/nos-produits/ — h3 follows h1 — skips h2
- https://technicpiscine.com/nos-services/ — h3 follows h1 — skips h2
- https://technicpiscine.com/nos-services/nos-contrats-entretien-piscine/ — h3 follows h1 — skips h2
- https://technicpiscine.com/nos-services/nos-entretiens-piscine/ — h3 follows h1 — skips h2
- https://technicpiscine.com/nos-services/offres-depannage/ — h3 follows h1 — skips h2
- https://technicpiscine.com/nos-services/offres-nettoyage/ — h3 follows h1 — skips h2
- https://technicpiscine.com/site/index-slide/nos-entretiens-piscine/ — h3 follows h1 — skips h2
- https://technicpiscine.com/site/offres-depannage/ — h3 follows h1 — skips h2
notice No llms.txt for AI agents
Rule agent.llms_txt_missing · Agent Readiness · 1 occurrence(s)
- https://technicpiscine.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 · 13 occurrence(s)
- https://technicpiscine.com/ — add a <main> element (or role=main) around the primary content
- https://technicpiscine.com/contact/ — add a <main> element (or role=main) around the primary content
- https://technicpiscine.com/fiche-pratique-entretenir-sa-piscine/ — add a <main> element (or role=main) around the primary content
- https://technicpiscine.com/galerie/ — add a <main> element (or role=main) around the primary content
- https://technicpiscine.com/mentions-legales/ — add a <main> element (or role=main) around the primary content
- https://technicpiscine.com/nos-produits/ — add a <main> element (or role=main) around the primary content
- https://technicpiscine.com/nos-services/ — add a <main> element (or role=main) around the primary content
- https://technicpiscine.com/nos-services/nos-contrats-entretien-piscine/ — add a <main> element (or role=main) around the primary content
- https://technicpiscine.com/nos-services/nos-entretiens-piscine/ — add a <main> element (or role=main) around the primary content
- https://technicpiscine.com/nos-services/offres-depannage/ — add a <main> element (or role=main) around the primary content
- https://technicpiscine.com/nos-services/offres-nettoyage/ — add a <main> element (or role=main) around the primary content
- https://technicpiscine.com/site/index-slide/nos-entretiens-piscine/ — add a <main> element (or role=main) around the primary content
- https://technicpiscine.com/site/offres-depannage/ — add a <main> element (or role=main) around the primary content
notice Low text-to-HTML ratio
Rule content.low_ratio · Content · 3 occurrence(s)
notice Multiple <h1> elements
Rule h1.multiple · Headings · 2 occurrence(s)
- https://technicpiscine.com/contact/ — 2 <h1> elements
- https://technicpiscine.com/galerie/ — 2 <h1> elements
notice Image filename is generic/auto-generated (missed image-search signal)
Rule images.generic_filename · Images · 13 occurrence(s)
- https://technicpiscine.com/ — 2 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
- https://technicpiscine.com/contact/ — 2 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
- https://technicpiscine.com/fiche-pratique-entretenir-sa-piscine/ — 2 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
- https://technicpiscine.com/galerie/ — 2 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
- https://technicpiscine.com/mentions-legales/ — 2 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
- https://technicpiscine.com/nos-produits/ — 2 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
- https://technicpiscine.com/nos-services/ — 2 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
- https://technicpiscine.com/nos-services/nos-contrats-entretien-piscine/ — 2 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
- https://technicpiscine.com/nos-services/nos-entretiens-piscine/ — 2 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
- https://technicpiscine.com/nos-services/offres-depannage/ — 2 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
- https://technicpiscine.com/nos-services/offres-nettoyage/ — 2 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
- https://technicpiscine.com/site/index-slide/nos-entretiens-piscine/ — 2 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
- https://technicpiscine.com/site/offres-depannage/ — 2 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
notice Likely hero image lacks fetchpriority=high
Rule images.hero_no_fetchpriority · Performance · 13 occurrence(s)
- https://technicpiscine.com/ — the likely hero/LCP image (logo-clear.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://technicpiscine.com/contact/ — the likely hero/LCP image (logo-clear.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://technicpiscine.com/fiche-pratique-entretenir-sa-piscine/ — the likely hero/LCP image (logo-clear.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://technicpiscine.com/galerie/ — the likely hero/LCP image (logo-clear.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://technicpiscine.com/mentions-legales/ — the likely hero/LCP image (logo-clear.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://technicpiscine.com/nos-produits/ — the likely hero/LCP image (logo-clear.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://technicpiscine.com/nos-services/ — the likely hero/LCP image (logo-clear.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://technicpiscine.com/nos-services/nos-contrats-entretien-piscine/ — the likely hero/LCP image (logo-clear.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://technicpiscine.com/nos-services/nos-entretiens-piscine/ — the likely hero/LCP image (logo-clear.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://technicpiscine.com/nos-services/offres-depannage/ — the likely hero/LCP image (logo-clear.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://technicpiscine.com/nos-services/offres-nettoyage/ — the likely hero/LCP image (logo-clear.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://technicpiscine.com/site/index-slide/nos-entretiens-piscine/ — the likely hero/LCP image (logo-clear.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://technicpiscine.com/site/offres-depannage/ — the likely hero/LCP image (logo-clear.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 · 13 occurrence(s)
- https://technicpiscine.com/ — 17 of 22 images without width/height
- https://technicpiscine.com/contact/ — 7 of 9 images without width/height
- https://technicpiscine.com/fiche-pratique-entretenir-sa-piscine/ — 5 of 9 images without width/height
- https://technicpiscine.com/galerie/ — 80 of 80 images without width/height
- https://technicpiscine.com/mentions-legales/ — 5 of 5 images without width/height
- https://technicpiscine.com/nos-produits/ — 46 of 49 images without width/height
- https://technicpiscine.com/nos-services/ — 9 of 10 images without width/height
- https://technicpiscine.com/nos-services/nos-contrats-entretien-piscine/ — 6 of 8 images without width/height
- https://technicpiscine.com/nos-services/nos-entretiens-piscine/ — 6 of 7 images without width/height
- https://technicpiscine.com/nos-services/offres-depannage/ — 6 of 8 images without width/height
- https://technicpiscine.com/nos-services/offres-nettoyage/ — 6 of 7 images without width/height
- https://technicpiscine.com/site/index-slide/nos-entretiens-piscine/ — 6 of 7 images without width/height
- https://technicpiscine.com/site/offres-depannage/ — 6 of 8 images without width/height
notice Missing Open Graph tags
Rule og.missing · Social · 13 occurrence(s)
- https://technicpiscine.com/ — og:title, og:description, og:image
- https://technicpiscine.com/contact/ — og:title, og:description, og:image
- https://technicpiscine.com/fiche-pratique-entretenir-sa-piscine/ — og:title, og:description, og:image
- https://technicpiscine.com/galerie/ — og:title, og:description, og:image
- https://technicpiscine.com/mentions-legales/ — og:title, og:description, og:image
- https://technicpiscine.com/nos-produits/ — og:title, og:description, og:image
- https://technicpiscine.com/nos-services/ — og:title, og:description, og:image
- https://technicpiscine.com/nos-services/nos-contrats-entretien-piscine/ — og:title, og:description, og:image
- https://technicpiscine.com/nos-services/nos-entretiens-piscine/ — og:title, og:description, og:image
- https://technicpiscine.com/nos-services/offres-depannage/ — og:title, og:description, og:image
- https://technicpiscine.com/nos-services/offres-nettoyage/ — og:title, og:description, og:image
- https://technicpiscine.com/site/index-slide/nos-entretiens-piscine/ — og:title, og:description, og:image
- https://technicpiscine.com/site/offres-depannage/ — og:title, og:description, og:image
notice Legacy image format (jpg/png/gif) with no next-gen fallback
Rule perf.images_legacy_format · Performance · 13 occurrence(s)
- https://technicpiscine.com/ — 21 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://technicpiscine.com/contact/ — 8 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://technicpiscine.com/fiche-pratique-entretenir-sa-piscine/ — 9 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://technicpiscine.com/galerie/ — 80 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://technicpiscine.com/mentions-legales/ — 5 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://technicpiscine.com/nos-produits/ — 49 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://technicpiscine.com/nos-services/ — 10 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://technicpiscine.com/nos-services/nos-contrats-entretien-piscine/ — 8 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://technicpiscine.com/nos-services/nos-entretiens-piscine/ — 7 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://technicpiscine.com/nos-services/offres-depannage/ — 8 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://technicpiscine.com/nos-services/offres-nettoyage/ — 7 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://technicpiscine.com/site/index-slide/nos-entretiens-piscine/ — 7 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://technicpiscine.com/site/offres-depannage/ — 8 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 Large HTML document
Rule perf.large_html · Performance · 2 occurrence(s)
notice No ETag header (no conditional GET for unchanged pages)
Rule perf.no_etag · Performance · 13 occurrence(s)
- https://technicpiscine.com/ — 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://technicpiscine.com/contact/ — 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://technicpiscine.com/fiche-pratique-entretenir-sa-piscine/ — 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://technicpiscine.com/galerie/ — 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://technicpiscine.com/mentions-legales/ — 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://technicpiscine.com/nos-produits/ — 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://technicpiscine.com/nos-services/ — 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://technicpiscine.com/nos-services/nos-contrats-entretien-piscine/ — 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://technicpiscine.com/nos-services/nos-entretiens-piscine/ — 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://technicpiscine.com/nos-services/offres-depannage/ — 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://technicpiscine.com/nos-services/offres-nettoyage/ — 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://technicpiscine.com/site/index-slide/nos-entretiens-piscine/ — 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://technicpiscine.com/site/offres-depannage/ — 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 · 13 occurrence(s)
- https://technicpiscine.com/ — 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://technicpiscine.com/contact/ — 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://technicpiscine.com/fiche-pratique-entretenir-sa-piscine/ — 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://technicpiscine.com/galerie/ — 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://technicpiscine.com/mentions-legales/ — 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://technicpiscine.com/nos-produits/ — 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://technicpiscine.com/nos-services/ — 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://technicpiscine.com/nos-services/nos-contrats-entretien-piscine/ — 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://technicpiscine.com/nos-services/nos-entretiens-piscine/ — 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://technicpiscine.com/nos-services/offres-depannage/ — 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://technicpiscine.com/nos-services/offres-nettoyage/ — 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://technicpiscine.com/site/index-slide/nos-entretiens-piscine/ — 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://technicpiscine.com/site/offres-depannage/ — 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 URL redirects to another URL
Rule redirect.single · Crawlability · 2 occurrence(s)
- https://technicpiscine.com/site/index-slide/nos-entretiens-piscine/ — redirects to https://technicpiscine.com/nos-services/nos-entretiens-piscine/
- https://technicpiscine.com/site/offres-depannage/ — redirects to https://technicpiscine.com/nos-services/offres-depannage/
notice No structured data detected
Rule schema.none · Structured Data · 13 occurrence(s)
- https://technicpiscine.com/
- https://technicpiscine.com/contact/
- https://technicpiscine.com/fiche-pratique-entretenir-sa-piscine/
- https://technicpiscine.com/galerie/
- https://technicpiscine.com/mentions-legales/
- https://technicpiscine.com/nos-produits/
- https://technicpiscine.com/nos-services/
- https://technicpiscine.com/nos-services/nos-contrats-entretien-piscine/
- https://technicpiscine.com/nos-services/nos-entretiens-piscine/
- https://technicpiscine.com/nos-services/offres-depannage/
- https://technicpiscine.com/nos-services/offres-nettoyage/
- https://technicpiscine.com/site/index-slide/nos-entretiens-piscine/
- https://technicpiscine.com/site/offres-depannage/
notice Missing recommended security headers
Rule security.missing_headers · Security · 15 occurrence(s)
- https://technicpiscine.com/ — HSTS, CSP, X-Content-Type-Options
- https://technicpiscine.com/contact/ — HSTS, CSP, X-Content-Type-Options
- https://technicpiscine.com/contacts/ — HSTS, CSP, X-Content-Type-Options
- https://technicpiscine.com/fiche-pratique-entretenir-sa-piscine/ — HSTS, CSP, X-Content-Type-Options
- https://technicpiscine.com/galerie/ — CSP, X-Content-Type-Options, HSTS
- https://technicpiscine.com/mentions-legales/ — HSTS, CSP, X-Content-Type-Options
- https://technicpiscine.com/nos-produits/ — HSTS, CSP, X-Content-Type-Options
- https://technicpiscine.com/nos-services/ — CSP, X-Content-Type-Options, HSTS
- https://technicpiscine.com/nos-services/nos-contrats-entretien-piscine/ — HSTS, CSP, X-Content-Type-Options
- https://technicpiscine.com/nos-services/nos-entretiens-piscine/ — HSTS, CSP, X-Content-Type-Options
- https://technicpiscine.com/nos-services/offres-depannage/ — HSTS, CSP, X-Content-Type-Options
- https://technicpiscine.com/nos-services/offres-nettoyage/ — HSTS, CSP, X-Content-Type-Options
- https://technicpiscine.com/site/index-slide/nos-contrats-dentretien-piscine/ — HSTS, CSP, X-Content-Type-Options
- https://technicpiscine.com/site/index-slide/nos-entretiens-piscine/ — HSTS, CSP, X-Content-Type-Options
- https://technicpiscine.com/site/offres-depannage/ — CSP, X-Content-Type-Options, HSTS
notice target=_blank link without rel=noopener (tab-napping)
Rule security.unsafe_cross_origin_links · Security · 13 occurrence(s)
- https://technicpiscine.com/ — 7 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://technicpiscine.com/contact/ — 2 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://technicpiscine.com/fiche-pratique-entretenir-sa-piscine/ — 1 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://technicpiscine.com/galerie/ — 1 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://technicpiscine.com/mentions-legales/ — 1 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://technicpiscine.com/nos-produits/ — 37 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://technicpiscine.com/nos-services/ — 1 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://technicpiscine.com/nos-services/nos-contrats-entretien-piscine/ — 1 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://technicpiscine.com/nos-services/nos-entretiens-piscine/ — 1 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://technicpiscine.com/nos-services/offres-depannage/ — 1 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://technicpiscine.com/nos-services/offres-nettoyage/ — 1 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://technicpiscine.com/site/index-slide/nos-entretiens-piscine/ — 1 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://technicpiscine.com/site/offres-depannage/ — 1 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
notice Missing Twitter Card tag
Rule twitter.missing · Social · 13 occurrence(s)
- https://technicpiscine.com/
- https://technicpiscine.com/contact/
- https://technicpiscine.com/fiche-pratique-entretenir-sa-piscine/
- https://technicpiscine.com/galerie/
- https://technicpiscine.com/mentions-legales/
- https://technicpiscine.com/nos-produits/
- https://technicpiscine.com/nos-services/
- https://technicpiscine.com/nos-services/nos-contrats-entretien-piscine/
- https://technicpiscine.com/nos-services/nos-entretiens-piscine/
- https://technicpiscine.com/nos-services/offres-depannage/
- https://technicpiscine.com/nos-services/offres-nettoyage/
- https://technicpiscine.com/site/index-slide/nos-entretiens-piscine/
- https://technicpiscine.com/site/offres-depannage/
notice URL is very long
Rule url.too_long · URL · 2 occurrence(s)
notice Underscores in URL path (prefer hyphens)
Rule url.underscores · URL · 27 occurrence(s)
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_abri_piscine_5.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_12.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_13.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_14.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_15.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_16.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_17.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_18.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_20.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_21.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_22.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_23.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_24.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_25.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_26.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_27.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_28.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_29.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_32.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_38.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_39.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_40.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_42.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_43.jpg
- https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_44.jpg
notice Uppercase letters in URL path
Rule url.uppercase · URL · 6 occurrence(s)
- https://technicpiscine.com/wp-content/uploads/2025/02/Technic-Piscine-entretien-traitement-produits3.png
- https://technicpiscine.com/wp-content/uploads/2025/02/Technic-Piscine-entretien-traitement-produits4.png
- https://technicpiscine.com/wp-content/uploads/2025/02/Technic-Piscine-entretien-traitement-produits41.png
- https://technicpiscine.com/wp-content/uploads/2025/09/Technic-Piscine-entretien-traitement-amusement-jeux.jpg
- https://technicpiscine.com/wp-content/uploads/2025/09/technic-Piscine-entretien-traitement-zen.jpg
- https://technicpiscine.com/wp-content/uploads/2026/01/Technic-Piscine-entretien-traitement-produits5.jpg
Audit your own site — free
157 checks, internal PageRank, render-diff. No signup, results in ~30s.