Catalog / mjdoell.com
68

SEO audit for mjdoell.com

Home | Matthew Doell

otherWix

Health 68/100 (fair) · 11 pages crawled · generated 2026-08-26

Download Markdown report (feed to ChatGPT / Claude / Cursor)
Screenshot of mjdoell.com
11
pages crawled
10
indexable pages
0
errors
34
warnings
81
notices
1
orphan pages
0
broken links
Category breakdown
CategoryScoreErrorsWarningsNotices
Meta Description 73 0 10 0
Content 78 0 8 9
Duplicate 86 0 5 0
Headings 89 0 4 0
Rendering 89 0 4 0
Links 97 0 1 4
Structured Data 97 0 1 8
Video 97 0 1 0
Cache 100 0 0 10
Images 100 0 0 3
Performance 100 0 0 20
Security 100 0 0 10
Sitemap 100 0 0 3
Social 100 0 0 10
Titles 100 0 0 3
URL 100 0 0 1
Findings

Warnings (8 rules)

warning Duplicate <title> across pages

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

warning Orphan page (no internal inlinks)

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

warning Content only rendered by JavaScript (invisible to non-JS crawlers & AI)

Rule rendering.js_shell · Rendering · 4 occurrence(s)

  • https://www.mjdoell.com/blog — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
  • https://www.mjdoell.com/post/new-company-office-team-technology-the-first-six-months — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
  • https://www.mjdoell.com/post/plants-vs-zombies-garden-warfare-dev-diary — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
  • https://www.mjdoell.com/ux-simulation-details — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.

warning Schema describes content not visible on the page

Rule schema.hidden_content · Structured Data · 1 occurrence(s)

  • https://www.mjdoell.com/gdc-presentation — a schema name/headline ("Frostbite: Implementing a Scripting Solution for Your Editor") does not appear in the page's visible text — Google's policies prohibit marking up content not visible to readers. This is a heuristic (a static-HTML substring check): JS-rendered or abbreviated names can be false positives, so verify before removing.

warning VideoObject declared but no player element on page

Rule video.no_player · Video · 1 occurrence(s)

Notices (17 rules)

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

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

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

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

  • https://www.mjdoell.com/game-development — 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://www.mjdoell.com/game-development-details — this page reads as difficult (Flesch Reading Ease 32, 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.mjdoell.com/ux-simulation — 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.

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

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

  • https://www.mjdoell.com/ — 2 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 · 3 occurrence(s)

  • https://www.mjdoell.com/ — the likely hero/LCP image (4a9f65_029e0207e61342008df59babb6008e32~mv2.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.mjdoell.com/character-development-samples — the likely hero/LCP image (4a9f65_73c5647b35f946e88f55ba5687f855dd~mv2.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.mjdoell.com/game-development-details — the likely hero/LCP image (4a9f65_a30b8c31c25c4c9ba66e570e30d044d2f000.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.

notice Images without width/height (layout shift / CLS)

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

notice Page has only one internal inlink (fragile crawl path)

Rule links.single_inlink · Links · 3 occurrence(s)

notice Internal link points to a noindex page

Rule links.to_noindex · Links · 1 occurrence(s)

  • https://www.mjdoell.com/ — https://www.mjdoell.com/_files/ugd/4a9f65_9ab5eec5f12f4102bc55efcf160130b7.txt?dn=ms67069562.txt

notice Missing Open Graph tags

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

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

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

  • https://www.mjdoell.com/ — 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.mjdoell.com/character-development-samples — 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.mjdoell.com/game-development — 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.mjdoell.com/game-development-details — 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.mjdoell.com/gdc-presentation — 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.mjdoell.com/ux-simulation — 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.

notice No Last-Modified header (no conditional GET for unchanged pages)

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

  • https://www.mjdoell.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.mjdoell.com/blog — 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.mjdoell.com/character-development-samples — 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.mjdoell.com/game-development — 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.mjdoell.com/game-development-details — 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.mjdoell.com/gdc-presentation — 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.mjdoell.com/post/new-company-office-team-technology-the-first-six-months — 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.mjdoell.com/post/plants-vs-zombies-garden-warfare-dev-diary — 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.mjdoell.com/ux-simulation — 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.mjdoell.com/ux-simulation-details — 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 · 1 occurrence(s)

notice Indexable page not listed in sitemap

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

notice Underscores in URL path (prefer hyphens)

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

Pages (showing 11 of 11)
URLStatusIndexableWordsIn-links
https://www.mjdoell.com/
Home | Matthew Doell
200 yes 181 6
https://www.mjdoell.com/character-development-samples
Characters | Matthew Doell
200 yes 487 6
https://www.mjdoell.com/game-development-details
Games | Matthew Doell
200 yes 446 6
https://www.mjdoell.com/gdc-presentation
Game Development | Matthew Doell
200 yes 97 6
https://www.mjdoell.com/ux-simulation-details
Matthew Doell
200 yes 0 6
https://www.mjdoell.com/post/plants-vs-zombies-garden-warfare-dev-diary
Matthew Doell
200 yes 0 3
https://www.mjdoell.com/game-development
Game Development | Matthew Doell
200 yes 194 1
https://www.mjdoell.com/post/new-company-office-team-technology-the-first-six-months
Matthew Doell
200 yes 0 1
https://www.mjdoell.com/ux-simulation
UX Simulation | Matthew Doell
200 yes 163 1
https://www.mjdoell.com/blog
Blog | Matthew Doell
200 yes 0 0
https://www.mjdoell.com/_files/ugd/4a9f65_9ab5eec5f12f4102bc55efcf160130b7.txt?dn=ms67069562.txt 200 no 0 1

Audit your own site — free

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

Scan your site →