SEO audit for sortons.app
Sortons — Sorties autour de vous
Health 89/100 (good) · 21 pages crawled · generated 2026-08-26
Download Markdown report (feed to ChatGPT / Claude / Cursor)Découvrez les sorties autour de vous : lieux, événements, balades, musées. Filtrées pour solo, famille ou tout-petits.
| Category | Score | Errors | Warnings | Notices |
|---|---|---|---|---|
| Content | 97 | 0 | 2 | 0 |
| Crawlability | 99 | 0 | 1 | 0 |
| Agent Readiness | 100 | 0 | 0 | 3 |
| Cache | 100 | 0 | 0 | 19 |
| Performance | 100 | 0 | 0 | 59 |
| Security | 100 | 0 | 0 | 19 |
| Structured Data | 100 | 0 | 0 | 6 |
Warnings (2 rules)
warning Thin content (low word count)
Rule content.thin · Content · 2 occurrence(s)
- https://sortons.app/sortie/parc-accrocamp-de-rueil-malmaison — 125 words
- https://sortons.app/transparence — 181 words
warning Incomplete/empty response after retries (likely transient — re-crawl)
Rule fetch.incomplete · Crawlability · 1 occurrence(s)
- https://sortons.app/sorties/lyon — context deadline exceeded after 3 attempts
Notices (10 rules)
notice Heading levels skip a level
Rule agent.heading_skip · Agent Readiness · 2 occurrence(s)
- https://sortons.app/ — h3 follows h1 — skips h2
- https://sortons.app/sorties — h3 follows h1 — skips h2
notice No llms.txt for AI agents
Rule agent.llms_txt_missing · Agent Readiness · 1 occurrence(s)
- https://sortons.app/ — no llms.txt found at the site root — add one so AI agents get a curated site summary
notice Page served uncached (no-store/private or CDN bypass)
Rule cache.not_cacheable · Cache · 19 occurrence(s)
- https://sortons.app/ — Cache-Control: no-cache, private
- https://sortons.app/cgu — Cache-Control: no-cache, private
- https://sortons.app/privacy — Cache-Control: no-cache, private
- https://sortons.app/sortie/parc-accrocamp-de-rueil-malmaison — Cache-Control: no-cache, private
- https://sortons.app/sorties — Cache-Control: no-cache, private
- https://sortons.app/sorties/chaussy — Cache-Control: no-cache, private
- https://sortons.app/sorties/clichy — Cache-Control: no-cache, private
- https://sortons.app/sorties/guyancourt — Cache-Control: no-cache, private
- https://sortons.app/sorties/issy-les-moulineaux — Cache-Control: no-cache, private
- https://sortons.app/sorties/marseille — Cache-Control: no-cache, private
- https://sortons.app/sorties/meudon — Cache-Control: no-cache, private
- https://sortons.app/sorties/montreuil — Cache-Control: no-cache, private
- https://sortons.app/sorties/paris — Cache-Control: no-cache, private
- https://sortons.app/sorties/paris?page=2 — Cache-Control: no-cache, private
- https://sortons.app/sorties/plaisir — Cache-Control: no-cache, private
- https://sortons.app/sorties/toulouse — Cache-Control: no-cache, private
- https://sortons.app/sorties/trappes — Cache-Control: no-cache, private
- https://sortons.app/sorties/versailles — Cache-Control: no-cache, private
- https://sortons.app/transparence — Cache-Control: no-cache, private
notice Likely hero image lacks fetchpriority=high
Rule images.hero_no_fetchpriority · Performance · 1 occurrence(s)
- https://sortons.app/ — the likely hero/LCP image (badge-google-play.svg) 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 No ETag header (no conditional GET for unchanged pages)
Rule perf.no_etag · Performance · 19 occurrence(s)
- https://sortons.app/ — 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://sortons.app/cgu — 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://sortons.app/privacy — 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://sortons.app/sortie/parc-accrocamp-de-rueil-malmaison — 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://sortons.app/sorties — 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://sortons.app/sorties/chaussy — 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://sortons.app/sorties/clichy — 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://sortons.app/sorties/guyancourt — 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://sortons.app/sorties/issy-les-moulineaux — 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://sortons.app/sorties/marseille — 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://sortons.app/sorties/meudon — 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://sortons.app/sorties/montreuil — 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://sortons.app/sorties/paris — 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://sortons.app/sorties/paris?page=2 — 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://sortons.app/sorties/plaisir — 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://sortons.app/sorties/toulouse — 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://sortons.app/sorties/trappes — 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://sortons.app/sorties/versailles — 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://sortons.app/transparence — 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 · 19 occurrence(s)
- https://sortons.app/ — 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://sortons.app/cgu — 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://sortons.app/privacy — 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://sortons.app/sortie/parc-accrocamp-de-rueil-malmaison — 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://sortons.app/sorties — 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://sortons.app/sorties/chaussy — 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://sortons.app/sorties/clichy — 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://sortons.app/sorties/guyancourt — 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://sortons.app/sorties/issy-les-moulineaux — 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://sortons.app/sorties/marseille — 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://sortons.app/sorties/meudon — 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://sortons.app/sorties/montreuil — 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://sortons.app/sorties/paris — 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://sortons.app/sorties/paris?page=2 — 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://sortons.app/sorties/plaisir — 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://sortons.app/sorties/toulouse — 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://sortons.app/sorties/trappes — 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://sortons.app/sorties/versailles — 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://sortons.app/transparence — 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 Slow server response
Rule perf.slow_response · Performance · 20 occurrence(s)
- https://sortons.app/ — 4098 ms
- https://sortons.app/api/v1/stats — 4042 ms
- https://sortons.app/cgu — 4062 ms
- https://sortons.app/privacy — 4124 ms
- https://sortons.app/sortie/parc-accrocamp-de-rueil-malmaison — 4101 ms
- https://sortons.app/sorties — 4200 ms
- https://sortons.app/sorties/chaussy — 4072 ms
- https://sortons.app/sorties/clichy — 4070 ms
- https://sortons.app/sorties/guyancourt — 4099 ms
- https://sortons.app/sorties/issy-les-moulineaux — 4090 ms
- https://sortons.app/sorties/marseille — 4071 ms
- https://sortons.app/sorties/meudon — 4119 ms
- https://sortons.app/sorties/montreuil — 4082 ms
- https://sortons.app/sorties/paris — 4186 ms
- https://sortons.app/sorties/paris?page=2 — 4199 ms
- https://sortons.app/sorties/plaisir — 4219 ms
- https://sortons.app/sorties/toulouse — 4101 ms
- https://sortons.app/sorties/trappes — 4085 ms
- https://sortons.app/sorties/versailles — 4098 ms
- https://sortons.app/transparence — 4228 ms
notice Deep page has no BreadcrumbList structured data
Rule schema.breadcrumb_missing · Structured Data · 1 occurrence(s)
- https://sortons.app/sorties/paris?page=2 — depth-2 page has structured data but no BreadcrumbList
notice No structured data detected
Rule schema.none · Structured Data · 5 occurrence(s)
notice Missing recommended security headers
Rule security.missing_headers · Security · 19 occurrence(s)
- https://sortons.app/ — HSTS, CSP, X-Content-Type-Options
- https://sortons.app/cgu — HSTS, CSP, X-Content-Type-Options
- https://sortons.app/privacy — HSTS, CSP, X-Content-Type-Options
- https://sortons.app/sortie/parc-accrocamp-de-rueil-malmaison — CSP, X-Content-Type-Options, HSTS
- https://sortons.app/sorties — HSTS, CSP, X-Content-Type-Options
- https://sortons.app/sorties/chaussy — HSTS, CSP, X-Content-Type-Options
- https://sortons.app/sorties/clichy — HSTS, CSP, X-Content-Type-Options
- https://sortons.app/sorties/guyancourt — HSTS, CSP, X-Content-Type-Options
- https://sortons.app/sorties/issy-les-moulineaux — X-Content-Type-Options, HSTS, CSP
- https://sortons.app/sorties/marseille — HSTS, CSP, X-Content-Type-Options
- https://sortons.app/sorties/meudon — HSTS, CSP, X-Content-Type-Options
- https://sortons.app/sorties/montreuil — X-Content-Type-Options, HSTS, CSP
- https://sortons.app/sorties/paris — HSTS, CSP, X-Content-Type-Options
- https://sortons.app/sorties/paris?page=2 — CSP, X-Content-Type-Options, HSTS
- https://sortons.app/sorties/plaisir — HSTS, CSP, X-Content-Type-Options
- https://sortons.app/sorties/toulouse — HSTS, CSP, X-Content-Type-Options
- https://sortons.app/sorties/trappes — HSTS, CSP, X-Content-Type-Options
- https://sortons.app/sorties/versailles — HSTS, CSP, X-Content-Type-Options
- https://sortons.app/transparence — HSTS, CSP, X-Content-Type-Options
| URL | Status | Indexable | Words | In-links |
|---|---|---|---|---|
| https://sortons.app/ Sortons — Sorties autour de vous |
200 | yes | 838 | 19 |
| https://sortons.app/cgu Conditions d'utilisation — Sortons |
200 | yes | 311 | 19 |
| https://sortons.app/privacy Politique de confidentialité — Sortons |
200 | yes | 573 | 19 |
| https://sortons.app/transparence Sortons en chiffres — Transparence |
200 | yes | 181 | 19 |
| https://sortons.app/sorties/chaussy Sorties à Chaussy — Sortons |
200 | yes | 447 | 13 |
| https://sortons.app/sorties/clichy Sorties à Clichy — Sortons |
200 | yes | 479 | 13 |
| https://sortons.app/sorties/guyancourt Sorties à Guyancourt — Sortons |
200 | yes | 586 | 13 |
| https://sortons.app/sorties/issy-les-moulineaux Sorties à Issy-les-Moulineaux — Sortons |
200 | yes | 632 | 13 |
| https://sortons.app/sorties/marseille Sorties à Marseille — Sortons |
200 | yes | 429 | 13 |
| https://sortons.app/sorties/meudon Sorties à Meudon — Sortons |
200 | yes | 710 | 13 |
| https://sortons.app/sorties/montreuil Sorties à Montreuil — Sortons |
200 | yes | 504 | 13 |
| https://sortons.app/sorties/plaisir Sorties à Plaisir — Sortons |
200 | yes | 531 | 13 |
| https://sortons.app/sorties/toulouse Sorties à Toulouse — Sortons |
200 | yes | 450 | 13 |
| https://sortons.app/sorties/trappes Sorties à Trappes — Sortons |
200 | yes | 404 | 13 |
| https://sortons.app/sorties/versailles Sorties à Versailles — Sortons |
200 | yes | 685 | 13 |
| https://sortons.app/sorties/paris Sorties à Paris — Sortons |
200 | yes | 558 | 12 |
| https://sortons.app/sorties/paris?page=2 Sorties à Paris — Sortons |
200 | yes | 557 | 1 |
| https://sortons.app/sortie/parc-accrocamp-de-rueil-malmaison Parc AccroCamp de Rueil-Malmaison — Sortons |
200 | yes | 125 | 0 |
| https://sortons.app/sorties Sorties par ville — Sortons |
200 | yes | 395 | 0 |
| https://sortons.app/api/v1/stats | 200 | no | 0 | 1 |
| https://sortons.app/sorties/lyon | 0 | no | 0 | 3 |
Audit your own site — free
157 checks, internal PageRank, render-diff. No signup, results in ~30s.