Catalog / petebartsch.com
71

SEO audit for petebartsch.com

Peter Bartsch — Staff Product Designer

saas

Health 71/100 (fair) · 37 pages crawled · generated 2026-08-26

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

Staff Product Designer. I make complex enterprise systems usable and adopted at scale — $3.8B platform at Deere, design org built 1→10 at FourKites.

Screenshot of petebartsch.com
37
pages crawled
29
indexable pages
0
errors
29
warnings
248
notices
12
orphan pages
0
broken links
Category breakdown
CategoryScoreErrorsWarningsNotices
Performance 76 0 29 114
Agent Readiness 100 0 0 1
Canonical 100 0 0 24
Content 100 0 0 26
Images 100 0 0 36
Meta Description 100 0 0 14
Structured Data 100 0 0 25
URL 100 0 0 8
Findings

Warnings (1 rules)

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

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

Notices (17 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 · 12 occurrence(s)

notice Canonical points to a different URL

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

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

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

  • https://petebartsch.com/ — this page reads as difficult (Flesch Reading Ease 42, 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://petebartsch.com/case-studies/deere-common-ux — this page reads as difficult (Flesch Reading Ease 39, 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://petebartsch.com/case-studies/deere-common-ux.php — this page reads as difficult (Flesch Reading Ease 39, 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://petebartsch.com/case-studies/deere-mobile — 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://petebartsch.com/case-studies/deere-mobile.php — 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://petebartsch.com/case-studies/deere-nav — this page reads as very difficult (Flesch Reading Ease 13, 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://petebartsch.com/case-studies/deere-nav.php — this page reads as very difficult (Flesch Reading Ease 13, 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://petebartsch.com/case-studies/fourkites-driver — this page reads as very difficult (Flesch Reading Ease 15, 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://petebartsch.com/case-studies/fourkites-driver.php — this page reads as very difficult (Flesch Reading Ease 15, 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://petebartsch.com/case-studies/fourkites-tracking — this page reads as difficult (Flesch Reading Ease 31, 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://petebartsch.com/case-studies/fourkites-tracking.php — this page reads as difficult (Flesch Reading Ease 31, 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://petebartsch.com/case-studies/thios-flywheel — 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://petebartsch.com/case-studies/thios-flywheel.php — 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://petebartsch.com/resume — this page reads as very difficult (Flesch Reading Ease 6, 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://petebartsch.com/resume.php — this page reads as very difficult (Flesch Reading Ease 6, 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 Article page has no publication date (freshness / E-E-A-T)

Rule eeat.no_date · Content · 10 occurrence(s)

  • https://petebartsch.com/case-studies/deere-common-ux — this page is marked up as an article but has no publication date — no datePublished in its JSON-LD and no visible date — add a visible published date and an Article.datePublished so Google can assess freshness
  • https://petebartsch.com/case-studies/deere-common-ux.php — this page is marked up as an article but has no publication date — no datePublished in its JSON-LD and no visible date — add a visible published date and an Article.datePublished so Google can assess freshness
  • https://petebartsch.com/case-studies/deere-nav — this page is marked up as an article but has no publication date — no datePublished in its JSON-LD and no visible date — add a visible published date and an Article.datePublished so Google can assess freshness
  • https://petebartsch.com/case-studies/deere-nav.php — this page is marked up as an article but has no publication date — no datePublished in its JSON-LD and no visible date — add a visible published date and an Article.datePublished so Google can assess freshness
  • https://petebartsch.com/case-studies/fourkites-driver — this page is marked up as an article but has no publication date — no datePublished in its JSON-LD and no visible date — add a visible published date and an Article.datePublished so Google can assess freshness
  • https://petebartsch.com/case-studies/fourkites-driver.php — this page is marked up as an article but has no publication date — no datePublished in its JSON-LD and no visible date — add a visible published date and an Article.datePublished so Google can assess freshness
  • https://petebartsch.com/case-studies/fourkites-tracking — this page is marked up as an article but has no publication date — no datePublished in its JSON-LD and no visible date — add a visible published date and an Article.datePublished so Google can assess freshness
  • https://petebartsch.com/case-studies/fourkites-tracking.php — this page is marked up as an article but has no publication date — no datePublished in its JSON-LD and no visible date — add a visible published date and an Article.datePublished so Google can assess freshness
  • https://petebartsch.com/how-i-work — this page is marked up as an article but has no publication date — no datePublished in its JSON-LD and no visible date — add a visible published date and an Article.datePublished so Google can assess freshness
  • https://petebartsch.com/how-i-work.php — this page is marked up as an article but has no publication date — no datePublished in its JSON-LD and no visible date — add a visible published date and an Article.datePublished so Google can assess freshness

notice Image alt text is very long (possible keyword stuffing)

Rule images.alt_too_long · Images · 14 occurrence(s)

notice Likely hero image lacks fetchpriority=high

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

  • https://petebartsch.com/ — the likely hero/LCP image (pblogo.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://petebartsch.com/blog/ — the likely hero/LCP image (pblogo.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://petebartsch.com/blog/open-source-3d-configurator — the likely hero/LCP image (pblogo.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://petebartsch.com/blog/ux-is-dead-long-live-hx — the likely hero/LCP image (pblogo.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://petebartsch.com/blog/what-vertical-farming-got-wrong — the likely hero/LCP image (pblogo.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://petebartsch.com/case-studies/deere-common-ux — the likely hero/LCP image (pblogo.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://petebartsch.com/case-studies/deere-common-ux.php — the likely hero/LCP image (pblogo.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://petebartsch.com/case-studies/deere-mobile — the likely hero/LCP image (pblogo.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://petebartsch.com/case-studies/deere-mobile.php — the likely hero/LCP image (pblogo.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://petebartsch.com/case-studies/deere-nav — the likely hero/LCP image (pblogo.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://petebartsch.com/case-studies/deere-nav.php — the likely hero/LCP image (pblogo.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://petebartsch.com/case-studies/fourkites-driver — the likely hero/LCP image (pblogo.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://petebartsch.com/case-studies/fourkites-driver.php — the likely hero/LCP image (pblogo.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://petebartsch.com/case-studies/fourkites-mobile — the likely hero/LCP image (pblogo.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://petebartsch.com/case-studies/fourkites-mobile.php — the likely hero/LCP image (pblogo.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://petebartsch.com/case-studies/fourkites-tracking — the likely hero/LCP image (pblogo.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://petebartsch.com/case-studies/fourkites-tracking.php — the likely hero/LCP image (pblogo.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://petebartsch.com/case-studies/gogo-flight-tracker — the likely hero/LCP image (pblogo.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://petebartsch.com/case-studies/here-traffic — the likely hero/LCP image (pblogo.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://petebartsch.com/case-studies/thios — the likely hero/LCP image (pblogo.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://petebartsch.com/case-studies/thios-flywheel — the likely hero/LCP image (pblogo.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://petebartsch.com/how-i-work — the likely hero/LCP image (pblogo.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://petebartsch.com/how-i-work.php — the likely hero/LCP image (pblogo.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://petebartsch.com/resume — the likely hero/LCP image (pblogo.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://petebartsch.com/resume.php — the likely hero/LCP image (pblogo.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 · 22 occurrence(s)

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

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

  • https://petebartsch.com/ — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt

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

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

notice Large HTML document

Rule perf.large_html · Performance · 1 occurrence(s)

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

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

  • https://petebartsch.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://petebartsch.com/blog/ — 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://petebartsch.com/blog/open-source-3d-configurator — 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://petebartsch.com/blog/ux-is-dead-long-live-hx — 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://petebartsch.com/blog/what-vertical-farming-got-wrong — 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://petebartsch.com/case-studies/deere-common-ux — 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://petebartsch.com/case-studies/deere-common-ux.php — 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://petebartsch.com/case-studies/deere-mobile — 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://petebartsch.com/case-studies/deere-mobile.php — 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://petebartsch.com/case-studies/deere-nav — 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://petebartsch.com/case-studies/deere-nav.php — 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://petebartsch.com/case-studies/fourkites-driver — 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://petebartsch.com/case-studies/fourkites-driver.php — 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://petebartsch.com/case-studies/fourkites-mobile — 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://petebartsch.com/case-studies/fourkites-mobile.php — 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://petebartsch.com/case-studies/fourkites-tracking — 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://petebartsch.com/case-studies/fourkites-tracking.php — 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://petebartsch.com/case-studies/gogo-flight-tracker — 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://petebartsch.com/case-studies/here-traffic — 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://petebartsch.com/case-studies/thios — 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://petebartsch.com/case-studies/thios-flywheel — 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://petebartsch.com/how-i-work — 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://petebartsch.com/how-i-work.php — 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://petebartsch.com/resume — 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://petebartsch.com/resume.php — 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 · 29 occurrence(s)

  • https://petebartsch.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://petebartsch.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://petebartsch.com/blog/open-source-3d-configurator — 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://petebartsch.com/blog/ux-is-dead-long-live-hx — 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://petebartsch.com/blog/what-vertical-farming-got-wrong — 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://petebartsch.com/case-studies/deere-common-ux — 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://petebartsch.com/case-studies/deere-common-ux.php — 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://petebartsch.com/case-studies/deere-mobile — 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://petebartsch.com/case-studies/deere-mobile.php — 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://petebartsch.com/case-studies/deere-nav — 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://petebartsch.com/case-studies/deere-nav.php — 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://petebartsch.com/case-studies/fourkites-driver — 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://petebartsch.com/case-studies/fourkites-driver.php — 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://petebartsch.com/case-studies/fourkites-mobile — 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://petebartsch.com/case-studies/fourkites-mobile.php — 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://petebartsch.com/case-studies/fourkites-tracking — 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://petebartsch.com/case-studies/fourkites-tracking.php — 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://petebartsch.com/case-studies/gogo-flight-tracker — 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://petebartsch.com/case-studies/here-traffic — 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://petebartsch.com/case-studies/thios — 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://petebartsch.com/case-studies/thios-flywheel — 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://petebartsch.com/how-i-work — 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://petebartsch.com/how-i-work.php — 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://petebartsch.com/resume — 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://petebartsch.com/resume.php — 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 Article schema missing recommended properties (Top Stories / image carousel)

Rule schema.article_incomplete · Structured Data · 25 occurrence(s)

  • https://petebartsch.com/blog/open-source-3d-configurator — BlogPosting structured data is missing recommended property (image) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/blog/ux-is-dead-long-live-hx — BlogPosting structured data is missing recommended property (image) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/blog/what-vertical-farming-got-wrong — BlogPosting structured data is missing recommended property (image) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/case-studies/deere-common-ux — Article structured data is missing recommended properties (image, datePublished) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/case-studies/deere-common-ux.php — Article structured data is missing recommended properties (image, datePublished) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/case-studies/deere-mobile — Article structured data is missing recommended property (image) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/case-studies/deere-mobile.php — Article structured data is missing recommended property (image) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/case-studies/deere-nav — Article structured data is missing recommended properties (image, datePublished) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/case-studies/deere-nav.php — Article structured data is missing recommended properties (image, datePublished) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/case-studies/fourkites-driver — Article structured data is missing recommended properties (image, datePublished) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/case-studies/fourkites-driver.php — Article structured data is missing recommended properties (image, datePublished) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/case-studies/fourkites-mobile — Article structured data is missing recommended property (image) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/case-studies/fourkites-mobile.php — Article structured data is missing recommended property (image) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/case-studies/fourkites-tracking — Article structured data is missing recommended properties (image, datePublished) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/case-studies/fourkites-tracking.php — Article structured data is missing recommended properties (image, datePublished) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/case-studies/gogo-flight-tracker — Article structured data is missing recommended property (image) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/case-studies/gogo-flight-tracker.php — Article structured data is missing recommended property (image) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/case-studies/here-traffic — Article structured data is missing recommended property (image) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/case-studies/here-traffic.php — Article structured data is missing recommended property (image) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/case-studies/thios — Article structured data is missing recommended property (image) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/case-studies/thios-flywheel — Article structured data is missing recommended property (image) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/case-studies/thios-flywheel.php — Article structured data is missing recommended property (image) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/case-studies/thios.php — Article structured data is missing recommended property (image) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/how-i-work — Article structured data is missing recommended properties (image, datePublished) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
  • https://petebartsch.com/how-i-work.php — Article structured data is missing recommended properties (image, datePublished) — these feed Top Stories and image-carousel eligibility. Google defines no required Article properties, so this is advisory: add author, headline, image and datePublished where they apply.
Pages (showing 37 of 37)
URLStatusIndexableWordsIn-links
https://petebartsch.com/
Peter Bartsch — Staff Product Designer
200 yes 1021 29
https://petebartsch.com/blog/
Blog | Peter Bartsch — Staff Product Designer
200 yes 220 29
https://petebartsch.com/case-studies/deere-common-ux.php
Deere: Forced Adoption, Without the Force | Peter Bartsch Case Study
200 yes 1472 29
https://petebartsch.com/case-studies/deere-mobile.php
John Deere: Running the Farm from a Phone | Peter Bartsch Case Study
200 yes 983 29
https://petebartsch.com/case-studies/deere-nav.php
John Deere: One Nav Across 47 Properties | Peter Bartsch Case Study
200 yes 714 29
https://petebartsch.com/case-studies/fourkites-driver.php
FourKites: Incentive Design | Peter Bartsch Case Study
200 yes 594 29
https://petebartsch.com/case-studies/fourkites-mobile.php
FourKites: One System, Two Mobile Problems | Peter Bartsch Case Study
200 yes 959 29
https://petebartsch.com/case-studies/fourkites-tracking.php
FourKites: Designing for Uncertainty | Peter Bartsch Case Study
200 yes 1097 29
https://petebartsch.com/case-studies/gogo-flight-tracker.php
Gogo: Are We There Yet? | Peter Bartsch Case Study
200 yes 748 29
https://petebartsch.com/case-studies/here-traffic.php
HERE: Real-Time Traffic, Before Live Traffic | Peter Bartsch Case Study
200 yes 783 29
https://petebartsch.com/case-studies/thios-flywheel.php
Thios: The Open-Hardware Flywheel | Peter Bartsch Case Study
200 yes 1180 29
https://petebartsch.com/case-studies/thios.php
Thios: One Source of Truth, Six Surfaces | Peter Bartsch Case Study
200 yes 1386 29
https://petebartsch.com/how-i-work.php
How I Work | Peter Bartsch — Staff Product Designer
200 yes 1448 29
https://petebartsch.com/resume.php
Resume | Peter Bartsch — Staff Product Designer
200 yes 1092 29
https://petebartsch.com/blog/open-source-3d-configurator
I Built an Open-Source 3D Configurator | Peter Bartsch
200 yes 2187 3
https://petebartsch.com/blog/ux-is-dead-long-live-hx
UX Is Dead. Long Live HX. | Peter Bartsch
200 yes 1005 2
https://petebartsch.com/blog/what-vertical-farming-got-wrong
What Vertical Farming Got Wrong | Peter Bartsch
200 yes 1321 2
https://petebartsch.com/case-studies/deere-common-ux
Deere: Forced Adoption, Without the Force | Peter Bartsch Case Study
200 yes 1472 0
https://petebartsch.com/case-studies/deere-mobile
John Deere: Running the Farm from a Phone | Peter Bartsch Case Study
200 yes 983 0
https://petebartsch.com/case-studies/deere-nav
John Deere: One Nav Across 47 Properties | Peter Bartsch Case Study
200 yes 714 0
https://petebartsch.com/case-studies/fourkites-driver
FourKites: Incentive Design | Peter Bartsch Case Study
200 yes 594 0
https://petebartsch.com/case-studies/fourkites-mobile
FourKites: One System, Two Mobile Problems | Peter Bartsch Case Study
200 yes 959 0
https://petebartsch.com/case-studies/fourkites-tracking
FourKites: Designing for Uncertainty | Peter Bartsch Case Study
200 yes 1097 0
https://petebartsch.com/case-studies/gogo-flight-tracker
Gogo: Are We There Yet? | Peter Bartsch Case Study
200 yes 748 0
https://petebartsch.com/case-studies/here-traffic
HERE: Real-Time Traffic, Before Live Traffic | Peter Bartsch Case Study
200 yes 783 0
https://petebartsch.com/case-studies/thios
Thios: One Source of Truth, Six Surfaces | Peter Bartsch Case Study
200 yes 1386 0
https://petebartsch.com/case-studies/thios-flywheel
Thios: The Open-Hardware Flywheel | Peter Bartsch Case Study
200 yes 1180 0
https://petebartsch.com/how-i-work
How I Work | Peter Bartsch — Staff Product Designer
200 yes 1448 0
https://petebartsch.com/resume
Resume | Peter Bartsch — Staff Product Designer
200 yes 1092 0
https://petebartsch.com/Peter-Bartsch-Portfolio.pdf 200 no 0 29
https://petebartsch.com/Peter-Bartsch-Resume.docx 200 no 0 2
https://petebartsch.com/Peter-Bartsch-Resume.epub 200 no 0 2
https://petebartsch.com/Peter-Bartsch-Resume.md 200 no 0 2
https://petebartsch.com/Peter-Bartsch-Resume.odt 200 no 0 2
https://petebartsch.com/Peter-Bartsch-Resume.pdf 200 no 0 2
https://petebartsch.com/Peter-Bartsch-Resume.rtf 200 no 0 2
https://petebartsch.com/Peter-Bartsch-Resume.txt 200 no 0 2

Audit your own site — free

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

Scan your site →