Catalog / torifoster.com
65

SEO audit for torifoster.com

Tori Foster

otherSquarespace

Health 65/100 (fair) · 14 pages crawled · generated 2026-07-29

Download Markdown report (feed to ChatGPT / Claude / Cursor)
Screenshot of torifoster.com
14
pages crawled
14
indexable pages
0
errors
41
warnings
127
notices
4
orphan pages
0
broken links
Category breakdown
CategoryScoreErrorsWarningsNotices
Performance 70 0 14 42
Content 79 0 10 15
Images 85 0 7 14
Meta Description 89 0 5 9
Links 91 0 4 0
Canonical 98 0 1 1
Agent Readiness 100 0 0 1
Headings 100 0 0 3
Security 100 0 0 14
Sitemap 100 0 0 10
Social 100 0 0 14
Titles 100 0 0 4
Findings

Warnings (6 rules)

warning Interior page canonicalizes to the homepage

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

  • https://www.torifoster.com/portfolio — this interior page canonicalizes to the homepage (https://www.torifoster.com/) — Google will treat the homepage as authoritative and drop this page from search. Point the canonical at the page's own URL.

warning Images missing alt text

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

warning Orphan page (no internal inlinks)

Rule links.orphan · Links · 4 occurrence(s)

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

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

Notices (15 rules)

notice No llms.txt for AI agents

Rule agent.llms_txt_missing · Agent Readiness · 1 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 · 5 occurrence(s)

  • https://www.torifoster.com/ — this page reads as difficult (Flesch Reading Ease 35, 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.torifoster.com/contiguous-earth — this page reads as difficult (Flesch Reading Ease 40, 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.torifoster.com/mackenzie-place — this page reads as difficult (Flesch Reading Ease 49, 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.torifoster.com/portfolio — this page reads as difficult (Flesch Reading Ease 35, 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.torifoster.com/robotic-herd — 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 Multiple <h1> elements

Rule h1.multiple · Headings · 3 occurrence(s)

notice Likely hero image lacks fetchpriority=high

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

  • https://www.torifoster.com/ — the likely hero/LCP image (image-asset.jpeg) 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.torifoster.com/cadence/ — the likely hero/LCP image (image-asset.jpeg) 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.torifoster.com/contiguous-earth — the likely hero/LCP image (2+continguous+earth+mockup.jpg) 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.torifoster.com/continuous-new-york/ — the likely hero/LCP image (6+tori+foster.jpg) 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.torifoster.com/dundas-square/ — the likely hero/LCP image (image-asset.jpeg) 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.torifoster.com/iterations/ — the likely hero/LCP image (iterations_foster1.jpg) 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.torifoster.com/mackenzie-place — the likely hero/LCP image (mackenzie+place+mockup.jpg) 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.torifoster.com/movement-portraits/ — the likely hero/LCP image (movement_foster1_detail.jpg) 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.torifoster.com/one-kilometre/ — the likely hero/LCP image (onekilometre_foster1.jpg) 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.torifoster.com/portfolio — the likely hero/LCP image (image-asset.jpeg) 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.torifoster.com/primaries/ — the likely hero/LCP image (primaries_foster0.jpg) 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.torifoster.com/pulse-crowds/ — the likely hero/LCP image (image-asset.jpeg) 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.torifoster.com/robotic-herd — the likely hero/LCP image (robotic+herd+mockup.jpg) 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.torifoster.com/the-impossibility-of-understanding-in-the-path-of-a-torontonian/ — the likely hero/LCP image (image-asset.jpeg) 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 · 14 occurrence(s)

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

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

  • https://www.torifoster.com/ — 59 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://www.torifoster.com/cadence/ — 6 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://www.torifoster.com/contiguous-earth — 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://www.torifoster.com/continuous-new-york/ — 8 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://www.torifoster.com/dundas-square/ — 2 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://www.torifoster.com/iterations/ — 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://www.torifoster.com/mackenzie-place — 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://www.torifoster.com/movement-portraits/ — 20 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://www.torifoster.com/one-kilometre/ — 6 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://www.torifoster.com/portfolio — 59 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://www.torifoster.com/primaries/ — 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://www.torifoster.com/pulse-crowds/ — 2 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://www.torifoster.com/robotic-herd — 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://www.torifoster.com/the-impossibility-of-understanding-in-the-path-of-a-torontonian/ — 8 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 Last-Modified header (no conditional GET for unchanged pages)

Rule perf.no_last_modified · Performance · 14 occurrence(s)

  • https://www.torifoster.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.torifoster.com/cadence/ — 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.torifoster.com/contiguous-earth — 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.torifoster.com/continuous-new-york/ — 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.torifoster.com/dundas-square/ — 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.torifoster.com/iterations/ — 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.torifoster.com/mackenzie-place — 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.torifoster.com/movement-portraits/ — 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.torifoster.com/one-kilometre/ — 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.torifoster.com/portfolio — 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.torifoster.com/primaries/ — 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.torifoster.com/pulse-crowds/ — 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.torifoster.com/robotic-herd — 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.torifoster.com/the-impossibility-of-understanding-in-the-path-of-a-torontonian/ — 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 Indexable page not listed in sitemap

Rule sitemap.orphan_not_listed · Sitemap · 10 occurrence(s)

notice Title tag is identical to the H1 (missed keyword variation)

Rule title.same_as_h1 · Titles · 2 occurrence(s)

notice Title is very short

Rule title.too_short · Titles · 2 occurrence(s)

Pages (showing 14 of 14)
URLStatusIndexableWordsIn-links
https://www.torifoster.com/
Tori Foster
200 yes 1534 14
https://www.torifoster.com/cadence/
Cadence — Tori Foster
200 yes 17 2
https://www.torifoster.com/continuous-new-york/
Continuous New York — Tori Foster
200 yes 19 2
https://www.torifoster.com/dundas-square/
Dundas Square — Tori Foster
200 yes 13 2
https://www.torifoster.com/iterations/
Iterations — Tori Foster
200 yes 35 2
https://www.torifoster.com/movement-portraits/
Movement Portraits — Tori Foster
200 yes 31 2
https://www.torifoster.com/one-kilometre/
One Kilometre, Two Minutes — Tori Foster
200 yes 17 2
https://www.torifoster.com/primaries/
Primaries — Tori Foster
200 yes 35 2
https://www.torifoster.com/pulse-crowds/
Downsview Station — Tori Foster
200 yes 13 2
https://www.torifoster.com/the-impossibility-of-understanding-in-the-path-of-a-torontonian/
The Impossibility of Understanding in the Path of a Torontonian — Tori Foster
200 yes 19 2
https://www.torifoster.com/contiguous-earth
Contiguous Earth — Tori Foster
200 yes 150 0
https://www.torifoster.com/mackenzie-place
Mackenzie Place — Tori Foster
200 yes 498 0
https://www.torifoster.com/portfolio
Tori Foster
200 yes 1534 0
https://www.torifoster.com/robotic-herd
Robotic Herd — Tori Foster
200 yes 363 0

Audit your own site — free

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

Scan your site →