HTTP Status Codes
Reference guide for HTTP status codes with descriptions. Free, fast, and works entirely in your browser with no sign-up required.
Updated
HTTP Status Codes
Complete reference of all HTTP status codes — search, filter by category, view mnemonics, compare similar codes, troubleshooting guides, REST best practices, RFC references, and header examples.
Continue
The server has received the request headers and the client should proceed to send the request body.
"100 Continue" — server says "keep going, I'm listening"
Switching Protocols
The server is switching protocols as requested by the client (e.g., upgrading to WebSocket).
"101" — one protocol becomes another
Processing
The server has received and is processing the request, but no response is available yet.
"102" — still chewing, haven't swallowed yet
Early Hints
Used to return some response headers before the final HTTP message, allowing resource preloading.
"103 Early Hints" — the server sends you a shopping list before the store opens
OK
The request was successful. The meaning depends on the HTTP method used.
"200 OK" — everything's fine, here's your data
Created
The request was successful and a new resource was created as a result.
"201 Created" — a new resource was born
Accepted
The request has been accepted for processing, but the processing has not been completed.
"202 Accepted" — your ticket is in the queue
No Content
The server has successfully processed the request but is not returning any content.
"204 No Content" — done, nothing to show
Partial Content
The server is delivering only part of the resource in response to a Range request.
"206 Partial" — only part of the file, just what you asked for
Multi-Status
A Multi-Status response conveys information about multiple resources in situations where multiple status codes might be appropriate.
"207 Multi-Status" — here are everyone's individual results
Moved Permanently
The URL of the requested resource has been changed permanently. The new URL is given in the response.
"301 Moved Permanently" — I've moved and given you my new forwarding address
Found
The URI of the requested resource has been changed temporarily.
"302 Found" — it's temporarily over there
See Other
The server is redirecting the user agent to a different resource, as indicated by the Location header.
"303 See Other" — go look at that other page via GET
Not Modified
There is no need to retransmit the requested resources. The client can use cached data.
"304 Not Modified" — nothing changed, use your cache
Temporary Redirect
The server sends this response to direct the client to get the requested resource at another URI with the same method.
"307" — temporary detour, same vehicle (method)
Permanent Redirect
The resource is now permanently located at another URI. Method is preserved unlike 301.
"308" — permanently moved AND method preserved
Bad Request
The server cannot or will not process the request due to something perceived to be a client error.
"400 Bad Request" — you sent gibberish
Unauthorized
The request lacks valid authentication credentials for the target resource.
"401 Unauthorized" — show me your ID
Forbidden
The server understood the request but refuses to authorize it.
"403 Forbidden" — I know who you are, but you can't come in
Not Found
The server cannot find the requested resource. The URL is not recognized.
"404 Not Found" — this page does not exist
Method Not Allowed
The request method is known by the server but is not supported by the target resource.
"405 Method Not Allowed" — you're knocking on the wrong door type
Request Timeout
The server would like to shut down this unused connection. Sent when server times out waiting for client.
"408" — you took too long to finish your sentence
Conflict
The request could not be completed due to a conflict with the current state of the target resource.
"409 Conflict" — two things are fighting over the same space
Gone
The target resource is no longer available at the origin server and this condition is likely to be permanent.
"410 Gone" — it existed once, but it's gone forever
Precondition Failed
The server does not meet one of the preconditions in the request header fields.
"412" — the conditions you set weren't met
Content Too Large
The request entity is larger than limits defined by server.
"413 Too Large" — your suitcase is too big for the overhead bin
URI Too Long
The URI requested by the client is longer than the server is willing to interpret.
"414 URI Too Long" — your address label is a novel
Unsupported Media Type
The media format of the requested data is not supported by the server.
"415 Unsupported Media Type" — I don't speak that language
Unprocessable Entity
The request was well-formed but was unable to be followed due to semantic errors.
"422" — grammatically correct but logically wrong
Locked
The resource that is being accessed is locked.
"423 Locked" — someone else has checked this out
Failed Dependency
The method could not be performed on the resource because the requested action depended on another action and that action failed.
"424" — the domino that came before you fell
Too Early
Indicates that the server is unwilling to risk processing a request that might be replayed.
"425 Too Early" — not yet, the security handshake isn't done
Upgrade Required
The server refuses to perform the request using the current protocol but might after an upgrade.
"426" — you need a better version to enter
Precondition Required
The origin server requires the request to be conditional.
"428" — you need to show conditions before we proceed
Too Many Requests
The user has sent too many requests in a given amount of time (rate limiting).
"429 Too Many" — slow down, you're flooding us
Request Header Fields Too Large
The server is unwilling to process the request because its header fields are too large.
"431" — your luggage has too many labels on it
Unavailable For Legal Reasons
The user-agent requested a resource that cannot legally be provided.
"451" — reference to Fahrenheit 451, the book about censorship
Internal Server Error
The server has encountered a situation it doesn't know how to handle.
"500" — something exploded in the engine room
Not Implemented
The request method is not supported by the server and cannot be handled.
"501" — feature not built yet
Bad Gateway
The server, while acting as a gateway or proxy, received an invalid response from the upstream server.
"502 Bad Gateway" — the middleman got a bad answer
Service Unavailable
The server is not ready to handle the request. Common causes: maintenance or overload.
"503 Service Unavailable" — closed for maintenance, back soon
Gateway Timeout
The server is acting as a gateway and cannot get a response in time from the upstream server.
"504 Gateway Timeout" — the upstream server went radio silent
HTTP Version Not Supported
The HTTP version used in the request is not supported by the server.
"505" — incompatible versions
Variant Also Negotiates
The server has an internal configuration error: transparent content negotiation results in a circular reference.
"506" — the signpost points to another signpost
Insufficient Storage
The server is unable to store the representation needed to complete the request.
"507" — the hard drive is full
Loop Detected
The server detected an infinite loop while processing the request.
"508" — the snake is eating its own tail
Not Extended
Further extensions to the request are required for the server to fulfill it.
"510" — you need extra plugins installed
Network Authentication Required
The client needs to authenticate to gain network access (captive portal).
"511" — you need to log into the WiFi first
Client Closed Request
A non-standard code used by nginx to indicate that the client closed the connection before the server answered.
"499" — client hung up mid-sentence (nginx-specific)
Web Server Returns Unknown Error
Cloudflare-specific. The origin server returned an unexpected response.
"520" — Cloudflare has no idea what your server said
Web Server Is Down
Cloudflare-specific. The origin server refused connections.
"521" — Cloudflare knocked, nobody home
Connection Timed Out
Cloudflare-specific. Cloudflare timed out contacting the origin server.
"522" — Cloudflare waited too long
A Timeout Occurred
Cloudflare-specific. Cloudflare established a TCP connection but the origin did not send a response in time.
"524" — Cloudflare waited, origin stayed silent
Related Tools
Frequently Asked Questions
What is the difference between a 401 and a 403 status code?
Both signal a 4xx client error around access, but they mean different things. A 401 Unauthorized means you are not authenticated: the server doesn't know who you are, so you should send valid credentials, such as a login token or API key, and try again. A 403 Forbidden means you are authenticated but not allowed: the server knows who you are and is deliberately refusing, so re-sending credentials won't help — you need different permissions or a role change. Returning the wrong one confuses clients, because a 401 invites a retry with login while a 403 tells them to stop. This reference has a dedicated comparison view that places these lookalike codes side by side. Search 401 or 403 above to read each code's causes and fixes in full.
When should I use a 301 redirect versus a 308?
Both 301 Moved Permanently and 308 Permanent Redirect tell clients a resource has moved for good and that they should update bookmarks and links. The key difference is method handling. With a 301, some clients may change a POST into a GET when following the redirect, which can silently drop request bodies. A 308 guarantees the original method and body are preserved, making it the safer choice for API migrations and any non-GET request. For ordinary page moves that search engines should follow, a 301 remains the well-understood default and passes ranking signals. Choosing wrong can break form submissions or lose link equity. This reference lists both codes with example responses and notes the governing RFC. Search 301 or 308 above, or open the comparison view to see them contrasted directly.
Why does a server return a 502 instead of a 504?
Both are 5xx server errors involving a gateway or reverse proxy such as nginx or Cloudflare sitting in front of your application, but they describe different failures. A 502 Bad Gateway means the proxy reached the upstream server but got an invalid or empty response — often the backend crashed, returned garbage, or closed the connection. A 504 Gateway Timeout means the proxy reached the upstream but the upstream took too long to respond, so the proxy gave up waiting. The practical clue: a 502 usually points to a broken or down backend, while a 504 points to a slow one, so you investigate crashes versus latency and timeout limits. This reference catalogs both with common causes and fix steps. Search 502 or 504 above to see each one explained.
What is the difference between a 404 and a 410 status code?
A 404 Not Found means the resource isn't there right now, but the server makes no promise about the future — it might return later, so clients and search engines keep checking. A 410 Gone is a stronger, deliberate signal: the resource was intentionally and permanently removed and will not come back. For SEO this matters, because a 410 tells search engines to stop requesting the URL and de-index it faster, whereas a 404 leaves the door open. Use 410 when you've purposely retired a page, an expired campaign, or deleted content; use 404 for typos and genuinely missing resources. Returning the right one keeps crawl budget and logs clean. This reference explains both codes and pairs them in its comparison view. Search 404 or 410 above to read the full details.
What do the five HTTP status code categories mean?
Every HTTP response code falls into one of five families, signalled by its first digit. 1xx Informational means the request was received and processing continues, like 100 Continue. 2xx Success means the request was understood and accepted, with 200 OK as the default and 201 Created or 204 No Content for specific cases. 3xx Redirection means more action is needed, usually following a Location header, as with 301 and 302. 4xx Client Error means the request itself was faulty — bad syntax, missing credentials, or a missing resource like 404. 5xx Server Error means the server failed to fulfil a valid request, from 500 Internal Server Error to gateway issues. Knowing the family tells you instantly whether the problem is on the client or the server. Browse any category above to learn its codes before you hit them in an outage.
Related Tools
Free Secure Password Generator
Generate secure, random passwords with customizable options. Free, fast, and works entirely in your browser with no sign-up required.
Free UUID/GUID Generator
Generate universally unique identifiers (UUIDs/GUIDs). Free, fast, and works entirely in your browser with no sign-up required.
Free QR Code Generator Online
Create QR codes for URLs, text, WiFi, and contacts. Customize colors, size, and error correction. Free, private — runs in your browser, no sign-up.
Free JSON Formatter & Validator
Format, validate, and beautify JSON data with syntax highlighting and error detection. Free, fast, and works entirely in your browser with no sign-up required.
About the HTTP Status Codes Reference
HTTP status codes are the three-digit numbers a server returns with every web response to say what happened — whether a page loaded, redirected, was denied, or crashed. This reference puts every code you're likely to meet in one searchable place, with plain-language explanations, real example responses, common causes, and how-to-fix notes. It's built for developers, API designers, DevOps engineers, and anyone debugging a request who needs to know what a 403, a 502, or a 308 actually means and what to do about it.
The reference catalogs more than 50 status codes grouped into the five official families, including WebDAV extensions and a few unofficial vendor codes (such as Cloudflare's 520–524) that you'll see in production logs but won't find in the RFCs. Most of the tool runs entirely in your browser with no sign-up. The one exception is the optional URL Status Tester, which sends the address you enter through a public CORS proxy to fetch its live status — so use that feature only for URLs you're comfortable routing through a third party.
The five status code categories
Every HTTP response code falls into one of five ranges, signalled by its first digit:
- 1xx Informational — the request was received and the process is continuing (e.g.
100 Continue,101 Switching Protocols). - 2xx Success — the request was received, understood, and accepted.
200 OKis the default;201 Createdfollows a successful POST, and204 No Contentis common after a DELETE. - 3xx Redirection — further action is needed to complete the request, usually following a
Locationheader.301is a permanent move;302and307are temporary. - 4xx Client Error — the request was faulty: a bad syntax (
400), missing credentials (401), insufficient permission (403), or a missing resource (404). - 5xx Server Error — the server failed to fulfil a valid request, from a generic
500 Internal Server Errorto gateway problems like502and504.
What each entry gives you
Search by number or keyword and click any code to expand its full detail. For each status you get a clear description, a real-world use case, an example HTTP response or JSON body, a list of common causes, and practical steps to fix it where the code signals a problem. Many entries also cite the governing RFC section and link to related codes. You can filter to a single category, pin the codes you reference most, or isolate just the WebDAV and unofficial entries. A printable Quick Reference view condenses the whole set into a cheat sheet.
Settling the codes people confuse
Some status codes look interchangeable but mean very different things, and choosing wrong sends the wrong signal to clients, browsers, and search engines. A dedicated comparison view sets the lookalikes side by side:
- 401 vs 403 —
401means not authenticated (send valid credentials);403means authenticated but not allowed (re-authenticating won't help). - 301 vs 308 — both are permanent redirects, but
301may let a POST become a GET, while308preserves the original method, making it safer for API migrations. - 400 vs 422 —
400is a syntax-level problem (malformed JSON);422means the JSON is valid but fails a business rule, like a badly formatted email. - 404 vs 410 —
404means not found, maybe later;410 Gonemeans deliberately and permanently removed, a stronger signal to stop requesting and de-index. - 502 vs 504 —
502 Bad Gatewayis a bad upstream response;504 Gateway Timeoutmeans the upstream took too long.
Use the search box above to jump straight to any code, or browse a category to learn the family before you need it in an outage.