Health check

A health check that reads one thing answers one thing

The status code is one reading out of ten, and it is the one that succeeds while the rest of the page fails. Here is the whole list, in the order it is read.

The ten readings, in the order they happen

The order is not a preference. The first reading asks whether there is a response to examine at all, and until that is answered nothing else has a subject. Everything after it examines the response that arrived, so a check that stops at the second line is not a health check, it is a ping with a status code.

Reading The failure it catches Worst it can report
Is there a response A name that resolves nowhere, a refused connection, a request that never returns. Down
The status code The server itself answering an error. The only reading most checks perform. Down
The database A connection error printed inside a page the web server delivered with a 200. Down
A string that must be there The price, the phone number, the add-to-basket that vanished from a page still returning 200. Down
A string that must not A stack trace, a warning, a maintenance notice left in production. Down
A JSON field An endpoint answering HTML because a session expired, or a field renamed by an update. Down
The certificate An expiry nobody diarised, a wrong name, an intermediate the server never sends. Down
The stylesheets A 404 on the file that carries the layout: the page arrives, unreadable. Degraded
Indexability A noindex or a disallow left behind after a staging copy went live. Degraded
Slowness A page that still answers, four seconds later, which most visitors will not wait for. Degraded

Nine rules and the response gate that precedes them, listed and ordered in src/Runner.php, read on 3 August 2026. One class per family, so a reading cannot exist in two places and drift.

Three of them can never mean "down"

The last column of that table is the part a health-check tool usually gets wrong. A ruined layout, a forgotten noindex and a page that has become slow are capped at degraded, whatever the reading itself concluded, because out of service has one meaning here: the visitor does not get the page.

Two costs paid for that ceiling, and the second is the one nobody sees coming. The words wear out: used often enough for a styling problem, "down" stops being read with any urgency, and the night the server really falls the alert is opened with the same shrug. And an appearance fault counted inside the availability figure, so a client was being told their site was unavailable while it was serving every page.

The ceiling, the three prefixes it applies to and the two costs are written at the top of src/Regle/Verdict.php, and a test refuses any of the three coming out as down.

What a health check is not

It is not an audit, and the tools that call themselves health checks are usually doing something else entirely. An SEO crawler will map every internal link and every duplicated title across a whole site; a performance tool will run the page in a browser and profile the scripts. Both go far deeper than this on their own ground, and neither will come back tomorrow.

The distinction worth keeping is between a photograph and a habit. One reading of ten items tells you the state of a page now. The same ten repeated every minute is what turns a finding into a time and a cause, which is the only form in which a finding gets fixed.

Which tool to choose, and where each of the seven wins

Questions about checking a site

What should a website health check actually check?

Whether the visitor gets the page, and then whether the page is the right one. Those are two different questions and most tools only answer the first: a response arrived, the code was 200, done. The second question is where the failures that survive for days live, because a page can arrive complete, valid and wrong.

Why does a health check say everything is fine when it is not?

Because it read the one thing that was working. A web server can answer 200 while the database behind it is refusing connections, while the stylesheet it references is returning 404, while a noindex added last week is quietly removing the site from search. Each of those is invisible to a status code and none of them is exotic.

Is a health check the same thing as monitoring?

No, and the difference is only frequency, which turns out to matter more than depth. A health check is a photograph: it tells you the state now. Monitoring is the same readings repeated on a schedule, which is what turns "the layout is broken" into "the layout broke on Tuesday at 14:12, twenty minutes after the plugin update".

Should everything a check finds be treated as an outage?

No, and merging the two is how alerts become noise. Out of service means the visitor does not get the page. A ruined layout, a forgotten noindex and a page that has become slow are real problems that are not outages, so they are capped at degraded no matter how bad they are, and they stay out of the availability figure.

Do I need an account to run one?

Not for a single address. The free check on this site runs the same detection the paid plan runs, on one page, with no account and nothing installed. What it will not do is come back tomorrow, which is the entire difference between a check and monitoring.

Run the ten on one address

The free check runs the same engine on one address and returns five of these readings, plus the domain expiry. It names the one that failed rather than giving you a score.