SEO audit for codisal.es
CODISAL – Sociedad Cooperativa Andaluza "DIVINO SALVADOR"
Health 90/100 (excellent) · 50 pages crawled · generated 2026-08-26
Download Markdown report (feed to ChatGPT / Claude / Cursor)
| Category | Score | Errors | Warnings | Notices |
|---|---|---|---|---|
| Agent Readiness | 96 | 0 | 6 | 12 |
| Meta Description | 96 | 0 | 6 | 0 |
| Performance | 96 | 0 | 6 | 19 |
| Content | 98 | 0 | 4 | 4 |
| Images | 99 | 0 | 1 | 1 |
| Cache | 100 | 0 | 0 | 6 |
| Security | 100 | 0 | 0 | 7 |
| Social | 100 | 0 | 0 | 12 |
| Structured Data | 100 | 0 | 0 | 6 |
| URL | 100 | 0 | 0 | 49 |
Warnings (5 rules)
warning Control has no accessible name
Rule agent.control_no_name · Agent Readiness · 6 occurrence(s)
- https://codisal.es/ — 2 button/link(s) with no text or aria-label — an agent can't target them
- https://codisal.es/contacto/ — 1 button/link(s) with no text or aria-label — an agent can't target them
- https://codisal.es/fichas-de-seguridad/ — 1 button/link(s) with no text or aria-label — an agent can't target them
- https://codisal.es/nuestros-servicios/ — 1 button/link(s) with no text or aria-label — an agent can't target them
- https://codisal.es/politica-de-privacidad/ — 1 button/link(s) with no text or aria-label — an agent can't target them
- https://codisal.es/quienes-somos/ — 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 · 4 occurrence(s)
- https://codisal.es/ — 44 words
- https://codisal.es/contacto/ — 159 words
- https://codisal.es/nuestros-servicios/ — 96 words
- https://codisal.es/politica-de-privacidad/ — 179 words
warning Images missing alt text
Rule images.missing_alt · Images · 1 occurrence(s)
- https://codisal.es/ — 1 of 24 images missing alt
warning Missing meta description
Rule meta_desc.missing · Meta Description · 6 occurrence(s)
warning Render-blocking script in <head> (no defer/async)
Rule perf.render_blocking · Performance · 6 occurrence(s)
- https://codisal.es/ — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- https://codisal.es/contacto/ — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- https://codisal.es/fichas-de-seguridad/ — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- https://codisal.es/nuestros-servicios/ — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- https://codisal.es/politica-de-privacidad/ — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- https://codisal.es/quienes-somos/ — 5 render-blocking <script> in <head> (add defer/async or use type=module)
Notices (17 rules)
notice Heading levels skip a level
Rule agent.heading_skip · Agent Readiness · 6 occurrence(s)
- https://codisal.es/ — h3 follows h1 — skips h2
- https://codisal.es/contacto/ — h5 follows h1 — skips h2
- https://codisal.es/fichas-de-seguridad/ — h6 follows h1 — skips h2
- https://codisal.es/nuestros-servicios/ — h3 follows h1 — skips h2
- https://codisal.es/politica-de-privacidad/ — h5 follows h1 — skips h2
- https://codisal.es/quienes-somos/ — h3 follows h1 — skips h2
notice No llms.txt for AI agents
Rule agent.llms_txt_missing · Agent Readiness · 1 occurrence(s)
- https://codisal.es/ — 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 · 5 occurrence(s)
- https://codisal.es/contacto/ — add a <main> element (or role=main) around the primary content
- https://codisal.es/fichas-de-seguridad/ — add a <main> element (or role=main) around the primary content
- https://codisal.es/nuestros-servicios/ — add a <main> element (or role=main) around the primary content
- https://codisal.es/politica-de-privacidad/ — add a <main> element (or role=main) around the primary content
- https://codisal.es/quienes-somos/ — add a <main> element (or role=main) around the primary content
notice Page served uncached (no-store/private or CDN bypass)
Rule cache.not_cacheable · Cache · 6 occurrence(s)
- https://codisal.es/ — Cache-Control: no-cache, max-age=3600
- https://codisal.es/contacto/ — Cache-Control: no-cache, max-age=3600
- https://codisal.es/fichas-de-seguridad/ — Cache-Control: no-cache, max-age=3600
- https://codisal.es/nuestros-servicios/ — Cache-Control: no-cache, max-age=3600
- https://codisal.es/politica-de-privacidad/ — Cache-Control: no-cache, max-age=3600
- https://codisal.es/quienes-somos/ — Cache-Control: no-cache, max-age=3600
notice Low text-to-HTML ratio
Rule content.low_ratio · Content · 4 occurrence(s)
notice Images without width/height (layout shift / CLS)
Rule images.missing_dimensions · Images · 1 occurrence(s)
- https://codisal.es/ — 19 of 24 images without width/height
notice Missing Open Graph tags
Rule og.missing · Social · 6 occurrence(s)
- https://codisal.es/ — og:title, og:description, og:image
- https://codisal.es/contacto/ — og:title, og:description, og:image
- https://codisal.es/fichas-de-seguridad/ — og:title, og:description, og:image
- https://codisal.es/nuestros-servicios/ — og:title, og:description, og:image
- https://codisal.es/politica-de-privacidad/ — og:title, og:description, og:image
- https://codisal.es/quienes-somos/ — og:title, og:description, og:image
notice Legacy image format (jpg/png/gif) with no next-gen fallback
Rule perf.images_legacy_format · Performance · 6 occurrence(s)
- https://codisal.es/ — 24 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://codisal.es/contacto/ — 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://codisal.es/fichas-de-seguridad/ — 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://codisal.es/nuestros-servicios/ — 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://codisal.es/politica-de-privacidad/ — 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://codisal.es/quienes-somos/ — 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.
notice Large HTML document
Rule perf.large_html · Performance · 1 occurrence(s)
notice No ETag header (no conditional GET for unchanged pages)
Rule perf.no_etag · Performance · 6 occurrence(s)
- https://codisal.es/ — 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://codisal.es/contacto/ — 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://codisal.es/fichas-de-seguridad/ — 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://codisal.es/nuestros-servicios/ — 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://codisal.es/politica-de-privacidad/ — 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://codisal.es/quienes-somos/ — 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 · 6 occurrence(s)
- https://codisal.es/ — 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://codisal.es/contacto/ — 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://codisal.es/fichas-de-seguridad/ — 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://codisal.es/nuestros-servicios/ — 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://codisal.es/politica-de-privacidad/ — 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://codisal.es/quienes-somos/ — 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 No structured data detected
Rule schema.none · Structured Data · 6 occurrence(s)
notice Missing recommended security headers
Rule security.missing_headers · Security · 6 occurrence(s)
- https://codisal.es/ — HSTS, CSP, X-Content-Type-Options
- https://codisal.es/contacto/ — HSTS, CSP, X-Content-Type-Options
- https://codisal.es/fichas-de-seguridad/ — HSTS, CSP, X-Content-Type-Options
- https://codisal.es/nuestros-servicios/ — CSP, X-Content-Type-Options, HSTS
- https://codisal.es/politica-de-privacidad/ — HSTS, CSP, X-Content-Type-Options
- https://codisal.es/quienes-somos/ — HSTS, CSP, X-Content-Type-Options
notice target=_blank link without rel=noopener (tab-napping)
Rule security.unsafe_cross_origin_links · Security · 1 occurrence(s)
- https://codisal.es/contacto/ — 2 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 · 6 occurrence(s)
notice Underscores in URL path (prefer hyphens)
Rule url.underscores · URL · 11 occurrence(s)
- https://codisal.es/wp-content/uploads/2020/10/mapa_ampliado.png
- https://codisal.es/wp-content/uploads/2021/02/Centurion_Plus-22225-de-11.06.2015.pdf
- https://codisal.es/wp-content/uploads/2021/02/belure-ES_00137-de-09.04.2019.pdf
- https://codisal.es/wp-content/uploads/2021/05/ABANTO-MAX-ES_00718-de-07.02.2019.pdf
- https://codisal.es/wp-content/uploads/2021/05/Aviator-XPRO-ES_00062-de-04.07.2019.pdf
- https://codisal.es/wp-content/uploads/2021/05/axial-pro-ES_00015-de-23.09.2019.pdf
- https://codisal.es/wp-content/uploads/2021/06/belpron-985-14754-de-24_02_2020.pdf
- https://codisal.es/wp-content/uploads/2021/09/Cerco_MSDS-11317-de-23.07.2020.pdf
- https://codisal.es/wp-content/uploads/2022/03/bayasant-ES_00408-de-02.08.2021.pdf
- https://codisal.es/wp-content/uploads/2023/02/ES__ACTIVUS-SC_-25551-de-06.09.2017.pdf
- https://codisal.es/wp-content/uploads/2023/02/candil-ES_00268-de-07.09.2021.pdf
notice Uppercase letters in URL path
Rule url.uppercase · URL · 38 occurrence(s)
- https://codisal.es/wp-content/uploads/2020/12/ENTREVISTA-FAECA.pdf
- https://codisal.es/wp-content/uploads/2021/02/ABAMECTINA-JED-24574-de-19.10.2016.pdf
- https://codisal.es/wp-content/uploads/2021/02/ANTIOIDIO-JED-18767-de-06.04.2016.pdf
- https://codisal.es/wp-content/uploads/2021/02/ARTIC-18767-de-13.12.2018.pdf
- https://codisal.es/wp-content/uploads/2021/02/AZUFRE-ESPOLVOREO-ABONO-CE-13560-de-08.03.2019.pdf
- https://codisal.es/wp-content/uploads/2021/02/AZUFRE-WG-24136-de-25.05.2017.pdf
- https://codisal.es/wp-content/uploads/2021/02/Amicos-Sec-de-03.2012.pdf
- https://codisal.es/wp-content/uploads/2021/02/BALBOA-ESBBMR-2017-18-00447-de-10.03.2017.pdf
- https://codisal.es/wp-content/uploads/2021/02/BIOPOWER-18735-de-04.08.2020.pdf
- https://codisal.es/wp-content/uploads/2021/02/FDS-AZUFRE-MICRONIZADO-P300-100.pdf
- https://codisal.es/wp-content/uploads/2021/02/belure-ES_00137-de-09.04.2019.pdf
- https://codisal.es/wp-content/uploads/2021/05/ABANTO-MAX-ES_00718-de-07.02.2019.pdf
- https://codisal.es/wp-content/uploads/2021/05/AZUFEGA-80-PM-21109-de-26.06.2019.pdf
- https://codisal.es/wp-content/uploads/2021/05/AZUFRE-AZUFEGA-21115-de-02.01.2019.pdf
- https://codisal.es/wp-content/uploads/2021/05/Aviator-XPRO-ES_00062-de-04.07.2019.pdf
- https://codisal.es/wp-content/uploads/2021/05/axial-pro-ES_00015-de-23.09.2019.pdf
- https://codisal.es/wp-content/uploads/2021/09/Balcony.pdf
- https://codisal.es/wp-content/uploads/2021/12/ASPID-12352-de-13.02.2019.pdf
- https://codisal.es/wp-content/uploads/2021/12/Agil-19140-de-11.07.2019.pdf
- https://codisal.es/wp-content/uploads/2022/03/AUROS-18087-de-19.09.2021.pdf
- https://codisal.es/wp-content/uploads/2022/03/bayasant-ES_00408-de-02.08.2021.pdf
- https://codisal.es/wp-content/uploads/2022/06/ALTACOR-35-WG-MSDS-25296-de-noviembre-2018.pdf
- https://codisal.es/wp-content/uploads/2023/02/ALTACOR-35-WG-MSDS-25296-de-noviembre-2018.pdf
- https://codisal.es/wp-content/uploads/2023/02/AZUFEGA-21115-de-03.01.2019.pdf
- https://codisal.es/wp-content/uploads/2023/02/ES__ACTIVUS-SC_-25551-de-06.09.2017.pdf
Audit your own site — free
157 checks, internal PageRank, render-diff. No signup, results in ~30s.