Catalog / peterwilliams.studio
65

SEO audit for peterwilliams.studio

Peter Williams Studio Architecture / Landscape

other

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

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

Peter Williams is an architect and landscape designer with 12 years of experience working in the UK, Germany and The Netherlands.  Peter Williams RIBA.

Screenshot of peterwilliams.studio
9
pages crawled
9
indexable pages
0
errors
31
warnings
74
notices
7
orphan pages
0
broken links
Category breakdown
CategoryScoreErrorsWarningsNotices
Agent Readiness 70 0 9 1
Images 70 0 9 7
Links 80 0 6 0
Content 90 0 3 15
Headings 90 0 3 0
Titles 97 0 1 0
Canonical 100 0 0 2
Performance 100 0 0 27
Security 100 0 0 12
Social 100 0 0 1
Structured Data 100 0 0 9
Findings

Warnings (6 rules)

warning Control has no accessible name

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

warning Thin content (low word count)

Rule content.thin · Content · 3 occurrence(s)

warning Images missing alt text

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

warning Orphan page (no internal inlinks)

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

warning Title likely truncated in SERP (too wide)

Rule title.too_long · Titles · 1 occurrence(s)

Notices (14 rules)

notice No llms.txt for AI agents

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

notice Canonical target reachable only via a canonical tag (no inlinks)

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

notice Canonical points to a different URL

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

notice Low text-to-HTML ratio

Rule content.low_ratio · Content · 2 occurrence(s)

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

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

  • https://peterwilliams.studio/houseor — this page reads as difficult (Flesch Reading Ease 47, 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://peterwilliams.studio/housesm — this page reads as difficult (Flesch Reading Ease 48, 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://peterwilliams.studio/nobel — this page reads as difficult (Flesch Reading Ease 48, 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://peterwilliams.studio/stphilips — this page reads as difficult (Flesch Reading Ease 44, 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 · 9 occurrence(s)

  • https://peterwilliams.studio/ — the likely hero/LCP image (yh5baeaaaaalaaaaaabaaeaaaibraa7) 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://peterwilliams.studio/contact — the likely hero/LCP image (yh5baeaaaaalaaaaaabaaeaaaibraa7) 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://peterwilliams.studio/copy-of-peter-williams-studio — the likely hero/LCP image (yh5baeaaaaalaaaaaabaaeaaaibraa7) 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://peterwilliams.studio/houseor — the likely hero/LCP image (yh5baeaaaaalaaaaaabaaeaaaibraa7) 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://peterwilliams.studio/housesm — the likely hero/LCP image (yh5baeaaaaalaaaaaabaaeaaaibraa7) 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://peterwilliams.studio/housest — the likely hero/LCP image (yh5baeaaaaalaaaaaabaaeaaaibraa7) 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://peterwilliams.studio/housevt — the likely hero/LCP image (yh5baeaaaaalaaaaaabaaeaaaibraa7) 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://peterwilliams.studio/nobel — the likely hero/LCP image (yh5baeaaaaalaaaaaabaaeaaaibraa7) 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://peterwilliams.studio/stphilips — the likely hero/LCP image (yh5baeaaaaalaaaaaabaaeaaaibraa7) 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 · 7 occurrence(s)

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

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

notice Missing Open Graph tags

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

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

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

  • https://peterwilliams.studio/ — 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://peterwilliams.studio/contact — 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://peterwilliams.studio/copy-of-peter-williams-studio — 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://peterwilliams.studio/houseor — 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://peterwilliams.studio/housesm — 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://peterwilliams.studio/housest — 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://peterwilliams.studio/housevt — 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://peterwilliams.studio/nobel — 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://peterwilliams.studio/stphilips — 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 · 9 occurrence(s)

  • https://peterwilliams.studio/ — 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://peterwilliams.studio/contact — 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://peterwilliams.studio/copy-of-peter-williams-studio — 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://peterwilliams.studio/houseor — 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://peterwilliams.studio/housesm — 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://peterwilliams.studio/housest — 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://peterwilliams.studio/housevt — 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://peterwilliams.studio/nobel — 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://peterwilliams.studio/stphilips — 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 · 9 occurrence(s)

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

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

Pages (showing 9 of 9)
URLStatusIndexableWordsIn-links
https://peterwilliams.studio/contact
Peter Williams Studio Architecture / Landscape - Contact
200 yes 59 2
https://peterwilliams.studio/
Peter Williams Studio Architecture / Landscape
200 yes 36 0
https://peterwilliams.studio/copy-of-peter-williams-studio
Peter Williams Studio Architecture / Landscape
200 yes 36 0
https://peterwilliams.studio/houseor
Peter Williams Studio Architecture / Landscape - House & Garden OR
200 yes 821 0
https://peterwilliams.studio/housesm
Peter Williams Studio Architecture / Landscape - House & Garden SM
200 yes 818 0
https://peterwilliams.studio/housest
Peter Williams Studio Architecture / Landscape - House ST
200 yes 537 0
https://peterwilliams.studio/housevt
Peter Williams Studio Architecture / Landscape - House & Garden VT
200 yes 934 0
https://peterwilliams.studio/nobel
Peter Williams Studio Architecture / Landscape - Nobel + Brick Barn Gardens
200 yes 1542 0
https://peterwilliams.studio/stphilips
Peter Williams Studio Architecture / Landscape - St Philip's School
200 yes 569 0

Audit your own site — free

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

Scan your site →