The HTTP status line is the term given to the HTTP status code (the actual code number) when accompanied by the HTTP reason phrase1 (the short description).
We also keep a list of HTTP status code errors (4xx and 5xx) along with some tips on how to fix them.
Note: Though technically incorrect, HTTP status lines are often referred to as simply HTTP status codes.
HTTP Status Code Categories
As you can see below, HTTP status codes are three-digit integers. The very first digit is used to identify the code within a specific category - one of these five:
- 1XX: Informational - the request was accepted or the process is continuing.
- 2XX: Confirms that the action completed successfully or was understood.
- 3XX: Redirection - something else needs to take place in order to complete the request.
- 4XX: Client error that indicates that the request can't complete or contains the wrong syntax.
- 5XX: Server error that indicates that the server failed to complete a request that was supposedly valid.
Applications that understand HTTP status codes don't have to know all of the codes, which means an unknown code also has an unknown HTTP reason phrase, which won't give the user much information. However, these HTTP applications do have to understand the categories or classes as we've described them above.
If the software doesn't know what the specific code means, it can at the very least identify the class. For example, if a 490 status code is unknown to the application, it can treat it as a 400 because it's in the same category, and can then assume that there's something wrong with the client request.
HTTP Status Lines (HTTP Status Codes + HTTP Reason Phrases)
Status Code | Reason Phrase |
100 | Continue |
101 | Switching Protocols |
102 | Processing |
200 | OK |
201 | Created |
202 | Accepted |
203 | Non-Authoritative Information |
204 | No Content |
205 | Reset Content |
206 | Partial Content |
207 | Multi-Status |
300 | Multiple Choices |
301 | Moved Permanently |
302 | Found |
303 | See Other |
304 | Not Modified |
305 | Use Proxy |
307 | Temporary Redirect |
308 | Permanent Redirect |
400 | Bad Request |
401 | Unauthorized |
402 | Payment Required |
403 | Forbidden |
404 | Not Found |
405 | Method Not Allowed |
406 | Not Acceptable |
407 | Proxy Authentication Required |
408 | Request Time-out |
409 | Conflict |
410 | Gone |
411 | Length Required |
412 | Precondition Failed |
413 | Request Entity Too Large |
414 | Request-URI Too Large |
415 | Unsupported Media Type |
416 | Request Range Not Satisfiable |
417 | Expectation Failed |
421 | Misdirected Request |
422 | Unprocessable Entity |
423 | Locked |
424 | Failed Dependency |
425 | Unordered Collection |
426 | Upgrade Required |
428 | Precondition Required |
429 | Too Many Requests |
431 | Request Header Fields Too Large |
451 | Unavailable For Legal Reasons |
500 | Internal Server Error |
501 | Not Implemented |
502 | Bad Gateway |
503 | Service Unavailable |
504 | Gateway Time-out |
505 | HTTP Version Not Supported |
506 | Variant Also Negotiates |
507 | Insufficient Storage |
508 | Loop Detected |
510 | Not Extended |
511 | Network Authentication Required |
[1] The HTTP reason phrases that accompany HTTP status codes are only recommended. A different reason phrase is allowed per RFC 2616 6.1.1. You might see HTTP reason phrases replaced with a more "friendly" description or in a local language.
Unofficial HTTP Status Lines
The HTTP status lines below might be used by some third-party services as error responses, but they are not specified by any RFC.
Status Code | Reason Phrase |
103 | Checkpoint |
420 | Method Failure |
420 | Enhance Your Calm |
440 | Login Timeout |
449 | Retry With |
450 | Blocked by Windows Parental Controls |
451 | Redirect |
498 | Invalid Token |
499 | Token Required |
499 | Request has been forbidden by antivirus |
509 | Bandwidth Limit Exceeded |
530 | Site is frozen |