Catalog / smrt.bio
66

SEO audit for smrt.bio

Individuals | SMRT.BIO

otherDrupal

Health 66/100 (fair) · 50 pages crawled · generated 2026-08-26

Download Markdown report (feed to ChatGPT / Claude / Cursor)
Screenshot of smrt.bio
50
pages crawled
49
indexable pages
0
errors
263
warnings
576
notices
0
orphan pages
0
broken links
Category breakdown
CategoryScoreErrorsWarningsNotices
Hreflang 9 0 151 0
Meta Description 71 0 49 0
Headings 72 0 46 0
Agent Readiness 98 0 4 1
Duplicate 98 0 4 0
Canonical 98 0 3 18
Images 98 0 3 51
Performance 98 0 3 187
Cache 100 0 0 49
Content 100 0 0 6
Security 100 0 0 98
Social 100 0 0 98
Structured Data 100 0 0 49
URL 100 0 0 19
Findings

Warnings (10 rules)

warning Control has no accessible name

Rule agent.control_no_name · Agent Readiness · 4 occurrence(s)

warning Missing canonical tag

Rule canonical.missing · Canonical · 3 occurrence(s)

warning Homepage duplicated across protocol/host variants (no redirect)

Rule duplicate.protocol_host · Duplicate · 1 occurrence(s)

  • https://smrt.bio/ — https://www.smrt.bio/ serves the same homepage content with a 200 and no redirect — Google sees a duplicate. Pick one canonical host/scheme and 301-redirect the others.

warning Duplicate <title> across pages

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

warning hreflang set has no self-reference

Rule hreflang.missing_self · Hreflang · 18 occurrence(s)

warning hreflang has no return link (not reciprocal)

Rule hreflang.no_return · Hreflang · 133 occurrence(s)

warning Images missing alt text

Rule images.missing_alt · Images · 3 occurrence(s)

warning Hero/LCP image is lazy-loaded (loading=lazy delays LCP)

Rule images.no_lazy_lcp_candidate · Performance · 3 occurrence(s)

  • https://smrt.bio/en/aboutus — the likely hero/LCP image (frame%2071.png) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
  • https://smrt.bio/fr/a-propos-de-nous — the likely hero/LCP image (frame%2071.png) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
  • https://smrt.bio/nl/over-ons — the likely hero/LCP image (frame%2071.png) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.

Notices (18 rules)

notice No llms.txt for AI agents

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

  • https://smrt.bio/ — 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 · 49 occurrence(s)

notice Canonical points to a different URL

Rule canonical.non_self · Canonical · 18 occurrence(s)

notice Main text is hard to read (low Flesch Reading Ease)

Rule content.readability_poor · Content · 6 occurrence(s)

  • https://smrt.bio/educators — this page reads as difficult (Flesch Reading Ease 43, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://smrt.bio/en/Educators — this page reads as difficult (Flesch Reading Ease 43, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://smrt.bio/en/aboutus — this page reads as difficult (Flesch Reading Ease 41, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://smrt.bio/en/blog — this page reads as difficult (Flesch Reading Ease 36, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://smrt.bio/en/regions — this page reads as very difficult (Flesch Reading Ease 28, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://smrt.bio/regions — this page reads as very difficult (Flesch Reading Ease 28, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.

notice Image alt text is keyword-stuffed (repetition / low variety)

Rule images.alt_stuffed · Images · 2 occurrence(s)

  • https://smrt.bio/es — 3 image(s) have keyword-stuffed alt text — the same word repeated several times, or a long low-variety keyword list. Google's image guidance asks for short, descriptive alt text, not keyword lists; rewrite it to describe the image.
  • https://smrt.bio/es/Individuos — 3 image(s) have keyword-stuffed alt text — the same word repeated several times, or a long low-variety keyword list. Google's image guidance asks for short, descriptive alt text, not keyword lists; rewrite it to describe the image.

notice Likely hero image lacks fetchpriority=high

Rule images.hero_no_fetchpriority · Performance · 40 occurrence(s)

  • https://smrt.bio/ — the likely hero/LCP image (group 3.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.
  • https://smrt.bio/ar — the likely hero/LCP image (group 3.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.
  • https://smrt.bio/ar/Individuals — the likely hero/LCP image (group 3.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.
  • https://smrt.bio/de — the likely hero/LCP image (group 3.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.
  • https://smrt.bio/de/Einzelpersonen — the likely hero/LCP image (group 3.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.
  • https://smrt.bio/en — the likely hero/LCP image (group 3.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.
  • https://smrt.bio/en/Educators — the likely hero/LCP image (group 8.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.
  • https://smrt.bio/en/Individuals — the likely hero/LCP image (group 3.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.
  • https://smrt.bio/en/contactus — the likely hero/LCP image (vector.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://smrt.bio/en/employers — the likely hero/LCP image (group 1.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.
  • https://smrt.bio/en/regions — the likely hero/LCP image (group 9.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.
  • https://smrt.bio/es — the likely hero/LCP image (group 3.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.
  • https://smrt.bio/es/Individuos — the likely hero/LCP image (group 3.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.
  • https://smrt.bio/fr — the likely hero/LCP image (group 3.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.
  • https://smrt.bio/fr/Particuliers — the likely hero/LCP image (group 3.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.
  • https://smrt.bio/hi — the likely hero/LCP image (group 3.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.
  • https://smrt.bio/hi/Individuals — the likely hero/LCP image (group 3.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.
  • https://smrt.bio/hr — the likely hero/LCP image (group 3.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.
  • https://smrt.bio/hr/Individuals — the likely hero/LCP image (group 3.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.
  • https://smrt.bio/it — the likely hero/LCP image (group 3.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.
  • https://smrt.bio/it/Individui — the likely hero/LCP image (group 3.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.
  • https://smrt.bio/ku — the likely hero/LCP image (group 3.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.
  • https://smrt.bio/ku/Individuals — the likely hero/LCP image (group 3.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.
  • https://smrt.bio/nl — the likely hero/LCP image (group 3.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.
  • https://smrt.bio/nl/Individuen — the likely hero/LCP image (group 3.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 Images without width/height (layout shift / CLS)

Rule images.missing_dimensions · Images · 49 occurrence(s)

notice Missing Open Graph tags

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

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

Rule perf.images_legacy_format · Performance · 49 occurrence(s)

  • https://smrt.bio/ — 14 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://smrt.bio/ar — 14 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://smrt.bio/ar/Individuals — 14 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://smrt.bio/de — 14 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://smrt.bio/de/Einzelpersonen — 14 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://smrt.bio/en — 14 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://smrt.bio/en/Educators — 16 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://smrt.bio/en/Individuals — 14 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://smrt.bio/en/contactus — 4 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://smrt.bio/en/employers — 18 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://smrt.bio/en/regions — 16 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://smrt.bio/es — 14 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://smrt.bio/es/Individuos — 14 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://smrt.bio/fr — 14 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://smrt.bio/fr/Particuliers — 14 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://smrt.bio/hi — 14 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://smrt.bio/hi/Individuals — 14 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://smrt.bio/hr — 14 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://smrt.bio/hr/Individuals — 14 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://smrt.bio/it — 14 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://smrt.bio/it/Individui — 14 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://smrt.bio/ku — 14 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://smrt.bio/ku/Individuals — 14 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://smrt.bio/nl — 14 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://smrt.bio/nl/Individuen — 14 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.

notice No ETag header (no conditional GET for unchanged pages)

Rule perf.no_etag · Performance · 49 occurrence(s)

  • https://smrt.bio/ — 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://smrt.bio/ar — 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://smrt.bio/ar/Individuals — 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://smrt.bio/de — 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://smrt.bio/de/Einzelpersonen — 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://smrt.bio/en — 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://smrt.bio/en/Educators — 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://smrt.bio/en/Individuals — 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://smrt.bio/en/contactus — 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://smrt.bio/en/employers — 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://smrt.bio/en/regions — 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://smrt.bio/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://smrt.bio/es/Individuos — 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://smrt.bio/fr — 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://smrt.bio/fr/Particuliers — 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://smrt.bio/hi — 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://smrt.bio/hi/Individuals — 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://smrt.bio/hr — 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://smrt.bio/hr/Individuals — 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://smrt.bio/it — 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://smrt.bio/it/Individui — 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://smrt.bio/ku — 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://smrt.bio/ku/Individuals — 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://smrt.bio/nl — 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://smrt.bio/nl/Individuen — 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 · 49 occurrence(s)

  • https://smrt.bio/ — 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://smrt.bio/ar — 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://smrt.bio/ar/Individuals — 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://smrt.bio/de — 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://smrt.bio/de/Einzelpersonen — 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://smrt.bio/en — 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://smrt.bio/en/Educators — 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://smrt.bio/en/Individuals — 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://smrt.bio/en/contactus — 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://smrt.bio/en/employers — 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://smrt.bio/en/regions — 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://smrt.bio/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://smrt.bio/es/Individuos — 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://smrt.bio/fr — 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://smrt.bio/fr/Particuliers — 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://smrt.bio/hi — 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://smrt.bio/hi/Individuals — 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://smrt.bio/hr — 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://smrt.bio/hr/Individuals — 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://smrt.bio/it — 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://smrt.bio/it/Individui — 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://smrt.bio/ku — 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://smrt.bio/ku/Individuals — 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://smrt.bio/nl — 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://smrt.bio/nl/Individuen — 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 Missing recommended security headers

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

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

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

  • https://smrt.bio/ — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/ar — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/ar/Individuals — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/de — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/de/Einzelpersonen — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/en — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/en/Educators — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/en/Individuals — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/en/contactus — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/en/employers — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/en/regions — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/es — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/es/Individuos — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/fr — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/fr/Particuliers — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/hi — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/hi/Individuals — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/hr — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/hr/Individuals — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/it — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/it/Individui — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/ku — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/ku/Individuals — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/nl — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
  • https://smrt.bio/nl/Individuen — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".

notice Non-ASCII characters in URL path

Rule url.non_ascii · URL · 1 occurrence(s)

notice Underscores in URL path (prefer hyphens)

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

Pages (showing 50 of 50)
URLStatusIndexableWordsIn-links
https://smrt.bio/en
Individuals | SMRT.BIO
200 yes 283 34
https://smrt.bio/nl
Individuen | SMRT.BIO
200 yes 321 30
https://smrt.bio/fr
Particuliers | SMRT.BIO
200 yes 315 29
https://smrt.bio/ar
فرادى | SMRT.BIO
200 yes 253 22
https://smrt.bio/de
Einzelpersonen | SMRT.BIO
200 yes 307 22
https://smrt.bio/es
Individuos | SMRT.BIO
200 yes 295 22
https://smrt.bio/hi
व्यक्तियों | SMRT.BIO
200 yes 337 22
https://smrt.bio/hr
Pojedinci | SMRT.BIO
200 yes 280 22
https://smrt.bio/it
Individui | SMRT.BIO
200 yes 351 22
https://smrt.bio/ku
Kesên | SMRT.BIO
200 yes 324 22
https://smrt.bio/en/employers
Employers | SMRT.BIO
200 yes 341 18
https://smrt.bio/en/regions
Regions | SMRT.BIO
200 yes 275 18
https://smrt.bio/en/Educators
Educators | SMRT.BIO
200 yes 343 18
https://smrt.bio/en/blog
Blog | SMRT.BIO
200 yes 344 18
https://smrt.bio/en/disclaimer
Disclaimer | SMRT.BIO
200 yes 783 18
https://smrt.bio/en/aboutus
Home Page | SMRT.BIO
200 yes 584 18
https://smrt.bio/en/contactus
Contact us | SMRT.BIO
200 yes 561 18
https://smrt.bio/en/privacy
Privacy Statement | SMRT.BIO
200 yes 1072 17
https://smrt.bio/en/Individuals
Individuals | SMRT.BIO
200 yes 283 16
https://smrt.bio/nl/Regio%27s
Regio's | SMRT.BIO
200 yes 333 13
https://smrt.bio/nl/Werkgevers
Werkgevers | SMRT.BIO
200 yes 384 13
https://smrt.bio/nl/Educators
Opvoeders | SMRT.BIO
200 yes 407 13
https://smrt.bio/nl/blog
Blog | SMRT.BIO
200 yes 278 12
https://smrt.bio/nl/disclaimer
Vrijwaring | SMRT.BIO
200 yes 771 12
https://smrt.bio/fr/Employeurs
Employeurs | SMRT.BIO
200 yes 431 12
https://smrt.bio/fr/R%C3%A9gions
Régions | SMRT.BIO
200 yes 361 12
https://smrt.bio/fr/Educators
Éducateurs | SMRT.BIO
200 yes 467 12
https://smrt.bio/nl/privacy
Privacyverklaring | SMRT.BIO
200 yes 1119 12
https://smrt.bio/nl/contactus
Contact us | SMRT.BIO
200 yes 568 12
https://smrt.bio/nl/over-ons
Startpagina | SMRT.BIO
200 yes 691 12
https://smrt.bio/fr/blog
Blog | SMRT.BIO
200 yes 315 11
https://smrt.bio/fr/disclaimer
Clause de non-responsabilité | SMRT.BIO
200 yes 757 11
https://smrt.bio/fr/a-propos-de-nous
Page d'accueil | SMRT.BIO
200 yes 757 11
https://smrt.bio/fr/contactus
Contact us | SMRT.BIO
200 yes 641 11
https://smrt.bio/nl/Individuen
Individuen | SMRT.BIO
200 yes 321 10
https://smrt.bio/fr/Particuliers
Particuliers | SMRT.BIO
200 yes 315 9
https://smrt.bio/employers
Employers | SMRT.BIO
200 yes 341 6
https://smrt.bio/individuals
Individuals | SMRT.BIO
200 yes 283 6
https://smrt.bio/regions
Regions | SMRT.BIO
200 yes 275 6
https://smrt.bio/educators
Educators | SMRT.BIO
200 yes 343 3
https://smrt.bio/privacy
Privacy Statement | SMRT.BIO
200 yes 1072 3
https://smrt.bio/ar/Individuals
فرادى | SMRT.BIO
200 yes 253 2
https://smrt.bio/de/Einzelpersonen
Einzelpersonen | SMRT.BIO
200 yes 307 2
https://smrt.bio/es/Individuos
Individuos | SMRT.BIO
200 yes 295 2
https://smrt.bio/hi/Individuals
व्यक्तियों | SMRT.BIO
200 yes 337 2
https://smrt.bio/hr/Individuals
Pojedinci | SMRT.BIO
200 yes 280 2
https://smrt.bio/it/Individui
Individui | SMRT.BIO
200 yes 351 2
https://smrt.bio/ku/Individuals
Kesên | SMRT.BIO
200 yes 324 2
https://smrt.bio/
Individuals | SMRT.BIO
200 yes 283 0
https://smrt.bio/en/image-captcha-refresh/webform_submission_email_form_node_16_add_form 200 no 0 2

Audit your own site — free

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

Scan your site →