Bulk HTTP Status Code & Server Response Checker
Data checkedHTTP Status
How to use the bulk HTTP status code checker
Back to the toolEach URL is requested from our servers, and every redirect is followed to its end.
- 01
Enter the URLs to check
Single mode checks one address and runs on Enter. Switch to Bulk to paste a list, one URL per line, up to 30 per run. A bare domain works too; it is expanded before the request goes out. Paste old addresses from a migration together: every row then shows where each one lands now.
- 02
Choose the URL normalization level
Normalize URL rewrites each address before fetching. Full URL keeps the path and query but drops tracking parameters and the fragment; No query removes the query string; Domain only keeps the domain. So the table can report an address other than the one pasted; keep the full address when a redirect depends on the query string.
- 03
Read the HTTP status column
Rows appear as each URL finishes, so one slow host never holds up the ones behind it. HTTP status is the code the address you pasted answered with — one code, not the whole journey: 200 means the page was served, 301 or 302 means it points somewhere else, ERR means nothing answered at all. Where a redirect ends up is in the detail panel, one hop per line.
- 04
Inspect a row and export the results
View at the end of a row opens the detail panel: every hop numbered, each with its own status code, the part a single column can only summarise. Copy table copies the rows tab-separated; Export CSV writes them to a file. Both carry one extra column, Hop URLs: every address in the chain, not just the two ends.
How to read the status code and redirect report
A row reads left to right: the address checked, then what happened to it.
Result table columns
- URL
- The address exactly as it was checked — after normalization, not always what you typed.
- HTTP status
- The code the address you pasted answered with — the first hop, one code, no destination address. ERR means nothing answered at all; the rest of the chain is in the detail panel.
- Result
- Whether the check itself finished. A URL that timed out or was refused says so here, as a plain badge, not a control. The button that re-runs the row sits in Actions.
- Actions
- Buttons, not answers; the badge beside it already gave the answer. A row with hops to show gets View; a row that failed gets a retry that re-runs only that URL. An empty cell means nothing to expand.
Status code reference
- 200 OK
- The page exists and was served. Nothing to do.
- 301 Moved Permanently
- A permanent move. Ranking signals pass to the target and the old URL eventually leaves the index: the right code for a move you intend to keep.
- 302 Found
- A temporary move. The original URL stays indexed and the target is treated as a detour, which makes this the wrong code for a permanent change.
- 403 Forbidden
- The server refused. Often a bot filter rather than a broken page, so the same URL may open fine in your browser.
- 404 Not Found
- Nothing is behind the URL, and the server does not say whether that is deliberate or a mistake.
- 410 Gone
- The same absence as 404, stated on purpose. Search engines drop the URL faster because of it.
- 429 Too Many Requests
- You asked too often. The site is rate limiting, not failing: wait, then retry the row.
- 503 Service Unavailable
- Overloaded or in maintenance. A crawler that meets this repeatedly slows its crawl rate across the whole site.