HTTP Status Code Explorer

Look up any HTTP status code instantly. Searchable reference with descriptions, use cases, and tips for all standard status codes.

Your data never leaves your browser
100
ContinueThe server has received the request headers and the client should proceed to send the request body.
101
Switching ProtocolsThe server is switching protocols as requested by the client via the Upgrade header.
102
ProcessingThe server has received and is processing the request, but no response is available yet.
103
Early HintsUsed to return some response headers before the final HTTP message, allowing the browser to preload resources.
200
OKThe request has succeeded. The meaning depends on the HTTP method: GET returns the resource, POST returns the result of the action.
201
CreatedThe request has been fulfilled and a new resource has been created. The response should include a Location header with the URI of the new resource.
202
AcceptedThe request has been accepted for processing, but the processing has not been completed.
203
Non-Authoritative InformationThe server successfully processed the request but is returning information from a third-party source that may differ from the origin server.
204
No ContentThe server successfully processed the request but is not returning any content in the response body.
205
Reset ContentThe server successfully processed the request and asks the client to reset the document view (e.g., clear a form).
206
Partial ContentThe server is delivering only part of the resource due to a Range header sent by the client.
207
Multi-StatusA WebDAV response that conveys information about multiple resources where multiple status codes might be appropriate.
208
Already ReportedUsed inside a WebDAV DAV:propstat response element to avoid enumerating the internal members of multiple bindings to the same collection repeatedly.
226
IM UsedThe server has fulfilled a GET request for the resource, and the response is a representation of the result of one or more instance-manipulations applied to the current instance.
300
Multiple ChoicesThe request has more than one possible response. The client should choose one of them.
301
Moved PermanentlyThe requested resource has been permanently moved to a new URL. All future requests should use the new URL.
302
FoundThe requested resource temporarily resides at a different URL. The client should continue using the original URL for future requests.
303
See OtherThe response to the request can be found at another URL using a GET method. Typically used after a POST to redirect to a confirmation page.
304
Not ModifiedThe resource has not been modified since the version specified by the request headers (If-Modified-Since or If-None-Match).
307
Temporary RedirectThe request should be repeated with another URL, but future requests should still use the original URL. The HTTP method must not change.
308
Permanent RedirectThe resource has permanently moved to a new URL. The HTTP method must not change when following the redirect.
400
Bad RequestThe server cannot process the request due to a client error such as malformed syntax, invalid parameters, or missing required fields.
401
UnauthorizedThe request requires authentication. The client must provide valid credentials (e.g., a Bearer token or API key).
402
Payment RequiredReserved for future use. Originally intended for digital payment systems.
403
ForbiddenThe server understood the request but refuses to authorize it. Authentication will not help because the user lacks the required permissions.
404
Not FoundThe server cannot find the requested resource. The URL may be wrong, or the resource may have been deleted.
405
Method Not AllowedThe HTTP method used is not supported for the requested resource. The response must include an Allow header listing valid methods.
406
Not AcceptableThe server cannot produce a response matching the criteria given by the Accept headers sent by the client.
407
Proxy Authentication RequiredThe client must first authenticate with an intermediate proxy before the request can proceed.
408
Request TimeoutThe server timed out waiting for the request. The client took too long to send the complete request.
409
ConflictThe request conflicts with the current state of the server, such as an edit conflict or a duplicate resource.
410
GoneThe resource is permanently gone and will not be available again. Unlike 404, this indicates the absence is intentional and permanent.
411
Length RequiredThe server requires a Content-Length header in the request, which was not provided.
412
Precondition FailedOne or more conditions in the request headers (such as If-Match or If-Unmodified-Since) evaluated to false.
413
Content Too LargeThe request body exceeds the size limit defined by the server. Previously called "Payload Too Large."
414
URI Too LongThe URI provided in the request is longer than the server is willing to process.
415
Unsupported Media TypeThe server does not support the media type (Content-Type) of the request body.
416
Range Not SatisfiableThe Range header in the request specifies a range that cannot be fulfilled, such as a range beyond the end of the file.
417
Expectation FailedThe server cannot meet the requirements of the Expect header field in the request.
418
I'm a TeapotAn April Fools joke from RFC 2324 (Hyper Text Coffee Pot Control Protocol). The server refuses to brew coffee because it is a teapot.
421
Misdirected RequestThe request was directed at a server that is not able to produce a response, such as a server that is not configured for the requested hostname.
422
Unprocessable ContentThe server understands the content type and syntax of the request, but the contained instructions are semantically invalid.
423
LockedThe resource that is being accessed is locked. This is a WebDAV-specific status code.
424
Failed DependencyThe request failed because it depended on another request that also failed. A WebDAV status code.
425
Too EarlyThe server is unwilling to process a request that might be replayed, to avoid potential replay attacks with TLS 1.3 early data.
426
Upgrade RequiredThe server refuses to perform the request using the current protocol but might after the client upgrades to a different protocol.
428
Precondition RequiredThe server requires the request to be conditional (include If-Match or If-Unmodified-Since headers) to prevent lost updates.
429
Too Many RequestsThe client has sent too many requests in a given time period (rate limiting).
431
Request Header Fields Too LargeThe server refuses to process the request because one or more header fields (or the total headers) are too large.
451
Unavailable For Legal ReasonsThe resource is unavailable due to legal demands, such as government censorship or court-ordered takedowns.
500
Internal Server ErrorThe server encountered an unexpected condition that prevented it from fulfilling the request.
501
Not ImplementedThe server does not recognize the request method or lacks the ability to fulfill the request.
502
Bad GatewayThe server, acting as a gateway or proxy, received an invalid response from the upstream server it accessed to fulfill the request.
503
Service UnavailableThe server is temporarily unable to handle the request, usually due to maintenance or overloading.
504
Gateway TimeoutThe server, acting as a gateway or proxy, did not receive a timely response from the upstream server.
505
HTTP Version Not SupportedThe server does not support the HTTP protocol version used in the request.
506
Variant Also NegotiatesThe server has an internal configuration error: the chosen variant resource is itself configured to engage in content negotiation, creating a circular reference.
507
Insufficient StorageThe server is unable to store the representation needed to complete the request. A WebDAV status code.
508
Loop DetectedThe server detected an infinite loop while processing the request. A WebDAV status code.
510
Not ExtendedThe server requires further extensions to the request in order to fulfill it.
511
Network Authentication RequiredThe client needs to authenticate to gain network access, typically used by captive portals (hotel Wi-Fi, airport networks).

How to Use

  1. Browse all HTTP status codes organized by category (1xx through 5xx).
  2. Use the search bar to filter by code number or keyword (e.g., "timeout," "redirect," "404").
  3. Click any status code card to expand it and see a practical usage tip.
  4. Collapse or expand category sections by clicking their headers.

Understanding HTTP Status Codes

Every time your browser, mobile app, or API client makes an HTTP request to a server, the server responds with a three-digit status code. These codes are defined by the Internet Engineering Task Force (IETF) in various RFCs and are essential for building reliable web applications and APIs. Understanding what each code means helps developers debug issues faster, design better APIs, and build more robust error handling.

Status codes are grouped into five classes based on their first digit. 1xx codes are informational responses indicating that the server has received the request and the client should continue. 2xx codes indicate success — the request was received, understood, and accepted. 3xx codes indicate redirection — the client must take additional action to complete the request. 4xx codes indicate client errors — the request contains bad syntax or cannot be fulfilled. 5xx codes indicate server errors — the server failed to fulfill a valid request.

The Most Important Status Codes for REST APIs

When designing REST APIs, a handful of status codes cover the vast majority of use cases. 200 OK is the standard response for successful GET requests. 201 Created should be returned after a successful POST that creates a new resource, along with a Location header pointing to the new resource. 204 No Content is ideal for successful DELETE operations or PUT/PATCH updates where no response body is needed. 400 Bad Request covers malformed input or validation errors, while 422 Unprocessable Content is a more precise alternative for semantic validation failures. 401 Unauthorized signals missing or invalid authentication, and 403 Forbidden means the authenticated user lacks the required permissions.

For error handling, 404 Not Found is used when a resource does not exist, 409 Conflict indicates a state conflict such as a duplicate entry, and 429 Too Many Requests enforces rate limiting — always include a Retry-After header. On the server side, 500 Internal Server Error is the generic fallback, while 503 Service Unavailable is used during planned maintenance.

Common Mistakes with HTTP Status Codes

One of the most frequent mistakes is returning 200 OK for every response and embedding the actual error information in the response body. This anti-pattern breaks HTTP semantics and makes it impossible for middleware, caches, and monitoring tools to correctly interpret responses. If a request fails, return the appropriate 4xx or 5xx status code.

Another common mistake is confusing 401 and 403. Despite its name, 401 means "unauthenticated" (the user has not provided credentials), while 403 means "unauthorized" (the user is authenticated but lacks permission). Using them interchangeably leads to confusing user experiences and broken retry logic on the client side.

Developers also frequently misuse 302 Found for redirects. Historically, browsers changed POST requests to GET when following a 302 redirect, which was not the intended behavior. Use 303 See Other when you want to redirect a POST to a GET (the Post/Redirect/Get pattern), and 307 Temporary Redirect when the HTTP method must be preserved.

Status Codes and SEO

Search engines pay close attention to HTTP status codes. A 301 Moved Permanently redirect passes most of the original page's SEO ranking to the new URL, making it essential for site migrations and URL restructuring. A 302 Found redirect, on the other hand, tells search engines the move is temporary and the original URL should keep its ranking. Returning 404 Not Found for deleted content eventually causes search engines to drop the page from their index, while 410 Gone accelerates the de-indexing process. Soft 404s — pages that return a 200 status but display "not found" content — are penalized by Google because they waste crawl budget.

The 503 Service Unavailable code is critical during planned maintenance. When your site is temporarily down, returning 503 with a Retry-After header tells search engines to come back later without losing any rankings. Returning 500 or simply failing to respond during downtime can cause rankings to drop if the outage lasts more than a few hours.

Status Codes in Reverse Proxies and CDNs

When you run applications behind a reverse proxy such as Nginx, Apache, or a CDN like Cloudflare, the proxy layer can generate its own status codes. A 502 Bad Gateway means the proxy could not get a valid response from your application server — often because the app crashed or is not running. A 504 Gateway Timeout means the proxy gave up waiting for a response from the upstream server, typically due to slow database queries or unresponsive external API calls. Cloudflare adds its own non-standard codes (520-527) for edge-specific errors. Understanding which layer generated the error is essential for debugging production incidents.

Related Tools

Format API responses with the JSON Formatter. Decode authentication tokens with the JWT Decoder. Encode query parameters with the URL Encoder. Validate API response payloads with the JSON Validator. Generate hashes for ETag headers with the Hash Generator. Convert timestamps in API responses with the Epoch Converter.

Frequently Asked Questions

What are HTTP status codes?
HTTP status codes are three-digit numbers returned by a server in response to a client request. They indicate whether the request was successful, redirected, or resulted in an error. They are grouped into five classes: 1xx (informational), 2xx (success), 3xx (redirection), 4xx (client error), and 5xx (server error).
What is the difference between 401 and 403?
401 Unauthorized means the client has not provided valid authentication credentials — the user needs to log in. 403 Forbidden means the client is authenticated but does not have permission to access the resource. In short: 401 is "who are you?" and 403 is "you cannot access this."
When should I use 404 vs 410?
Use 404 Not Found when a resource cannot be found and may or may not have existed previously. Use 410 Gone when a resource has been intentionally and permanently removed. A 410 tells search engines to de-index the URL, while a 404 may be rechecked later.
What causes a 502 Bad Gateway error?
A 502 Bad Gateway occurs when a server acting as a reverse proxy or gateway (such as Nginx or Cloudflare) receives an invalid or no response from the upstream application server. Common causes include the application server crashing, running out of memory, or not starting correctly.
What is the 418 I'm a Teapot status code?
HTTP 418 is a humorous status code defined in RFC 2324 as part of the Hyper Text Coffee Pot Control Protocol, an April Fools' joke from 1998. It states that a teapot cannot brew coffee. While not a real status code, it is widely known and sometimes used as an Easter egg in web applications.

AI agent tools available. The CodeTidy MCP Server gives Claude, Cursor, and other AI agents access to 47 developer tools. One command: npx @codetidy/mcp

Drop file to load