Catalog / technicpiscine.com
81

SEO audit for technicpiscine.com

Technic'Piscine 89

otherWordPress

Health 81/100 (good) · 50 pages crawled · generated 2026-07-29

Download Markdown report (feed to ChatGPT / Claude / Cursor)
Screenshot of technicpiscine.com
50
pages crawled
13
indexable pages
4
errors
52
warnings
216
notices
0
orphan pages
2
broken links
Category breakdown
CategoryScoreErrorsWarningsNotices
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
Findings

Errors (2 rules)

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

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

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)

warning Thin content (low word count)

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

warning Duplicate page content

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

warning Duplicate <title> across pages

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

warning Internal link points to a redirect

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

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

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

Notices (21 rules)

notice Heading levels skip a level

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

notice No llms.txt for AI agents

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

notice No main landmark for AI agents

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

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)

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)

notice Missing Open Graph tags

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

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

Rule perf.images_legacy_format · Performance · 13 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)

notice Missing recommended security headers

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

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

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

notice Underscores in URL path (prefer hyphens)

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

Pages (showing 50 of 50)
URLStatusIndexableWordsIn-links
https://technicpiscine.com/
Technic'Piscine 89
200 yes 511 15
https://technicpiscine.com/contact/
Contacts – Technic'Piscine 89
200 yes 159 13
https://technicpiscine.com/fiche-pratique-entretenir-sa-piscine/
Fiche pratiques : entretenir sa piscine et son spa – Technic'Piscine 89
200 yes 1286 13
https://technicpiscine.com/galerie/
Galerie – Technic'Piscine 89
200 yes 101 13
https://technicpiscine.com/mentions-legales/
Mentions légales – Technic'Piscine 89
200 yes 1200 13
https://technicpiscine.com/nos-produits/
Nos produits – Technic'Piscine 89
200 yes 421 13
https://technicpiscine.com/nos-services/
Nos services – Technic'Piscine 89
200 yes 412 13
https://technicpiscine.com/nos-services/nos-contrats-entretien-piscine/
Nos contrats d’entretien piscine – Technic'Piscine 89
200 yes 912 13
https://technicpiscine.com/nos-services/nos-entretiens-piscine/
Nos entretiens piscine – Technic'Piscine 89
200 yes 706 13
https://technicpiscine.com/nos-services/offres-depannage/
Dépannage – Technic'Piscine 89
200 yes 232 13
https://technicpiscine.com/nos-services/offres-nettoyage/
Nettoyage de piscine et des abords – Technic'Piscine 89
200 yes 173 13
https://technicpiscine.com/site/index-slide/nos-entretiens-piscine/
Nos entretiens piscine – Technic'Piscine 89
200 yes 706 1
https://technicpiscine.com/site/offres-depannage/
Dépannage – Technic'Piscine 89
200 yes 232 1
https://technicpiscine.com/contacts/
Page non trouvée – Technic'Piscine 89
404 no 18 1
https://technicpiscine.com/site/index-slide/nos-contrats-dentretien-piscine/
Page non trouvée – Technic'Piscine 89
404 no 18 1
https://technicpiscine.com/wp-content/uploads/2025/02/Technic-Piscine-entretien-traitement-produits3.png 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/Technic-Piscine-entretien-traitement-produits4.png 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/Technic-Piscine-entretien-traitement-produits41.png 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technic-piscine-entretien-traitement-illustration-3-scaled.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technic-piscine-entretien-traitement-illustration-5-scaled.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_abri_piscine_5.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_10.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_11.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_12.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_13.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_14.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_15.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_16.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_17.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_18.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_20.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_21.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_22.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_23.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_24.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_25.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_26.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_27.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_28.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_29.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_32.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_38.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_39.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_40.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_42.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_43.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/02/technicpiscine_piscine_44.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/09/Technic-Piscine-entretien-traitement-amusement-jeux.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2025/09/technic-Piscine-entretien-traitement-zen.jpg 200 no 0 1
https://technicpiscine.com/wp-content/uploads/2026/01/Technic-Piscine-entretien-traitement-produits5.jpg 200 no 0 1

Audit your own site — free

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

Scan your site →