HTTP Status Codes for Link Checking: 200, 301, 404, 500 Explained

· 7 min read · Broken Link Checker team

Every time you request a URL, the server answers with a three-digit status code before any content. The first digit is the verdict class: 2xx success, 3xx redirection, 4xx "your request can't be satisfied," 5xx "the server failed." When you're checking links, the real skill is translating codes into decisions: which links are genuinely dead, which just moved, and which only look broken because a site refuses to talk to automated tools.

The five classes in one minute

ClassMeaningFor link checking
1xxInformational, mid-requestYou'll never see these in results.
2xxSuccess — content deliveredLink works.
3xxRedirection — content is elsewhereLink works, but points at an old address.
4xxClient error — request refused or target missingBroken or bot-blocked — the codes differ, see below.
5xxServer errorBroken right now; sometimes temporary.

The codes that actually matter

200  OK — the link works

The server delivered the page. One caveat: a 200 tells you a page exists, not that it's the right page. Sites that respond to any URL with a "not found" screen and status 200 create soft 404s — errors wearing a success code. Those need a human glance (or Google Search Console, which flags them) to catch.

301 / 308  Permanent redirect — works, but update the link

The content has a new address, forever. Visitors get there fine, so this is not an error — but each hop costs a round-trip, and your link is now pointing at history. Where you control the link, update it to the final URL. That's why a good checker lists redirects in their own column instead of mixing them with errors.

302 / 307  Temporary redirect — usually fine, occasionally a symptom

"The content is elsewhere for now." Legitimate for A/B tests, geo-routing, login flows. Suspicious when a years-old link still "temporarily" redirects — that's usually a misconfigured permanent move.

404  Not Found — the classic broken link

The server is healthy; the page isn't there. Deleted content, renamed slugs, typos. This is the code most worth acting on — the full story is in what is a 404 error? and the repair options in how to fix broken links.

410  Gone — removed on purpose

A deliberate, permanent removal — 404's decisive sibling. For your links, treat it exactly like a 404: the target is gone; replace or remove the link. (If you run the site: 410 tells search engines to deindex faster than 404 does.)

403  Forbidden — often not broken at all

The server understood and said "no." Sometimes it's a genuinely private page — but very often it's a firewall (Cloudflare and friends) refusing an automated request while serving humans normally. This is the most common false positive in link checking. Naive tools report a wall of "broken" links on sites that work perfectly in a browser tab. Broken Link Checker puts these in a separate blocked category instead of crying wolf — spot-check them in a normal tab before changing anything.

429  Too Many Requests — you (or your tool) got rate-limited

The server is asking for a slower pace. As a link verdict it means "unknown, try later" — not "dead." Checkers that hammer sites with parallel requests earn 429s and then mislabel them; decent ones let you tune concurrency and mark these as blocked, not broken.

500 / 502 / 503 / 504  Server errors — broken right now

Application crash (500), a dead upstream behind a proxy (502), overload or maintenance (503), upstream timeout (504). For a visitor clicking your link, the result is the same: no content. Unlike a 404, these can be transient — recheck after a day before replacing the link; keep it only if the error persists.

No code at all: DNS failures and timeouts

The bleakest results carry no status code, because no server ever answered. A DNS failure means the domain doesn't resolve — often an expired domain, the terminal stage of link rot. A timeout means the address resolved but the server never responded. Both count as broken for anyone clicking the link.

Cheat sheet: code → verdict → action

ResultVerdictWhat to do with the link
200ValidNothing (unless it's a soft 404).
301, 308RedirectUpdate your link to the final URL when convenient.
302, 307RedirectFine; investigate if it's clearly meant to be permanent.
404, 410BrokenRedirect (your URL) or replace/remove (external).
403, 429BlockedOpen in a normal tab; act only if it fails for humans too.
500–504Broken (maybe temporary)Recheck in a day; replace if it stays down.
DNS / timeoutBrokenDomain likely dead — replace with a live source or an archived copy.

Why honest categories beat a single red list

The difference between a useful link report and a noisy one is exactly this table. Lump 403s and 429s in with 404s and every scan of a modern, firewall-fronted web page "finds" dozens of problems that don't exist — and after the second false alarm, nobody trusts the tool. That's why Broken Link Checker reports four separate buckets — valid, redirect, blocked, broken, each with its status code — so the red list contains only links genuinely worth your time.

See every status code on the page

Scan any page in one click — valid, redirected, blocked, and broken links, each labeled with its real HTTP status. Free, no signup.

Add to Chrome — it's free