HTTP status codes
Every HTTP status code a browser or API can return, what each one actually means, and what to do about it — separated by whether you are visiting the site or running it.
1xx — Informational
- 100 Continue The server has read your request headers and wants you to send the body.
- 101 Switching Protocols The connection is being upgraded from HTTP to another protocol, usually WebSockets.
- 102 Processing A WebDAV server is still working on a long request and is telling the client not to time out.
- 103 Early Hints The server sends resource hints early so the browser can start downloading assets before the real response is ready.
- 104 Upload Resumption Supported A provisional code signalling that the server supports resumable uploads.
2xx — Success
- 200 OK The request worked and the response contains what was asked for.
- 201 Created The request succeeded and a new resource was created as a result.
- 202 Accepted The request was accepted for processing, but the work has not finished yet.
- 203 Non-Authoritative Information The request succeeded, but an intermediary modified the response on the way.
- 204 No Content The request succeeded and there is deliberately no body to send back.
- 205 Reset Content The request succeeded and the client should clear the form that sent it.
- 206 Partial Content The server is returning only the requested byte range of a file, not the whole thing.
- 207 Multi-Status A WebDAV response carrying separate status codes for several resources at once.
- 208 Already Reported Inside a WebDAV multi-status response, this member was already listed earlier so it is not repeated.
- 226 IM Used The server is returning a delta against a copy the client already has, rather than the whole resource.
3xx — Redirection
- 300 Multiple Choices The requested URL has several representations and the server is not choosing between them.
- 301 Moved Permanently The URL has permanently moved and clients should use the new one from now on.
- 302 Found The resource is temporarily at a different URL; keep using the original one.
- 303 See Other The request succeeded; now go and GET a different URL to see the result.
- 304 Not Modified Your cached copy is still current, so the server is not sending the file again.
- 305 Use Proxy A deprecated code telling the client to repeat the request through a specific proxy.
- 306 (Unused) A reserved code that was used in an old draft and is now permanently unassigned.
- 307 Temporary Redirect Like 302, but the client must repeat the request with the same method and body.
- 308 Permanent Redirect Like 301, but the client must repeat the request with the same method and body.
4xx — Client Error
- 400 Bad Request The server could not understand the request because something about it is malformed.
- 401 Unauthorized You need to authenticate, and either you did not or your credentials were rejected.
- 402 Payment Required Reserved for payment; in practice used by APIs to say a plan limit or billing problem is blocking the request.
- 403 Forbidden The server understood the request and is refusing to allow it, and logging in will not help.
- 404 Not Found The server is reachable and working, but there is nothing at the address you asked for.
- 405 Method Not Allowed The URL exists, but it does not accept the HTTP method you used.
- 406 Not Acceptable The server cannot produce a response in any of the formats the client said it would accept.
- 407 Proxy Authentication Required You need to authenticate with a proxy server before your request can go any further.
- 408 Request Timeout The server gave up waiting for the client to finish sending its request.
- 409 Conflict The request cannot be completed because it clashes with the current state of the resource.
- 410 Gone The resource was deliberately removed and is not coming back, and there is no forwarding address.
- 411 Length Required The server refuses to accept a request body without a Content-Length header.
- 412 Precondition Failed A condition the client attached to the request was not true, so the server did nothing.
- 413 Content Too Large The request body is bigger than the server is willing to accept.
- 414 URI Too Long The URL is longer than the server is prepared to parse.
- 415 Unsupported Media Type The server will not accept the format of the body you sent.
- 416 Range Not Satisfiable The byte range you asked for does not exist within the file.
- 417 Expectation Failed The server cannot meet the requirement set in the request's Expect header.
- 418 I'm a Teapot An April Fools' joke code from 1998 that servers still return for fun; it is reserved and has no real meaning.
- 421 Misdirected Request The request arrived at a server that is not configured to answer for that hostname.
- 422 Unprocessable Content The request is well-formed and understood, but the data in it fails the rules.
- 423 Locked The resource is locked by someone else and cannot be changed right now.
- 424 Failed Dependency The request failed because another request it depended on failed first.
- 425 Too Early The server will not risk processing a request sent in TLS early data, because it could be replayed.
- 426 Upgrade Required The server refuses to answer over this protocol and names one you must switch to.
- 428 Precondition Required The server insists the request be conditional, to stop it from silently overwriting someone else's changes.
- 429 Too Many Requests You have sent more requests than the service allows in a given period.
- 431 Request Header Fields Too Large The request headers, usually the cookies, are bigger than the server will accept.
- 451 Unavailable For Legal Reasons The content is blocked because of a legal demand — a court order, takedown notice, or government censorship.
5xx — Server Error
- 500 Internal Server Error Something went wrong on the server and it has no more specific code to describe it.
- 501 Not Implemented The server does not support the functionality needed to fulfil the request, usually the HTTP method itself.
- 502 Bad Gateway A proxy or gateway reached the server behind it and got back a broken response, or none at all.
- 503 Service Unavailable The server is temporarily unable to handle the request, usually because it is overloaded or in maintenance.
- 504 Gateway Timeout A proxy or gateway waited for the server behind it and gave up before an answer arrived.
- 505 HTTP Version Not Supported The server refuses to handle the version of HTTP used in the request.
- 506 Variant Also Negotiates A content negotiation misconfiguration: the chosen variant is itself a negotiating resource, so the server loops.
- 507 Insufficient Storage The server cannot store what the request needs it to store — it is out of space or over quota.
- 508 Loop Detected The server stopped an operation because it was going round in circles.
- 510 Not Extended An obsolete code from an abandoned extension framework; the server wanted extra information the request did not carry.
- 511 Network Authentication Required You need to log in to the network itself — this is a captive portal, not the site you asked for.
- 520 Web Server Returned an Unknown Error Cloudflare reached the origin server but got back a response it could not make sense of.
- 521 Web Server Is Down Cloudflare could not connect to the origin server because it refused the connection.
- 522 Connection Timed Out Cloudflare tried to open a connection to the origin server and never got a reply.
- 523 Origin Is Unreachable Cloudflare cannot route to the origin server at all — as far as the network is concerned, it does not exist.
- 524 A Timeout Occurred Cloudflare connected to the origin successfully but the origin did not finish responding in time.
- 525 SSL Handshake Failed The TLS handshake between Cloudflare and the origin server failed.
- 526 Invalid SSL Certificate The origin server presented a TLS certificate that Cloudflare could not validate.
- 527 Railgun Error A retired Cloudflare error about a failed connection to a Railgun listener.
- 530 Origin DNS Error A Cloudflare error shown alongside a 1xxx error code that carries the real explanation.