developer · October 31, 2026
The HTTP Status Codes You Will Actually Encounter (And What They Mean)
HTTP status codes are a three-digit shorthand for how a server handled a request, and while there are dozens of official codes, a much smaller set shows up constantly in real development work — knowing what they actually mean saves a lot of guessing during debugging.
The five ranges
Status codes are grouped by their first digit, and the range alone tells you the general category of what happened before you even look at the specific number: 1xx is informational, 2xx means success, 3xx means redirection, 4xx means the client made a mistake, and 5xx means the server failed to handle an otherwise valid request.
2xx — success
200 OK is the default success response for most requests. 201 Created specifically indicates a new resource was successfully created, commonly returned after a POST request. 204 No Content indicates success with no body to return, common after a DELETE request. Seeing a 2xx code means the server did what was asked — if something still looks wrong at this point, the bug is more likely in how the response is being used than in the request itself.
3xx — redirection
301 Moved Permanently tells clients, and search engines, that a resource has a new permanent URL, and to update any bookmarks or links accordingly. 302 Found indicates a temporary redirect — the resource is currently elsewhere, but the original URL should still be treated as canonical going forward. Confusing 301 and 302 is a common SEO mistake, since search engines treat a permanent redirect very differently from a temporary one when deciding which URL to index.
4xx — the client made a mistake
400 Bad Request means the server couldn't understand the request as sent, often due to malformed syntax. 401 Unauthorized means authentication is required and missing or invalid. 403 Forbidden means the server understood the request and identified the client, but refuses to authorize it anyway. 404 Not Found is the most familiar of all — the requested resource simply doesn't exist at that URL. 429 Too Many Requests indicates rate limiting — you're sending requests faster than the server allows.
5xx — the server made a mistake
500 Internal Server Error is a generic catch-all for "something broke on the server," usually pointing to an unhandled exception in server-side code rather than anything wrong with the request itself. 502 Bad Gateway indicates a server acting as a gateway or proxy received an invalid response from an upstream server. 503 Service Unavailable typically means the server is temporarily overloaded or down for maintenance, distinct from 500 in that it usually implies the issue is expected to resolve on its own.
Why the distinction between 4xx and 5xx matters for debugging
A 4xx response means the fix is almost always on the client side — the request itself, its headers, or its authentication. A 5xx response means the fix is on the server side, and no amount of adjusting the request will resolve it. Checking which range a failing request falls into is usually the fastest way to know where to actually start looking.
Keep a reference handy
The HTTP Status Code Reference is a searchable, filterable list of every common status code, useful for a quick lookup mid-debugging rather than trying to remember the full list.