Skip to content
2xKit

HTTP Status Codes Explained Beyond Just 404 and 200

What the five status code ranges mean, and why 301 vs 302 or 401 vs 403 actually matters for how clients behave.

Quick answer

HTTP status codes are grouped into five ranges by their first digit: 1xx is informational, 2xx means success, 3xx means redirection, 4xx means the client made an error, and 5xx means the server failed, and within each range the specific number (like 301 vs 302, or 401 vs 403) changes how browsers and search engines actually behave, not just what error message is shown. Look up any code's exact meaning with the HTTP Status Code Lookup.

Most people only recognize 404 (not found) and 200 (OK), but HTTP defines dozens of status codes, and the specific number a server returns changes real client behavior, browser caching, search engine indexing, retry logic, not just what gets displayed to a user. The first digit tells you the category, and the two digits after it narrow down the exact meaning within that category.

The five ranges at a glance

1xx (informational) codes are rare in everyday web use, they signal that a request was received and processing is continuing, mostly relevant at the protocol level rather than something application code typically handles directly. 2xx (success) codes mean the request worked: 200 is a generic OK, 201 specifically means a new resource was created (common after a POST request), and 204 means success with no content to return (common after a DELETE).

3xx (redirection) tells the client to look elsewhere, and 4xx (client error) means the request itself was the problem, while 5xx (server error) means the server failed to fulfill an otherwise valid request, the distinction matters because it tells a client (and a developer debugging the issue) which side of the connection needs to change something.

301 vs 302: a real, consequential difference

301 means "moved permanently," and search engines and browsers respond by updating their records to point at the new URL going forward, transferring accumulated SEO ranking signals to the new address. 302 means "found" (a temporary redirect), telling clients to fetch the new location this one time without treating it as a permanent replacement, ranking signals stay associated with the original URL. Using 302 for a permanent site migration is a common SEO mistake, since search engines won't fully consolidate the old URL's authority onto the new one the way a 301 tells them to.

401 vs 403: authentication vs authorization

401 (Unauthorized) actually means "you're not authenticated," the server doesn't know who you are, so log in and try again. 403 (Forbidden) means the server knows exactly who you are but you're not allowed to access this specific resource regardless, logging in again won't help. Confusing the two in an API's design is a common source of client-side bugs, code that automatically prompts a re-login on any 401/403 will loop uselessly on a 403 that no amount of re-authentication will resolve.

Other frequently misunderstood codes: 429 means the client is being rate-limited (too many requests, try again later, often with a Retry-After header), and 500 vs 503 distinguishes a generic server-side crash (500) from a server that's deliberately unavailable right now, often due to maintenance or overload (503). When debugging an API integration or checking what a specific status code actually implies for retry logic, the HTTP Status Code Lookup gives the precise definition, and the API Response Viewer helps inspect full request/response details including headers and status together.

Frequently asked questions