HTTP status codes, explained for debugging
Not the RFC prose — what each code actually means when your request comes back wrong, and what to check next. Every page includes the practical debug move.
1xx — Informational
Interim responses: the request was received and the process continues.
100 Continue
Interim response: send the request body, the headers were acceptable.
101 Switching Protocols
The server agrees to switch protocols, e.g. HTTP to WebSocket.
102 Processing
WebDAV: the server accepted the request but has not completed it yet.
103 Early Hints
Preload hints sent before the final response.
2xx — Success
The request was received, understood and accepted.
200 OK
The request succeeded; the response carries the result.
201 Created
A new resource was created; Location usually points to it.
202 Accepted
Accepted for asynchronous processing; the result comes later.
203 Non-Authoritative Information
Success, but the payload was modified by a transforming proxy.
204 No Content
Success with intentionally empty body.
205 Reset Content
Success; the client should reset the view or form.
206 Partial Content
The server returned only the requested byte range.
207 Multi-Status
WebDAV: multiple status values for multiple resources in one XML body.
208 Already Reported
WebDAV: members already listed earlier in this Multi-Status response.
226 IM Used
Delta encoding: the response is a diff against a previous version.
3xx — Redirection
Further action is needed, usually following a Location header.
300 Multiple Choices
Several representations exist; pick one.
301 Moved Permanently
The resource lives at a new URL forever; update your links.
302 Found
Temporary redirect; most clients switch the method to GET.
303 See Other
Redirect that explicitly tells the client to GET another URL.
304 Not Modified
Your cached copy is still valid; no body is returned.
307 Temporary Redirect
Temporary redirect that preserves the method and body.
308 Permanent Redirect
Permanent redirect that preserves the method and body.
4xx — Client errors
The request is at fault: syntax, auth, permissions or the resource itself.
400 Bad Request
The server could not parse or accept the request as sent.
401 Unauthorized
Authentication is missing or invalid; the name is misleading.
402 Payment Required
Reserved for payment; used in practice for quota and billing walls.
403 Forbidden
Authenticated (or known), but not allowed to do this.
404 Not Found
No representation exists for this URL — or the API hides that it does.
405 Method Not Allowed
The URL exists, but not for this HTTP method.
406 Not Acceptable
The server cannot produce a representation matching your Accept headers.
407 Proxy Authentication Required
A proxy between you and the origin wants credentials.
408 Request Timeout
The server gave up waiting for your request to arrive.
409 Conflict
The request clashes with the current state of the resource.
410 Gone
It existed, it was removed on purpose, it is not coming back.
411 Length Required
The server insists on a Content-Length header.
412 Precondition Failed
An If-* conditional header did not hold.
413 Content Too Large
The request body exceeds what the server accepts.
414 URI Too Long
The URL itself exceeds server limits.
415 Unsupported Media Type
The server rejects the Content-Type of your body.
416 Range Not Satisfiable
The requested byte range is outside the resource.
417 Expectation Failed
The server cannot meet the Expect header.
418 I'm a teapot
An April Fools RFC classic: the teapot refuses to brew coffee.
421 Misdirected Request
This server is not the right one for that URL/authority.
422 Unprocessable Content
Syntax is fine; the data is semantically invalid.
423 Locked
WebDAV: the resource is locked.
425 Too Early
The server refuses to process a possibly-replayed early request.
426 Upgrade Required
Switch protocols (see the Upgrade header) and try again.
428 Precondition Required
The server demands conditional headers to prevent lost updates.
429 Too Many Requests
You hit a rate limit; slow down and honor Retry-After.
431 Request Header Fields Too Large
Headers (often cookies) exceed server limits.
451 Unavailable For Legal Reasons
Blocked due to legal demands (the Fahrenheit 451 code).
5xx — Server errors
The server failed to fulfill an apparently valid request.
500 Internal Server Error
The server crashed or hit an unhandled error while processing.
501 Not Implemented
The server does not support this method/functionality at all.
502 Bad Gateway
A proxy got an invalid response from the upstream server.
503 Service Unavailable
Temporarily down: overload, maintenance or no healthy backends.
504 Gateway Timeout
The proxy gave up waiting for the upstream to answer.
505 HTTP Version Not Supported
The server refuses the HTTP version of the request.
506 Variant Also Negotiates
Server misconfiguration in content negotiation.
507 Insufficient Storage
WebDAV: the server has no space to complete the request.
508 Loop Detected
WebDAV: infinite loop while processing the request.
510 Not Extended
The request lacks an extension the server requires.
511 Network Authentication Required
A captive portal wants you to log in to the network.
See the status, fix the request — from your phone.
ReqPad shows status, timing and headers for every request, with searchable history. REST, GraphQL, gRPC, MQTT, WebSocket & Socket.IO.