HTTP Status Codes
Complete reference for every HTTP status code. What they mean, why they happen, and how to fix them.
1xx Informational
The request was received and the process is continuing.
The server has received the request headers and the client should proceed to send the request body.
The server is switching to a different protocol as requested by the client.
The server has received the request and is processing it, but no response is available yet.
The server sends preliminary headers to allow the browser to start preloading resources before the final response.
2xx Success
The request was successfully received, understood, and accepted.
The request has succeeded. The meaning depends on the HTTP method used.
The request has been fulfilled and a new resource has been created.
The server successfully processed the request but is not returning any content.
The server is delivering only part of the resource because the client sent a Range header — used for video streaming, resumable downloads, and progressive loading.
3xx Redirection
Further action needs to be taken to complete the request.
The resource has been permanently moved to a new URL — the gold-standard redirect for URL changes, domain migrations, and HTTPS upgrades.
The resource temporarily lives at a different URL — used for A/B tests, login flows, geo redirects, and short-term maintenance. Originally the URL should be restored.
The response to the request can be found under a different URL using a GET method.
The resource has not been modified since the last request. The client can use its cached version.
The resource temporarily resides at a different URL. The request method must not change.
The resource has permanently moved and the request method must not change.
4xx Client Error
The request contains bad syntax or cannot be fulfilled by the server.
The server could not understand the request due to invalid syntax or malformed data.
Authentication is required and has failed or has not been provided.
The server understood the request but refuses to fulfil it — different from 401 in that authentication won't help; you simply don't have permission.
The requested resource could not be found on the server — the page may have been deleted, moved, or the URL was typed incorrectly.
The HTTP method used is not supported for the requested resource.
The server timed out waiting for the request from the client.
The resource has been permanently removed and will not return — the explicit "deleted forever" status code, processed by search engines faster than 404.
The request body is larger than the server is willing to accept.
The URL provided was too long for the server to process.
The server refuses to brew coffee because it is, permanently, a teapot.
The server understands the request but cannot process the contained instructions.
The client has sent too many requests in a given time window — the canonical rate-limiting and abuse-protection status code.
The resource is unavailable due to legal reasons — government censorship, court orders, DMCA takedowns, or regional compliance restrictions.
5xx Server Error
The server failed to fulfil an apparently valid request.
The server encountered an unexpected condition that prevented it from fulfilling the request — the generic catch-all for any unhandled server-side failure.
A server acting as a gateway or proxy received an invalid response from the upstream server — common with Nginx, Cloudflare, and load balancers.
The server is temporarily unable to handle the request — used for planned maintenance, overload, or rate limiting. Implies the server will recover.
A proxy or gateway server didn't receive a response from the upstream server in time — the "slow backend" failure mode that's different from 502 (broken backend).
The server cannot store the representation needed to complete the request.
The server detected an infinite loop while processing the request.
The client needs to authenticate to gain network access (e.g., captive portal).
The origin web server has refused or is not responding to Cloudflare's connection.
Cloudflare could not negotiate a TCP handshake with the origin server.
Cloudflare could not reach the origin server, likely due to DNS issues.
Cloudflare established a TCP connection to the origin but the origin did not reply with an HTTP response in time.
Free Website Tools
Test your site for common issues that cause HTTP errors:
HTTP Status Codes FAQ
Common questions about HTTP response codes