First CH AppsSmall apps that need a server

日本語

First CH Apps / Bulk HTTP Status Check

Bulk HTTP Status Check

Paste one URL per line (up to 20) and our server fetches them all, listing the HTTP status, response time and the final URL after redirects. Handy for checking key pages after a relaunch, or for pruning a prospect or link list.

To see every hop of a single URL's redirect chain, use the Redirect Chain Tracer; to grade the header values, use the Security Header Grader. This page answers three questions in bulk: is it alive, is it fast, and where does it end up?

There is no scheduled monitoring — this is a one-off bulk check. Because neither the URLs nor the results are stored, we cannot send alerts or keep a history.

How to read it

The status is the one returned at the end of the chain (we follow up to five redirects and report the final code). Rows that redirected show their final URL.

Response times are measured from our server (Cloudflare Workers) and exclude the body, which we never download — we read the status and close the connection. They vary by network and region, so compare URLs with each other rather than reading absolute values.

404 (gone missing) and 410 (deleted) usually mean a redirect was never set up; 403 means our server was refused. Some sites open fine in a browser but return 403 to automated requests (bot protection).

Each URL times out after 8 seconds and follows at most 5 redirects. Only public GET requests are made — no cookies, no credentials.

A single run handles up to 20 URLs (to stay inside the free-tier subrequest limit). If the budget runs out, the remaining rows are labelled “not checked” rather than silently dropped.

SERVER PROCESSING — what we send and what we keep

Sent: only the list of URLs you paste. Our server (Cloudflare Workers) fetches each one with a public GET. No cookies and no credentials are sent.

Stored: nothing. The check lives entirely inside one request and writes neither the URLs nor the results to any database (no KV, no D1). It leaves memory when the request ends. There is no login and no account.

Returned: the status, response time and final URL for each entry. We never read the page body (not one byte) and never re-serve it — this app cannot be used to browse other sites through us.

Note: there is no scheduled monitoring (no stored results means no alerts and no history). URLs pointing at internal networks, localhost or private IPs are rejected.

Use it as an API

POST /status-check/api/check with JSON ({"urls": ["https://example.com/", "https://example.net/"]}) and you get the same results back as JSON. Up to 10 URLs per request (the JavaScript on this page calls the same endpoint in batches of 5).