Free HTTP Status Codes Reference
Searchable reference for all HTTP status codes — what each means, when it's used, and common causes. From 100 to 511.
61 status codes
100Continue
The server has received the request headers and the client should proceed with the body.
Continue
The server has received the request headers and the client should proceed with the body.
Used for requests with Expect: 100-continue. The server acknowledges that it's willing to receive the body before the client sends it. Rarely seen in modern web apps.
101Switching Protocols
The server is switching protocols as requested by the client.
Switching Protocols
The server is switching protocols as requested by the client.
Most commonly used for WebSocket upgrades — the client requests Upgrade: websocket and the server responds 101 to switch.
102Processing
The server has received the request and is processing it, but no response is available yet.
Processing
The server has received the request and is processing it, but no response is available yet.
A WebDAV interim response sent to prevent client timeouts during lengthy operations. Deprecated — modern servers should not send it.
103Early Hints
Preliminary headers sent before the final response.
Early Hints
Preliminary headers sent before the final response.
Lets servers send Link headers (preload/preconnect) while the final response is still being prepared, so browsers can start fetching critical assets sooner.
200OK
The request succeeded.
OK
The request succeeded.
The standard success response. The meaning depends on the HTTP method: GET → resource returned, POST/PUT → action completed.
201Created
A new resource was successfully created.
Created
A new resource was successfully created.
Common after a POST. The response should include a Location header pointing to the new resource's URL.
202Accepted
The request was accepted for processing, but processing is not complete.
Accepted
The request was accepted for processing, but processing is not complete.
For async operations — the server is queuing the work. The client should poll a status endpoint or check back later.
203Non-Authoritative Information
The response was modified by a transforming proxy.
Non-Authoritative Information
The response was modified by a transforming proxy.
The request succeeded, but an intermediary (such as a caching or transforming proxy) altered the payload from the origin server — for example, recompressing images. Rare in practice.
204No Content
The request succeeded but there is no response body.
No Content
The request succeeded but there is no response body.
Often used for DELETE operations or PUT updates that don't need to return a body. The client should not navigate away from the current page.
205Reset Content
The request succeeded; the client should reset the document view.
Reset Content
The request succeeded; the client should reset the document view.
Like 204, no body is returned — but the client is additionally told to reset the form or view that produced the request (e.g. clear the form fields for the next entry).
206Partial Content
The server delivered only part of the resource.
Partial Content
The server delivered only part of the resource.
Response to a Range request. Used by video players and download managers to resume interrupted downloads or stream large files.
207Multi-Status
The response body contains multiple status codes for multiple operations.
Multi-Status
The response body contains multiple status codes for multiple operations.
WebDAV: an XML body reports the outcome of several sub-operations independently — e.g. a batch move where some items succeeded and others failed.
208Already Reported
The members of a collection were already listed earlier in the response.
Already Reported
The members of a collection were already listed earlier in the response.
WebDAV: used inside 207 Multi-Status responses to avoid repeatedly listing members of the same collection when bindings create loops.
226IM Used
The response is the result of instance manipulations applied to the resource.
IM Used
The response is the result of instance manipulations applied to the resource.
Delta encoding: the server returns a diff against a previous version instead of the full resource, saving bandwidth. Very rarely implemented.
300Multiple Choices
Several representations of the resource are available.
Multiple Choices
Several representations of the resource are available.
The server offers multiple options (e.g. different formats or languages) and the client should choose one. Rarely used, because automatic content negotiation usually handles this.
301Moved Permanently
The resource has permanently moved to a new URL.
Moved Permanently
The resource has permanently moved to a new URL.
Use for permanent URL changes — search engines will update their index. SEO authority transfers to the new URL.
302Found (Temporary Redirect)
The resource is temporarily at a different URL.
Found (Temporary Redirect)
The resource is temporarily at a different URL.
Indicates the redirect is not permanent. Caching is less aggressive than 301. Use for things like 'login required, redirecting to /login'.
303See Other
Redirect to a different URL using GET.
See Other
Redirect to a different URL using GET.
Used after POST submissions — the response says 'your POST worked, see this GET URL for the result'. Browsers always GET the new URL.
304Not Modified
The cached version is still valid; use it.
Not Modified
The cached version is still valid; use it.
Response to a conditional request (with If-None-Match or If-Modified-Since headers). Saves bandwidth — no body is returned.
307Temporary Redirect
Like 302 but preserves the original HTTP method.
Temporary Redirect
Like 302 but preserves the original HTTP method.
If the original was POST, the redirect also uses POST. Modern alternative to 302 when method preservation matters.
308Permanent Redirect
Like 301 but preserves the original HTTP method.
Permanent Redirect
Like 301 but preserves the original HTTP method.
Modern replacement for 301 when you want POST requests to remain POST after the redirect.
400Bad Request
The server couldn't understand the request due to malformed syntax.
Bad Request
The server couldn't understand the request due to malformed syntax.
Common causes: malformed JSON in body, invalid query parameters, or missing required fields. Check the request body and headers.
401Unauthorized
Authentication is required and has not been provided.
Unauthorized
Authentication is required and has not been provided.
The client must include authentication credentials (Authorization header, cookie, token). 'Unauthorized' is a misnomer — it really means 'unauthenticated'.
402Payment Required
Reserved for future use — sometimes used for paid API tiers.
Payment Required
Reserved for future use — sometimes used for paid API tiers.
Originally intended for digital payments. Modern usage: APIs sometimes return 402 when a user has exceeded their paid quota.
403Forbidden
The client is authenticated but doesn't have permission.
Forbidden
The client is authenticated but doesn't have permission.
Different from 401 — the user IS logged in, but their account doesn't have permission for this resource. Check role/permissions logic.
404Not Found
The requested resource doesn't exist.
Not Found
The requested resource doesn't exist.
Either the URL is wrong, the resource was deleted, or it never existed. Servers sometimes return 404 to hide that a 403 would be more accurate.
405Method Not Allowed
The HTTP method used is not allowed for this resource.
Method Not Allowed
The HTTP method used is not allowed for this resource.
For example, a GET request to an endpoint that only accepts POST. The response should include an Allow header listing valid methods.
406Not Acceptable
No representation matches the client's Accept headers.
Not Acceptable
No representation matches the client's Accept headers.
The client asked for a content type, language, or encoding (via Accept, Accept-Language, Accept-Encoding) the server cannot satisfy. Many servers skip strict negotiation and return a default instead.
407Proxy Authentication Required
The client must authenticate with the proxy first.
Proxy Authentication Required
The client must authenticate with the proxy first.
Like 401, but issued by a proxy: the client must send Proxy-Authorization credentials. Seen on corporate networks with authenticating proxies.
408Request Timeout
The server timed out waiting for the request.
Request Timeout
The server timed out waiting for the request.
The client took too long to send the request body or kept the connection idle. Try the request again.
409Conflict
The request conflicts with the current state of the resource.
Conflict
The request conflicts with the current state of the resource.
Typically returned for concurrent edit conflicts or duplicate resource creation (e.g., creating a user with an email that already exists).
410Gone
The resource was deleted and won't come back.
Gone
The resource was deleted and won't come back.
Stronger than 404 — the server explicitly knows the resource USED to exist but has been permanently removed. Search engines will deindex.
411Length Required
The server requires a Content-Length header.
Length Required
The server requires a Content-Length header.
The request was rejected because it lacked a Content-Length header and the server refuses bodies of unknown size. Add the header and retry.
412Precondition Failed
A condition in the request headers was not met.
Precondition Failed
A condition in the request headers was not met.
Returned when conditional headers like If-Match or If-Unmodified-Since fail — typically optimistic locking: someone else changed the resource since your version. Refetch and retry.
413Payload Too Large
The request body exceeds the server's size limit.
Payload Too Large
The request body exceeds the server's size limit.
Common when uploading large files. Server config (nginx, apache) sets a max body size. Check the server's configuration.
414URI Too Long
The request URL exceeds the server's length limit.
URI Too Long
The request URL exceeds the server's length limit.
Usually caused by very long query strings (e.g. encoding data in a GET). Switch to a POST body, or raise the server limit if you control it.
415Unsupported Media Type
The server can't handle the Content-Type sent.
Unsupported Media Type
The server can't handle the Content-Type sent.
For example, sending application/xml to a server that only accepts application/json. Set the Content-Type header correctly.
416Range Not Satisfiable
The requested byte range is outside the resource's size.
Range Not Satisfiable
The requested byte range is outside the resource's size.
The Range header asks for a portion the file does not have — e.g. resuming a download past the end of the file. The response should include Content-Range with the actual size.
417Expectation Failed
The server cannot meet the requirements of the Expect header.
Expectation Failed
The server cannot meet the requirements of the Expect header.
Sent when the server does not support Expect: 100-continue. Some clients send this header by default on large POSTs; disabling it usually resolves the error.
418I'm a Teapot
The server refuses to brew coffee because it's a teapot.
I'm a Teapot
The server refuses to brew coffee because it's a teapot.
An April Fool's joke from 1998 (RFC 2324). Some real APIs use it for jokes or to mark deprecated endpoints. Not for production use.
421Misdirected Request
The request was sent to a server unable to produce a response for it.
Misdirected Request
The request was sent to a server unable to produce a response for it.
Common with HTTP/2 connection reuse: the request reached a server that is not configured for the target hostname. The client should retry on a new connection.
422Unprocessable Content
The request was syntactically valid but semantically wrong.
Unprocessable Content
The request was syntactically valid but semantically wrong.
For example, JSON parsed correctly but a required field was missing, or a field value was out of range. Common in REST API validation responses.
423Locked
The resource is locked.
Locked
The resource is locked.
WebDAV: the source or destination resource is locked by another client, so the operation cannot proceed. Wait for the lock to be released or break it with the proper token.
424Failed Dependency
The request failed because a previous dependent request failed.
Failed Dependency
The request failed because a previous dependent request failed.
WebDAV: in a chain of dependent operations, an earlier action failed, so this one was not performed. Look at the earlier failure for the root cause.
425Too Early
The server refuses to process a request that might be replayed.
Too Early
The server refuses to process a request that might be replayed.
Related to TLS 1.3 0-RTT (early data): the server will not risk processing a possibly replayed request. The client should retry after the handshake completes.
426Upgrade Required
The client must switch to a different protocol.
Upgrade Required
The client must switch to a different protocol.
The server refuses to serve the request over the current protocol but will after an upgrade — the response includes an Upgrade header naming the required protocol.
428Precondition Required
The server requires the request to be conditional.
Precondition Required
The server requires the request to be conditional.
The server demands conditional headers (like If-Match) to prevent lost-update conflicts. Fetch the resource, capture its ETag, and resend with If-Match.
429Too Many Requests
The client is being rate-limited.
Too Many Requests
The client is being rate-limited.
Slow down. The response should include a Retry-After header indicating when to try again. Common with APIs that have request quotas.
431Request Header Fields Too Large
Headers are too large for the server to process.
Request Header Fields Too Large
Headers are too large for the server to process.
Either one header or the total header size exceeds the limit — most often caused by oversized cookies. Clear cookies or reduce what your app stores in them.
451Unavailable For Legal Reasons
Access denied due to legal demands.
Unavailable For Legal Reasons
Access denied due to legal demands.
The resource is blocked for legal reasons — censorship, court orders, or regional regulations. The number is a nod to the novel Fahrenheit 451.
500Internal Server Error
The server encountered an unexpected condition.
Internal Server Error
The server encountered an unexpected condition.
A generic catch-all for server-side errors. Check server logs for the actual cause: unhandled exception, database error, etc.
501Not Implemented
The server doesn't support the functionality requested.
Not Implemented
The server doesn't support the functionality requested.
For example, the server doesn't recognize the HTTP method. Rare in practice — more often you'll see 405.
502Bad Gateway
The server, acting as a gateway, got a bad response from an upstream server.
Bad Gateway
The server, acting as a gateway, got a bad response from an upstream server.
Common in microservice architectures. Your load balancer or reverse proxy got a malformed response from the backend service.
503Service Unavailable
The server is temporarily unable to handle the request.
Service Unavailable
The server is temporarily unable to handle the request.
Either down for maintenance or overloaded. The response should include a Retry-After header. Often returned during deployments.
504Gateway Timeout
The gateway server timed out waiting for an upstream response.
Gateway Timeout
The gateway server timed out waiting for an upstream response.
The backend service didn't respond fast enough. Check upstream service health and timeout configurations.
505HTTP Version Not Supported
The server doesn't support the HTTP version used in the request.
HTTP Version Not Supported
The server doesn't support the HTTP version used in the request.
The major HTTP version of the request is not supported by the server. Almost never seen with modern clients.
506Variant Also Negotiates
The server has a content negotiation misconfiguration.
Variant Also Negotiates
The server has a content negotiation misconfiguration.
Transparent content negotiation ended in a loop: the chosen variant is itself configured to negotiate. Indicates a server configuration error.
507Insufficient Storage
The server is out of disk space.
Insufficient Storage
The server is out of disk space.
WebDAV-specific in origin but sometimes used by general servers. Means the server can't save the request because of storage constraints.
508Loop Detected
The server detected an infinite loop while processing the request.
Loop Detected
The server detected an infinite loop while processing the request.
WebDAV: processing a Depth: infinity request entered a loop (e.g. circular bindings). The operation was terminated.
510Not Extended
Further extensions to the request are required.
Not Extended
Further extensions to the request are required.
From the obsolete HTTP Extension Framework: the server needs more information before it can fulfill the request. Effectively unused on the modern web.
511Network Authentication Required
The client must authenticate to gain network access.
Network Authentication Required
The client must authenticate to gain network access.
Used by captive portals (hotel/airport WiFi) to indicate the user must log in to the network before accessing external sites.
Common uses
- Reference for API DesignWhen designing REST APIs, pick the right status code for each response.
- Look Up Error Codes QuicklyWhen your app returns a confusing HTTP error, look up what it actually means.
- Learn HTTP Status CodesComprehensive reference for students and developers learning HTTP and REST.
- Quick Reference During IncidentsDuring production incidents, quickly look up what each status code means.
- Reference for API DocumentationWhen writing API documentation, link to authoritative descriptions of the status codes you return.
How It Works
This tool is a client-side reference built around a hardcoded lookup table of 63 HTTP status codes spanning all five classes (1xx–5xx), each annotated with its defining RFC number. There is no server call, no external API, and no network request — all filtering and display happens in the browser using JavaScript's built-in array and string methods.
- 1Lookup table is loadedThe full set of 63 IANA-registered status codes is embedded directly in this tool as a JavaScript array, each entry carrying the numeric code, canonical English name, category class, and the specific RFC that defines it (e.g. RFC 9110 for most HTTP/1.1 codes, RFC 6585 for 429 Too Many Requests, RFC 2324 for 418 I'm a Teapot).
- 2Filter runs in memoryAs you type or select a category filter, JavaScript's Array.filter runs on the in-memory list, matching your query against the status code number, the canonical name, and both the short and long description strings using String.includes — no debounce delay, no server round-trip.
- 3Details expand with RFC linkEach result renders as an HTML details/summary element. Expanding an entry reveals the long-form explanation and a direct link to the authoritative RFC on rfc-editor.org, so you can read the exact specification text for any code.
- 4Deep links and clipboard copyOpening an entry updates the URL hash to the code number (e.g. #404), making the page shareable and bookmark-friendly. The copy button writes the canonical string (e.g. '404 Not Found') to the clipboard via the browser's navigator.clipboard API.
Related Tools
Citation Generator
Create APA 7, MLA 9, Chicago and Harvard citations and in-text references for websites, books, journals and YouTube — and build a reference list to copy or export. Free and private.
Interval Timer
A work and rest timer for HIIT and Tabata workouts with warm-up, rounds, sets, a big countdown, colour-coded phases, beeps and optional voice cues.
Video Splitter
Split a long video into parts: pieces of 60 seconds for WhatsApp Status or Stories, a number of equal parts, or parts under a size such as 25 MB for email. Save each part or all as a ZIP. Runs in your browser; the video is not uploaded.