Docs / Monitors / Page health monitors

Page health monitors

Set up a weekly page health scan that checks robots.txt, your sitemap, meta tags, broken internal links and soft 404s, and grades the page A+ to F.
Last updated · 8 min read

A Page health monitor watches the SEO and content hygiene of a page, not just whether it's up. On each run it verifies your robots.txt, sitemap, <head> metadata and internal links, probes for soft 404s, and rolls everything into a letter grade, A+ through F — the same scale as security-posture scans.

Uptime monitoring tells you the page loaded. Page health tells you the things that quietly erode search rankings and user trust between deploys: a template change that dropped the meta description, a restructure that left broken internal links, a sitemap that stopped being valid XML, or an error page that started returning 200. If you're a marketer responsible for organic traffic, or an agency watching client sites, this is the check that catches those regressions before Google (or the client) does.

What a scan checks

Every scan runs these steps in order, all within one 30-second timebox:

  1. robots.txt — is /robots.txt present, does it look like a real robots file (not an HTML page), and which Sitemap: directives does it declare?
  2. Sitemap — is the sitemap reachable and well-formed XML, and how many <loc> URLs does it list? The scan prefers a sitemap declared in robots.txt; otherwise it tries /sitemap.xml.
  3. The target page — fetches your URL and parses the <head> for a <title>, a meta description, a canonical link, a favicon declaration and a responsive viewport tag.
  4. Broken links (optional) — collects same-host links from the page and verifies a capped number of them with a lightweight HEAD request (falling back to GET where the server rejects HEAD). Any link answering HTTP 400+ or failing to connect is reported as broken.
  5. Soft-404 probe — requests a random path that cannot exist (e.g. /completestatus-404-probe-a1b2c3…). If the site answers 200 instead of 404/410, that's a soft 404: search engines will crawl and index your error page as real content.

Why each item matters

  • robots.txt guides crawlers and is where you declare your sitemap. Missing is a low finding; present-but-invalid (usually an HTML error page served at /robots.txt) is medium, because a garbage robots file can confuse crawlers.
  • Sitemap unreachable or malformed is medium — search engines silently stop discovering your pages through it.
  • <title> missing is high. It's the single most important on-page element for search and accessibility.
  • Meta description missing is medium — you lose control of your search snippet.
  • Canonical link missing is low; without it, URL variants (query strings, trailing slashes) can compete as duplicate content.
  • Viewport meta tag missing is low and hurts mobile rendering and mobile-first indexing.
  • Favicon missing is low — cosmetic, but visible in every browser tab, bookmark and search result.
  • Broken internal links are critical — they waste crawl budget, leak link equity and send users to dead ends.
  • Soft 404 is medium — deleted pages that return 200 keep getting indexed and dilute your site in search results.

Create a page health monitor

  1. Go to /monitors/create and choose the Page health type.
  2. Fill in the shared fields — project, name, the full target URL (the page to grade, e.g. your homepage), and the ownership attestation.
  3. Set the check interval. Pick Every week — see the recommended interval below.
  4. Fill in the page-health fields:
    • Max pages to crawl (1–50, default 20) — how many internal links the scan verifies for broken-link detection. This is the crawl's scope: the scan collects same-host links from your page, de-duplicates them, and checks only the first N. A higher cap catches more broken links but makes the scan slower and sends more requests to your site; 50 is a hard ceiling that no configuration can exceed. If your page has more unique internal links than the cap, links beyond it are simply not verified on that run.
    • Check internal links (default on) — untick to skip the broken-link crawl entirely and only run the robots/sitemap/meta/soft-404 checks. Useful for very large or rate-limited sites.
  5. Save. The first scan runs on the next scheduler tick.

The whole-site quick-add at /monitors/site can also create a page health monitor for you (it's the one optional check in the list), alongside uptime, SSL, headers, DNS and the rest.

Recommended interval: weekly

Page health is deliberately heavier than an uptime ping — one scan can make up to ~50 requests to your site. And the things it measures change with deploys and content edits, not minute to minute. Every week catches regressions within days of a release while staying polite to your server. If you ship daily and want faster feedback, Every day is the sensible maximum; anything faster is wasted requests.

Tip: After a deploy, don't wait for the schedule — open the monitor and click Check now to re-scan immediately.

The crawl is read-only and respects robots.txt

Page health scans follow the same guardrails as every CompleteStatus check:

  • Read-only — only GET and HEAD requests, no forms submitted, no payloads sent.
  • robots.txt is respected — any internal link whose path your robots.txt disallows for our bot is skipped, never fetched.
  • Same-host only — the scan verifies links on your host; external links are ignored.
  • Hard-capped — at most 50 links per scan, regardless of configuration. Never an unbounded crawl.
  • Identified — all requests use the CompleteStatusBot/1.0 User-Agent, so you can recognise (or allow) it in your logs and WAF.

How the grade is calculated

Every scan starts at 100 and subtracts points per finding, by severity: critical −25, high −15, medium −10, low −5. The score maps to a grade:

Score Grade
95–100 A+
90–94 A
80–89 B
70–79 C
60–69 D
below 60 F

So a page with only a missing favicon scores 95 (A+), while one broken link plus a missing meta description drops you to 65 (D).

Pass, fail and alerts

The check itself fails only on critical findings: the target page being unreachable (or returning HTTP 400+), or one or more broken internal links. Everything else — missing meta tags, an absent robots.txt or sitemap, a soft 404 — lowers the grade but is advisory: the check still passes, so you won't be paged over a missing favicon.

Failing scans follow the normal confirmed-down flow: after 2 consecutive failed checks an incident opens and down alerts go to your channels. Note that with a weekly interval, confirmation takes two cycles — one more reason to hit Check now after fixing something. See Alert channels for routing.

Reading your results

Open the monitor from /monitors and the Page health panel shows:

  • The grade badge with the numeric score, plus a summary line: links checked, broken links found, and the finding count.
  • A checklist of eight pass/fail tiles — robots.txt, sitemap (with its URL count), title, meta description, canonical, viewport, favicon, and "Proper 404" (green when missing pages correctly return 404/410, red on a soft 404).
  • Any sitemaps declared in your robots.txt.
  • A broken internal links table with each dead URL and the status it returned (or error for connection failures).
  • The full findings list, sorted critical → low, each with the issue and what to do about it.

Troubleshooting

"0 links checked" or far fewer than expected

Usually robots.txt. The crawl skips every link your robots.txt disallows for CompleteStatusBot (or for *) — a broad Disallow: / means nothing gets verified, and the panel will show few or zero links checked. Check your robots rules, and remember the count is also capped by Max pages to crawl and the 30-second timebox: on a slow site the scan checks as many links as it can before time runs out.

Broken-link false positives

The scan verifies links with HEAD and automatically retries with GET when a server answers 405/501, so plain HEAD-rejection is already handled. The remaining false positives are almost always the server treating the bot differently from a browser:

  • WAF or bot protection returning 403 to the CompleteStatusBot/1.0 User-Agent — allowlist the UA.
  • Rate limiting returning 429 when many links are checked in quick succession — lower Max pages to crawl or allowlist the bot.
  • Login-required pages returning 401/403 — those links genuinely can't be verified from outside; consider excluding them via robots.txt (the scan will then skip them).

A status of error (rather than a number) in the broken-links table means the connection itself failed — often DNS or a firewall rather than a dead page.

JS-only pages report missing tags and no links

The scan parses the HTML your server returns; it does not execute JavaScript. If your page is client-rendered (React/Vue SPA with an empty HTML shell), the scan can't see the title, meta description or links that JavaScript injects — you'll get missing-metadata findings and zero links checked. That's worth knowing anyway: search engine crawlers see the same empty shell first. Server-side rendering or prerendering fixes both the findings and your SEO.

Soft 404 reported but my 404 page "works"

The probe only looks at the HTTP status code. If your custom error page looks like a 404 but the server sends 200 OK (a common misconfiguration with SPA catch-all routes and some CMS error pages), that's exactly the soft 404 the finding describes. Configure the error route to return a real 404 (or 410) status.

Related guides

Ready to try it?
10 monitors, security grading and email-authentication checks on the free tier — commercial use allowed.
Start free Run a free check
Uptime is table stakes. We watch the rest — security headers, email authentication, certs and DNS, with the fix attached.
Start free
Company
© 2026 CompleteStatus. All rights reserved. CompleteStatus — operated in the United States · support@completestatus.com