Catalog / phishtrainer.com
65

SEO audit for phishtrainer.com

PhishTrainer | Swiss Phishing Simulation for SMEs | bexxo

saas

Health 65/100 (fair) · 13 pages crawled · generated 2026-08-26

Download Markdown report (feed to ChatGPT / Claude / Cursor)

PhishTrainer helps SMEs launch realistic phishing simulations, measure employee reactions and strengthen their vigilance.

Screenshot of phishtrainer.com
13
pages crawled
13
indexable pages
0
errors
18
warnings
110
notices
0
orphan pages
0
broken links
Category breakdown
CategoryScoreErrorsWarningsNotices
Performance 70 0 13 39
Hreflang 88 0 5 0
Agent Readiness 100 0 0 1
Cache 100 0 0 13
Canonical 100 0 0 1
Content 100 0 0 17
Images 100 0 0 13
Meta Description 100 0 0 5
Security 100 0 0 13
Structured Data 100 0 0 8
Findings

Warnings (3 rules)

warning hreflang set has no self-reference

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

warning hreflang has no return link (not reciprocal)

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

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

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

Notices (12 rules)

notice No llms.txt for AI agents

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

notice Page served uncached (no-store/private or CDN bypass)

Rule cache.not_cacheable · Cache · 13 occurrence(s)

notice Canonical points to a different URL

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

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

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

  • https://www.phishtrainer.com/ — this page reads as difficult (Flesch Reading Ease 37, 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://www.phishtrainer.com/en/ — this page reads as difficult (Flesch Reading Ease 37, 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://www.phishtrainer.com/en/a-propos.html — this page reads as very difficult (Flesch Reading Ease 29, 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://www.phishtrainer.com/en/tarifs.html — this page reads as difficult (Flesch Reading Ease 50, 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 Likely hero image lacks fetchpriority=high

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

  • https://www.phishtrainer.com/ — the likely hero/LCP image (logo-dark.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://www.phishtrainer.com/de/ — the likely hero/LCP image (logo-dark.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://www.phishtrainer.com/de/a-propos.html — the likely hero/LCP image (logo-dark.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://www.phishtrainer.com/de/tarifs.html — the likely hero/LCP image (logo-dark.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://www.phishtrainer.com/en/ — the likely hero/LCP image (logo-dark.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://www.phishtrainer.com/en/a-propos.html — the likely hero/LCP image (logo-dark.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://www.phishtrainer.com/en/tarifs.html — the likely hero/LCP image (logo-dark.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://www.phishtrainer.com/fr/ — the likely hero/LCP image (logo-dark.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://www.phishtrainer.com/fr/a-propos.html — the likely hero/LCP image (logo-dark.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://www.phishtrainer.com/fr/tarifs.html — the likely hero/LCP image (logo-dark.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://www.phishtrainer.com/it/ — the likely hero/LCP image (logo-dark.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://www.phishtrainer.com/it/a-propos.html — the likely hero/LCP image (logo-dark.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://www.phishtrainer.com/it/tarifs.html — the likely hero/LCP image (logo-dark.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 · 13 occurrence(s)

notice Legacy <meta name=keywords> tag present (Google ignores it)

Rule meta.keywords_present · Content · 13 occurrence(s)

notice Meta description too long

Rule meta_desc.too_long · Meta Description · 5 occurrence(s)

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

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

  • https://www.phishtrainer.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://www.phishtrainer.com/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://www.phishtrainer.com/de/a-propos.html — 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://www.phishtrainer.com/de/tarifs.html — 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://www.phishtrainer.com/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://www.phishtrainer.com/en/a-propos.html — 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://www.phishtrainer.com/en/tarifs.html — 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://www.phishtrainer.com/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://www.phishtrainer.com/fr/a-propos.html — 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://www.phishtrainer.com/fr/tarifs.html — 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://www.phishtrainer.com/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://www.phishtrainer.com/it/a-propos.html — 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://www.phishtrainer.com/it/tarifs.html — 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://www.phishtrainer.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://www.phishtrainer.com/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://www.phishtrainer.com/de/a-propos.html — 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://www.phishtrainer.com/de/tarifs.html — 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://www.phishtrainer.com/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://www.phishtrainer.com/en/a-propos.html — 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://www.phishtrainer.com/en/tarifs.html — 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://www.phishtrainer.com/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://www.phishtrainer.com/fr/a-propos.html — 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://www.phishtrainer.com/fr/tarifs.html — 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://www.phishtrainer.com/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://www.phishtrainer.com/it/a-propos.html — 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://www.phishtrainer.com/it/tarifs.html — 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.
Pages (showing 13 of 13)
URLStatusIndexableWordsIn-links
https://www.phishtrainer.com/en/
PhishTrainer | Swiss Phishing Simulation for SMEs | bexxo
200 yes 1071 7
https://www.phishtrainer.com/de/
PhishTrainer | Schweizer Phishing-Simulation fuer KMU | bexxo
200 yes 1064 7
https://www.phishtrainer.com/fr/
PhishTrainer | Simulation de phishing suisse pour PME | bexxo
200 yes 1203 7
https://www.phishtrainer.com/it/
PhishTrainer | Simulazione di phishing svizzera per PMI | bexxo
200 yes 1160 7
https://www.phishtrainer.com/en/a-propos.html
About | PhishTrainer by bexxo - Swiss phishing simulation
200 yes 639 7
https://www.phishtrainer.com/en/tarifs.html
Pricing | PhishTrainer - Phishing simulation for SMEs
200 yes 932 7
https://www.phishtrainer.com/de/a-propos.html
Ueber uns | PhishTrainer by bexxo - Schweizer Phishing-Simulation
200 yes 618 6
https://www.phishtrainer.com/de/tarifs.html
Preise und Tarife | PhishTrainer - Phishing-Simulation fuer KMU
200 yes 896 6
https://www.phishtrainer.com/fr/a-propos.html
À propos | PhishTrainer by bexxo - Simulation de phishing suisse
200 yes 718 6
https://www.phishtrainer.com/fr/tarifs.html
Prix et tarifs | PhishTrainer - Simulation de phishing pour PME
200 yes 1038 6
https://www.phishtrainer.com/it/a-propos.html
Chi siamo | PhishTrainer by bexxo - Simulazione di phishing svizzera
200 yes 691 6
https://www.phishtrainer.com/it/tarifs.html
Prezzi e tariffe | PhishTrainer - Simulazione di phishing per PMI
200 yes 1009 6
https://www.phishtrainer.com/
PhishTrainer | Swiss Phishing Simulation for SMEs | bexxo
200 yes 1071 0

Audit your own site — free

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

Scan your site →