Catalog / rhpl.org
65

SEO audit for rhpl.org

Home | Rochester Hills Public Library

otherWix

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

Download Markdown report (feed to ChatGPT / Claude / Cursor)
23
pages crawled
22
indexable pages
0
errors
27
warnings
346
notices
0
orphan pages
0
broken links
Category breakdown
CategoryScoreErrorsWarningsNotices
Agent Readiness 71 0 22 23
Titles 96 0 3 21
Crawlability 99 0 1 0
Meta Description 99 0 1 13
Cache 100 0 0 21
Content 100 0 0 43
Headings 100 0 0 1
Images 100 0 0 47
Links 100 0 0 22
Performance 100 0 0 130
Security 100 0 0 23
Social 100 0 0 1
URL 100 0 0 1
Findings

Warnings (4 rules)

warning Control has no accessible name

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

warning Incomplete/empty response after retries (likely transient — re-crawl)

Rule fetch.incomplete · Crawlability · 1 occurrence(s)

warning Missing meta description

Rule meta_desc.missing · Meta Description · 1 occurrence(s)

warning Title likely truncated in SERP (too wide)

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

Notices (23 rules)

notice Heading levels skip a level

Rule agent.heading_skip · Agent Readiness · 22 occurrence(s)

notice No llms.txt for AI agents

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

  • https://www.rhpl.org/ — no llms.txt found at the site root — add one so AI agents get a curated site summary

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

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

notice Low text-to-HTML ratio

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

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

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

  • https://www.rhpl.org/ — this page reads as very difficult (Flesch Reading Ease 21, 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.rhpl.org/a-brief-history-of-rhpl-s-community-bookmobile — this page reads as very difficult (Flesch Reading Ease 16, 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.rhpl.org/adult-battle-of-the-books — 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://www.rhpl.org/birding — 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.rhpl.org/december-spice-club-five-spice-powder-%E4%BA%94%E9%A6%99%E7%B2%89 — this page reads as very difficult (Flesch Reading Ease 23, 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.rhpl.org/explore-local-history-with-rhpl — this page reads as very difficult (Flesch Reading Ease 20, 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.rhpl.org/march-book-madness-2026 — this page reads as difficult (Flesch Reading Ease 36, 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.rhpl.org/new-early-literacy-bus — this page reads as very difficult (Flesch Reading Ease 17, 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.rhpl.org/outreach-lobby-stops-safety-and-community-for-senior-patrons — this page reads as very difficult (Flesch Reading Ease 18, 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.rhpl.org/partner-libraries-in-libby — 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://www.rhpl.org/reduce-reuse-and-rhpl — this page reads as very difficult (Flesch Reading Ease 24, 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.rhpl.org/rhpl-hosts-panel-to-support-caregivers — this page reads as very difficult (Flesch Reading Ease 12, 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.rhpl.org/rhpl-receives-global-recognition — 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://www.rhpl.org/rochester-hills-public-library-a-family-place-library-building-foundations-for-early-learning — this page reads as very difficult (Flesch Reading Ease 7, 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.rhpl.org/the-dark-side-of-ai-your-essential-guide-to-understanding-the-bumps-in-the-road — this page reads as difficult (Flesch Reading Ease 41, 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.rhpl.org/what-in-the-world-is-dinovember — this page reads as very difficult (Flesch Reading Ease 21, 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.rhpl.org/what-s-otbs-accessible-books-at-rhpl — this page reads as very difficult (Flesch Reading Ease 26, 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.rhpl.org/what-s-your-story — this page reads as very difficult (Flesch Reading Ease 21, 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.rhpl.org/winter-stories-outdoor-play-ideas-for-kids-and-families — this page reads as difficult (Flesch Reading Ease 38, 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.rhpl.org/winter-wonder-library — this page reads as very difficult (Flesch Reading Ease 28, 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.rhpl.org/your-digital-sidekick-how-ai-helps-you-every-day — 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.

notice Multiple <h1> elements

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

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

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

  • https://www.rhpl.org/birding — 1 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.
  • https://www.rhpl.org/explore-local-history-with-rhpl — 1 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.
  • https://www.rhpl.org/new-early-literacy-bus — 1 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.
  • https://www.rhpl.org/outreach-lobby-stops-safety-and-community-for-senior-patrons — 1 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.
  • https://www.rhpl.org/rochester-hills-public-library-a-family-place-library-building-foundations-for-early-learning — 1 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.
  • https://www.rhpl.org/what-in-the-world-is-dinovember — 1 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.
  • https://www.rhpl.org/what-s-your-story — 1 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.
  • https://www.rhpl.org/winter-stories-outdoor-play-ideas-for-kids-and-families — 1 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.
  • https://www.rhpl.org/winter-wonder-library — 1 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 Image alt text is very long (possible keyword stuffing)

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

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

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

notice Internal link has no anchor text / accessible name

Rule links.no_anchor_text · Links · 22 occurrence(s)

notice Meta description too short

Rule meta_desc.too_short · Meta Description · 1 occurrence(s)

notice Missing Open Graph tags

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

notice Large DOM (over 1500 elements) slows rendering & interaction

Rule perf.dom_size_large · Performance · 22 occurrence(s)

  • https://www.rhpl.org/ — the page has 2814 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://www.rhpl.org/a-brief-history-of-rhpl-s-community-bookmobile — the page has 2764 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://www.rhpl.org/adult-battle-of-the-books — the page has 2687 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://www.rhpl.org/birding — the page has 3030 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://www.rhpl.org/december-spice-club-five-spice-powder-%E4%BA%94%E9%A6%99%E7%B2%89 — the page has 2710 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://www.rhpl.org/explore-local-history-with-rhpl — the page has 2674 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://www.rhpl.org/march-book-madness-2026 — the page has 2908 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://www.rhpl.org/new-early-literacy-bus — the page has 2618 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://www.rhpl.org/outreach-lobby-stops-safety-and-community-for-senior-patrons — the page has 2637 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://www.rhpl.org/partner-libraries-in-libby — the page has 2726 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://www.rhpl.org/reduce-reuse-and-rhpl — the page has 2891 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://www.rhpl.org/rhpl-hosts-panel-to-support-caregivers — the page has 2712 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://www.rhpl.org/rhpl-receives-global-recognition — the page has 2667 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://www.rhpl.org/rochester-hills-public-library-a-family-place-library-building-foundations-for-early-learning — the page has 2684 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://www.rhpl.org/spooky-writing-contest-honorable-mention-the-tiger-machine-by-rebecca-bohn — the page has 2897 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://www.rhpl.org/the-dark-side-of-ai-your-essential-guide-to-understanding-the-bumps-in-the-road — the page has 2848 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://www.rhpl.org/what-in-the-world-is-dinovember — the page has 2698 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://www.rhpl.org/what-s-otbs-accessible-books-at-rhpl — the page has 2782 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://www.rhpl.org/what-s-your-story — the page has 2700 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://www.rhpl.org/winter-stories-outdoor-play-ideas-for-kids-and-families — the page has 2802 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://www.rhpl.org/winter-wonder-library — the page has 2724 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
  • https://www.rhpl.org/your-digital-sidekick-how-ai-helps-you-every-day — the page has 2786 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.

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

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

notice Large HTML document

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

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

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

  • https://www.rhpl.org/a-brief-history-of-rhpl-s-community-bookmobile — 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.rhpl.org/adult-battle-of-the-books — 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.rhpl.org/birding — 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.rhpl.org/december-spice-club-five-spice-powder-%E4%BA%94%E9%A6%99%E7%B2%89 — 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.rhpl.org/explore-local-history-with-rhpl — 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.rhpl.org/march-book-madness-2026 — 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.rhpl.org/new-early-literacy-bus — 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.rhpl.org/outreach-lobby-stops-safety-and-community-for-senior-patrons — 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.rhpl.org/partner-libraries-in-libby — 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.rhpl.org/reduce-reuse-and-rhpl — 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.rhpl.org/rhpl-hosts-panel-to-support-caregivers — 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.rhpl.org/rhpl-receives-global-recognition — 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.rhpl.org/rochester-hills-public-library-a-family-place-library-building-foundations-for-early-learning — 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.rhpl.org/spooky-writing-contest-honorable-mention-the-tiger-machine-by-rebecca-bohn — 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.rhpl.org/the-dark-side-of-ai-your-essential-guide-to-understanding-the-bumps-in-the-road — 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.rhpl.org/what-in-the-world-is-dinovember — 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.rhpl.org/what-s-otbs-accessible-books-at-rhpl — 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.rhpl.org/what-s-your-story — 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.rhpl.org/winter-stories-outdoor-play-ideas-for-kids-and-families — 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.rhpl.org/winter-wonder-library — 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.rhpl.org/your-digital-sidekick-how-ai-helps-you-every-day — 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 · 22 occurrence(s)

  • https://www.rhpl.org/ — 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.rhpl.org/a-brief-history-of-rhpl-s-community-bookmobile — 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.rhpl.org/adult-battle-of-the-books — 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.rhpl.org/birding — 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.rhpl.org/december-spice-club-five-spice-powder-%E4%BA%94%E9%A6%99%E7%B2%89 — 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.rhpl.org/explore-local-history-with-rhpl — 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.rhpl.org/march-book-madness-2026 — 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.rhpl.org/new-early-literacy-bus — 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.rhpl.org/outreach-lobby-stops-safety-and-community-for-senior-patrons — 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.rhpl.org/partner-libraries-in-libby — 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.rhpl.org/reduce-reuse-and-rhpl — 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.rhpl.org/rhpl-hosts-panel-to-support-caregivers — 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.rhpl.org/rhpl-receives-global-recognition — 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.rhpl.org/rochester-hills-public-library-a-family-place-library-building-foundations-for-early-learning — 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.rhpl.org/spooky-writing-contest-honorable-mention-the-tiger-machine-by-rebecca-bohn — 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.rhpl.org/the-dark-side-of-ai-your-essential-guide-to-understanding-the-bumps-in-the-road — 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.rhpl.org/what-in-the-world-is-dinovember — 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.rhpl.org/what-s-otbs-accessible-books-at-rhpl — 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.rhpl.org/what-s-your-story — 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.rhpl.org/winter-stories-outdoor-play-ideas-for-kids-and-families — 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.rhpl.org/winter-wonder-library — 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.rhpl.org/your-digital-sidekick-how-ai-helps-you-every-day — 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 · 21 occurrence(s)

notice Missing recommended security headers

Rule security.missing_headers · Security · 22 occurrence(s)

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

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

  • https://www.rhpl.org/birding — 6 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".

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

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

notice Non-ASCII characters in URL path

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

Pages (showing 23 of 23)
URLStatusIndexableWordsIn-links
https://www.rhpl.org/
Home | Rochester Hills Public Library
200 yes 703 22
https://www.rhpl.org/rochester-hills-public-library-a-family-place-library-building-foundations-for-early-learning
Rochester Hills Public Library, a Family Place Library™- Building Foundations for Early Learning
200 yes 838 1
https://www.rhpl.org/what-in-the-world-is-dinovember
What in the World is DINOvember?
200 yes 849 1
https://www.rhpl.org/new-early-literacy-bus
New Early Literacy Bus
200 yes 899 1
https://www.rhpl.org/outreach-lobby-stops-safety-and-community-for-senior-patrons
Outreach Lobby Stops: Safety and Community for Senior Patrons
200 yes 890 1
https://www.rhpl.org/a-brief-history-of-rhpl-s-community-bookmobile
A Brief History of RHPL's Community Bookmobile
200 yes 988 0
https://www.rhpl.org/adult-battle-of-the-books
Adult Battle of the Books
200 yes 731 0
https://www.rhpl.org/birding
Experience Birding with RHPL
200 yes 1177 0
https://www.rhpl.org/december-spice-club-five-spice-powder-%E4%BA%94%E9%A6%99%E7%B2%89
December Spice Club: Five-Spice Powder (五香粉)
200 yes 802 0
https://www.rhpl.org/explore-local-history-with-rhpl
Explore Local History with RHPL!
200 yes 871 0
https://www.rhpl.org/march-book-madness-2026
Youth March Book Madness 2026
200 yes 943 0
https://www.rhpl.org/partner-libraries-in-libby
Partner Libraries in Libby
200 yes 740 0
https://www.rhpl.org/reduce-reuse-and-rhpl
Reduce, Reuse, and RHPL
200 yes 1396 0
https://www.rhpl.org/rhpl-hosts-panel-to-support-caregivers
RHPL Hosts Panel to Support Caregivers
200 yes 896 0
https://www.rhpl.org/rhpl-receives-global-recognition
RHPL Receives Global Recognition
200 yes 893 0
https://www.rhpl.org/spooky-writing-contest-honorable-mention-the-tiger-machine-by-rebecca-bohn
Spooky Writing Contest Honorable Mention: “The Tiger Machine” by Rebecca Bohn
200 yes 1896 0
https://www.rhpl.org/the-dark-side-of-ai-your-essential-guide-to-understanding-the-bumps-in-the-road
The Dark Side of AI: Your Essential Guide to Understanding the Bumps in the Road
200 yes 1382 0
https://www.rhpl.org/what-s-otbs-accessible-books-at-rhpl
What’s OTBS? Accessible Books at RHPL
200 yes 1152 0
https://www.rhpl.org/what-s-your-story
Family Event: What’s Your Story?
200 yes 888 0
https://www.rhpl.org/winter-stories-outdoor-play-ideas-for-kids-and-families
Winter Stories & Outdoor Play Ideas for Kids and Families
200 yes 1015 0
https://www.rhpl.org/winter-wonder-library
Winter Wonder Library
200 yes 782 0
https://www.rhpl.org/your-digital-sidekick-how-ai-helps-you-every-day
Your Digital Sidekick: How AI Helps You Every Day
200 yes 1091 0
https://www.rhpl.org/alzheimer-s-and-dementia-care-partner-support 0 no 0 1

Audit your own site — free

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

Scan your site →