HTTP Status Codes

Every HTTP response code, explained in plain English — what it means, when it happens, and how to fix it. Search by number or keyword.

1xxInformational

The request was received and the process is continuing.

100
Continue
The server received the request headers and the client should send the body. Sent after an Expect: 100-continue.
101
Switching Protocols
The server is switching protocols as the client asked — e.g. upgrading to WebSocket.
102
Processing
WebDAV: the server has accepted the request but has not completed it yet.
103
Early Hints
Lets the browser start preloading resources (Link headers) while the final response is prepared.

2xxSuccess

The request was received, understood and accepted.

200
OK
The standard success response. The body contains the requested resource.
201
Created
The request succeeded and a new resource was created — typically after a POST. Look for a Location header.
202
Accepted
The request was accepted for processing but is not complete (async/queued work).
203
Non-Authoritative Information
Success, but the returned metadata was modified by a proxy.
204
No Content
Success with no body to return — common for DELETE or a saved form with no redirect.
205
Reset Content
Success; the client should reset the document view (e.g. clear a form).
206
Partial Content
The server is delivering only part of the resource (a Range request) — used for resumable downloads and video streaming.
207
Multi-Status
WebDAV: the body contains multiple status codes for multiple operations.
226
IM Used
The response is the result of instance-manipulations (delta encoding).

3xxRedirection

Further action is needed to complete the request — usually a redirect.

300
Multiple Choices
The resource has several representations; the client or user should pick one.
301
Moved Permanently
The resource moved for good. Update links and bookmarks. SEO: passes ranking signals to the new URL. Use for www→root, http→https, old→new URLs.
302
Found (temporary)
A temporary redirect. The original URL should still be used in future. For SEO prefer 301 for permanent moves; 302 keeps indexing on the original.
303
See Other
Redirect with a forced GET — the POST-Redirect-GET pattern after a form submit, to avoid duplicate submissions.
304
Not Modified
The cached copy is still valid (conditional request with ETag / If-Modified-Since). Saves bandwidth — this is normal and good.
307
Temporary Redirect
Like 302 but the method (POST/GET) must not change. Safer than 302 for non-GET requests.
308
Permanent Redirect
Like 301 but the method must not change. Use for permanent moves of POST endpoints.

4xxClient Error

The request has a problem — something on the client side needs fixing.

400
Bad Request
The server could not parse the request — malformed JSON, invalid query string, bad headers. Fix: validate the payload and Content-Type.
401
Unauthorized
Authentication is required or failed. Fix: send valid credentials / a valid token (Authorization header). Note the misnomer — it means "unauthenticated".
402
Payment Required
Reserved for future/payment use — some APIs return it when a plan limit or billing issue is hit.
403
Forbidden
The server understood the request but refuses it. You are authenticated but not allowed. Causes: file permissions, IP/geo block, missing index, WAF rule, directory listing disabled.
404
Not Found
The URL does not exist on the server. Causes: typo, deleted page, broken link, wrong rewrite rule. Fix: 301-redirect old URLs, check your router/.htaccess.
405
Method Not Allowed
The URL exists but not for that HTTP method (e.g. POST to a GET-only endpoint). Check the Allow header.
406
Not Acceptable
The server cannot produce a response matching the Accept headers the client sent.
407
Proxy Authentication Required
Like 401 but you must authenticate with a proxy first.
408
Request Timeout
The client was too slow sending the request; the server closed the connection.
409
Conflict
The request conflicts with the current state — e.g. an edit conflict or a duplicate unique key.
410
Gone
The resource was intentionally removed and will not come back. Stronger than 404 — tells search engines to drop the URL.
411
Length Required
The server needs a Content-Length header.
412
Precondition Failed
A conditional header (If-Match / If-Unmodified-Since) failed — often optimistic-locking.
413
Payload Too Large
The body is bigger than the server allows. Fix: raise client_max_body_size (nginx) / upload_max_filesize (PHP).
414
URI Too Long
The URL is longer than the server accepts — move data into the body.
415
Unsupported Media Type
The Content-Type is not supported (e.g. sending XML to a JSON-only API).
416
Range Not Satisfiable
The requested byte Range is invalid for the resource.
417
Expectation Failed
The server cannot meet the Expect request header.
418
I'm a teapot
An April Fools RFC joke — returned by some servers for fun or to block bots.
421
Misdirected Request
The request reached a server that cannot produce a response for the authority (TLS/SNI mismatch).
422
Unprocessable Entity
The syntax is fine but the data fails validation (semantic errors). Very common in REST/JSON APIs — read the error body.
423
Locked
WebDAV: the resource is locked.
424
Failed Dependency
WebDAV: the request failed because a dependent request failed.
425
Too Early
The server refuses to risk replaying the request (TLS 0-RTT).
426
Upgrade Required
The client must switch to a different protocol (e.g. TLS).
428
Precondition Required
The server requires a conditional request to prevent lost updates.
429
Too Many Requests
Rate limit hit. Fix: slow down and respect the Retry-After header. Common on APIs and behind WAFs.
431
Request Header Fields Too Large
The headers (often a huge Cookie) exceed the server limit.
451
Unavailable For Legal Reasons
Blocked for legal reasons (censorship, DMCA, GDPR).

5xxServer Error

The server failed to fulfil a valid request — the problem is server-side.

500
Internal Server Error
A generic server crash. Causes: an unhandled exception, PHP fatal error, bad .htaccess. Fix: check the server error log — the real cause is there, not in the browser.
501
Not Implemented
The server does not support the functionality to fulfil the request (unknown method).
502
Bad Gateway
A gateway/proxy got an invalid response from the upstream server. Causes: the backend (PHP-FPM/Node) is down or crashed. Fix: restart/scale the upstream, check its logs.
503
Service Unavailable
The server is temporarily overloaded or in maintenance. Honour the Retry-After header. Fix: scale up, fix the crash loop, or finish maintenance.
504
Gateway Timeout
A gateway did not get a response from the upstream in time. Causes: a slow query/script. Fix: speed up the backend or raise the proxy timeout.
505
HTTP Version Not Supported
The server does not support the HTTP version used.
506
Variant Also Negotiates
A content-negotiation configuration error on the server.
507
Insufficient Storage
WebDAV: the server is out of space to complete the request.
508
Loop Detected
WebDAV: an infinite loop was detected processing the request.
510
Not Extended
Further extensions to the request are required.
511
Network Authentication Required
You must authenticate to gain network access — captive portals (hotel/airport WiFi) return this.
Working with headers and responses? Try the HTTP Headers Checker, run a full Web Check on any site, or paste a response into the Smart Paste Detector.
Found this useful? Share it