Every HTTP response code in one page. Bookmark this quick reference for REST APIs, web development, and debugging. Organized by category with descriptions, links, and usage guidance.
All standard HTTP response status codes organized by category. Codes with detailed guides link directly to their full reference page.
| Code | Name | Description | Details |
|---|---|---|---|
| 1xx — Informational | |||
| 100 | Continue | The server has received the request headers and the client should proceed to send the request body. | |
| 101 | Switching Protocols | The server is switching protocols as requested by the client (e.g., upgrading to WebSocket). | Full guide → |
| 102 | Processing | The server has received the request and is still processing it (WebDAV). Prevents client timeout. | |
| 103 | Early Hints | Used to preload resources with Link headers while the server prepares the final response. | Full guide → |
| 2xx — Success | |||
| 200 | OK | The request succeeded. The meaning depends on the HTTP method: GET returns the resource, POST returns the result of the action. | Full guide → |
| 201 | Created | The request succeeded and a new resource was created. Typically returned after POST or PUT requests. | Full guide → |
| 202 | Accepted | The request has been accepted for processing, but processing has not been completed. Used for async operations. | Full guide → |
| 203 | Non-Authoritative Information | The response has been modified by a transforming proxy. The original server returned 200 OK. | |
| 204 | No Content | The server successfully processed the request but returns no body. Common for DELETE operations and form submissions. | Full guide → |
| 205 | Reset Content | The server processed the request and the client should reset the document view (e.g., clear form fields). | |
| 206 | Partial Content | The server is delivering only part of the resource due to a Range header sent by the client. Used for resumable downloads. | Full guide → |
| 3xx — Redirection | |||
| 300 | Multiple Choices | The request has more than one possible response. The user or user agent should choose one of them. | |
| 301 | Moved Permanently | The URL of the requested resource has been changed permanently. The new URL is given in the response. SEO value transfers. | Full guide → |
| 302 | Found | The resource is temporarily at a different URI. The client should continue to use the original URI for future requests. | Full guide → |
| 303 | See Other | The server directs the client to get the resource at another URI with a GET request. Often used after POST to prevent resubmission. | Full guide → |
| 304 | Not Modified | The resource has not been modified since the last request. The client can use its cached version. No body is sent. | Full guide → |
| 307 | Temporary Redirect | The resource is temporarily at a different URI. Unlike 302, the HTTP method must not change (POST stays POST). | Full guide → |
| 308 | Permanent Redirect | The resource has permanently moved. Unlike 301, the HTTP method must not change. POST stays POST. | Full guide → |
| 4xx — Client Error | |||
| 400 | Bad Request | The server cannot process the request due to malformed syntax, invalid request framing, or deceptive routing. | Full guide → |
| 401 | Unauthorized | Authentication is required and has either failed or not been provided. The client must authenticate itself. | Full guide → |
| 402 | Payment Required | Reserved for future use. Some services use it to indicate that the resource requires payment or a subscription. | |
| 403 | Forbidden | The server understood the request but refuses to authorize it. Unlike 401, re-authenticating will not help. | Full guide → |
| 404 | Not Found | The server cannot find the requested resource. This is the most common error on the web. The URL may be wrong or the page deleted. | Full guide → |
| 405 | Method Not Allowed | The request method is known by the server but is not supported for the target resource (e.g., DELETE on a read-only resource). | Full guide → |
| 406 | Not Acceptable | The server cannot produce a response matching the Accept headers sent by the client (content negotiation failure). | |
| 408 | Request Timeout | The server timed out waiting for the request. The client took too long to send the complete request. | Full guide → |
| 409 | Conflict | The request conflicts with the current state of the server. Common with concurrent updates or duplicate entries. | Full guide → |
| 410 | Gone | The resource is permanently gone and will not be available again. Stronger signal than 404 for search engines to deindex. | Full guide → |
| 411 | Length Required | The server refuses the request because the Content-Length header is not defined and the server requires it. | |
| 413 | Payload Too Large | The request body is larger than the server is willing or able to process. Adjust upload limits or compress the payload. | Full guide → |
| 414 | URI Too Long | The URI requested by the client is longer than the server is willing to interpret. Use POST with a body instead. | |
| 415 | Unsupported Media Type | The server refuses the request because the payload format is not supported. Check the Content-Type header. | Full guide → |
| 418 | I'm a Teapot | An April Fools' joke from RFC 2324. The server refuses to brew coffee because it is a teapot. Sometimes used as an Easter egg. | Full guide → |
| 422 | Unprocessable Entity | The server understands the content type and syntax but cannot process the contained instructions (e.g., validation errors). | Full guide → |
| 429 | Too Many Requests | The user has sent too many requests in a given amount of time (rate limiting). Check the Retry-After header. | Full guide → |
| 451 | Unavailable For Legal Reasons | The resource is unavailable due to legal demands (e.g., government censorship, DMCA takedown, GDPR). | Full guide → |
| 5xx — Server Error | |||
| 500 | Internal Server Error | The server encountered an unexpected condition that prevented it from fulfilling the request. Check server logs. | Full guide → |
| 501 | Not Implemented | The server does not support the functionality required to fulfill the request (e.g., unrecognized HTTP method). | Full guide → |
| 502 | Bad Gateway | The server acting as a gateway received an invalid response from an upstream server. Common with reverse proxies and load balancers. | Full guide → |
| 503 | Service Unavailable | The server is not ready to handle the request. Common during maintenance, overload, or deployment. Check Retry-After header. | Full guide → |
| 504 | Gateway Timeout | The gateway server did not receive a timely response from the upstream server. The upstream is too slow or unreachable. | Full guide → |
| 511 | Network Authentication Required | The client needs to authenticate to gain network access (e.g., captive portal at a hotel or airport Wi-Fi). | Full guide → |
Not sure which HTTP status code to return from your API? Use this decision tree to pick the right one.
Standard HTTP status codes to return for each REST API method. Following these conventions makes your API predictable and easier to consume.
Retrieve a resource
Create a new resource
Update a resource
Remove a resource
Common questions about HTTP status codes, answered for developers and non-developers alike.
WWW-Authenticate header telling the client how to authenticate. Think of it as: "Who are you? Please log in."fetch, XMLHttpRequest, or tools like cURL) when the request never reached the server at all.http-status-codes npm package is a popular Node.js library that provides named constants for all HTTP status codes, replacing magic numbers in your code. Instead of writing res.status(404), you write res.status(StatusCodes.NOT_FOUND), making code more readable and less error-prone.npm install http-status-codesimport { StatusCodes, ReasonPhrases } from 'http-status-codes';res.status(StatusCodes.NOT_FOUND).json({ error: ReasonPhrases.NOT_FOUND });getReasonPhrase(404) which returns "Not Found". It has zero dependencies and is widely used in Express.js and NestJS projects.
Scan your site for broken links, redirect chains, and server errors. HTTP Tiger crawls your pages and reports every issue.
Start Free Scan