1. Home
  2. API
  3. HTTP Status Code Lookup

HTTP Status Code Lookup

Look up what any HTTP status code means, when to use it and how to fix the common errors.

Runs in your browser

71 status codes

1xxInformationalThe request was received and is continuing.

100ContinueThe server got the request headers; the client can send the body.

Used when a client sends Expect: 100-continue before a large upload, so it does not waste bandwidth if the server would reject the request anyway.

Defined in RFC 9110Link
101Switching ProtocolsThe server agrees to switch protocols, for example to WebSocket.

Sent in reply to an Upgrade header. After this response the connection speaks the new protocol.

Defined in RFC 9110Link
102ProcessingThe server is still working on a long request (WebDAV).

An old WebDAV interim response that keeps the client from timing out. Rarely used today.

Defined in RFC 2518Link
103Early HintsHints the browser can use before the final response, such as resources to preload.

Lets a server send Link headers (preload, preconnect) while it is still preparing the page, so the browser can start fetching CSS and fonts sooner.

Defined in RFC 8297Link

2xxSuccessThe request was received, understood and accepted.

200OKThe request succeeded.

The standard success response. For GET it carries the resource; for POST it usually carries the result of the action.

Defined in RFC 9110Link
201CreatedThe request succeeded and created a new resource.

Typical reply to a POST that creates something. Include a Location header with the new resource’s URL.

Defined in RFC 9110Link
202AcceptedThe request was accepted for processing, but is not finished.

Use for work that happens in the background (queued jobs, batch imports). Often returns a link where the client can check progress.

Defined in RFC 9110Link
203Non-Authoritative InformationThe response was changed by a proxy.

The payload is a modified copy of the origin server’s response, for example after a transforming proxy.

Defined in RFC 9110Link
204No ContentSuccess, with no body to return.

Common for DELETE, or for PUT and PATCH when the client does not need the updated resource back. The response must not have a body.

Defined in RFC 9110Link
205Reset ContentSuccess; the client should reset the form or view.

Tells the client to clear the input that caused the request, such as a submitted form.

Defined in RFC 9110Link
206Partial ContentHere is the part of the resource you asked for.

Reply to a Range request, used for resumable downloads and video streaming. Comes with a Content-Range header.

Defined in RFC 9110Link
207Multi-StatusSeveral statuses for several resources (WebDAV).

The body is an XML document with a separate status for each item in a batch operation.

Defined in RFC 4918Link
208Already ReportedItems already listed earlier in this response (WebDAV).

Used inside a 207 response to avoid listing the same resource many times.

Defined in RFC 5842Link
226IM UsedThe response is the result of instance manipulations (delta encoding).

Part of HTTP delta encoding, which is rarely used.

Defined in RFC 3229Link

3xxRedirectionMore action is needed, usually following a redirect.

300Multiple ChoicesThere are several representations; pick one.

For example different languages or formats. Rarely used because there is no standard way to choose.

Defined in RFC 9110Link
301Moved PermanentlyThe resource has a new permanent URL.

Browsers and search engines update to the new URL in the Location header. Clients may change POST to GET when following it; use 308 to keep the method.

Tip: For SEO, use 301 (or 308) when a page moves for good, and redirect straight to the final URL, not through chains.

Defined in RFC 9110Link
302FoundThe resource is temporarily at another URL.

A temporary redirect. Search engines keep the original URL. Clients may change POST to GET; use 307 to keep the method.

Defined in RFC 9110Link
303See OtherSee the result at another URL, with a GET.

Used after a POST (for example a form submission) to send the browser to a result page, so refreshing does not resubmit the form.

Defined in RFC 9110Link
304Not ModifiedYour cached copy is still up to date.

Reply to a conditional request (If-None-Match or If-Modified-Since). No body is sent, which saves bandwidth.

Defined in RFC 9110Link
305Use ProxyDeprecated: access the resource through a proxy.

Deprecated for security reasons; browsers ignore it.

Defined in RFC 9110Link
307Temporary RedirectTemporarily at another URL; repeat the same request there.

Like 302, but the method and body must not change, so a POST stays a POST.

Defined in RFC 9110Link
308Permanent RedirectPermanently at another URL; repeat the same request there.

Like 301, but the method and body must not change. Good for APIs that move.

Defined in RFC 9110Link

4xxClient errorThe request has a problem the client should fix.

400Bad RequestThe server could not understand the request.

The request is malformed: invalid JSON, a missing required field, a bad query parameter or an oversized header.

How to fix: Check the request body is valid (try the JSON Validator), the Content-Type matches the body, required fields are present and the URL is correctly encoded.

Defined in RFC 9110Link
401UnauthorizedYou need to authenticate (sign in) first.

Despite the name, it means “unauthenticated”: no valid credentials were sent. The response should include a WWW-Authenticate header.

How to fix: Send credentials (for example Authorization: Bearer <token>), check the token has not expired (try the JWT Decoder) and that you are calling the right environment.

Defined in RFC 9110Link
402Payment RequiredReserved for payment; some APIs use it when a plan limit or payment is needed.

Not standardised for general use, but some services return it when an account needs payment or has run out of credit.

Defined in RFC 9110Link
403ForbiddenYou are authenticated but not allowed to do this.

The server understood who you are but refuses the action, for example missing permissions, an IP block or a firewall rule.

How to fix: Check the account’s roles or scopes, file and folder permissions on the server, and any WAF, CDN or hotlink protection rules.

Defined in RFC 9110Link
404Not FoundNothing was found at this URL.

The most familiar error: the page or API route does not exist, or the server prefers not to say that it does.

How to fix: Check the URL for typos and the trailing slash, confirm the route exists for that HTTP method, and set up redirects for pages that moved.

Defined in RFC 9110Link
405Method Not AllowedThis URL does not support that HTTP method.

For example a POST to a read-only endpoint. The response must include an Allow header listing the methods that work.

How to fix: Use one of the methods in the Allow header, and check that your server or framework route is defined for this method.

Defined in RFC 9110Link
406Not AcceptableThe server cannot produce a response in a format you accept.

Content negotiation failed: nothing matches the client’s Accept, Accept-Language or Accept-Encoding headers.

How to fix: Relax the Accept header (for example Accept: */*) or ask for a format the API supports.

Defined in RFC 9110Link
407Proxy Authentication RequiredYou need to authenticate with a proxy first.

Like 401, but for a proxy between you and the server. Comes with a Proxy-Authenticate header.

Defined in RFC 9110Link
408Request TimeoutThe server gave up waiting for the request.

The client took too long to send the full request, often on a slow or idle connection.

How to fix: Retry the request; check for slow networks or very large uploads, and raise client or server timeouts if needed.

Defined in RFC 9110Link
409ConflictThe request conflicts with the current state of the resource.

For example creating something that already exists, or an edit based on an old version.

How to fix: Fetch the latest version, merge the changes and retry, or choose a different unique value.

Defined in RFC 9110Link
410GoneThe resource was deliberately removed and will not come back.

Stronger than 404: search engines drop the URL faster.

Defined in RFC 9110Link
411Length RequiredThe request needs a Content-Length header.

The server refuses requests with a body but no declared length.

How to fix: Send a Content-Length header, or use chunked transfer encoding where allowed.

Defined in RFC 9110Link
412Precondition FailedA condition in the request headers was not met.

For example If-Match did not match the current ETag, so an update was refused to avoid overwriting someone else’s change.

Defined in RFC 9110Link
413Content Too LargeThe request body is larger than the server allows.

Formerly “Payload Too Large”. Common with file uploads.

How to fix: Compress or split the upload, or raise the limit (for example client_max_body_size in nginx, upload_max_filesize in PHP).

Defined in RFC 9110Link
414URI Too LongThe URL is longer than the server will handle.

Often caused by putting too much data in the query string.

How to fix: Send large data in a POST body instead of the URL.

Defined in RFC 9110Link
415Unsupported Media TypeThe server does not support the body’s format.

The Content-Type is not one the endpoint accepts, such as sending form data to a JSON-only API.

How to fix: Set the right Content-Type (for example application/json) and make the body match it.

Defined in RFC 9110Link
416Range Not SatisfiableThe requested byte range is outside the file.

Reply to a Range request that asks for bytes beyond the end of the resource.

Defined in RFC 9110Link
417Expectation FailedThe server cannot meet the Expect header.

Usually means the server does not support Expect: 100-continue.

Defined in RFC 9110Link
418I'm a teapotAn April Fools’ joke: the server refuses to brew coffee because it is a teapot.

From the 1998 Hyper Text Coffee Pot Control Protocol. Some APIs use it playfully to reject requests.

Defined in RFC 2324Link
421Misdirected RequestThe request reached a server that cannot answer for this host.

Can happen with HTTP/2 connection reuse across domains that share a certificate.

Defined in RFC 9110Link
422Unprocessable ContentThe request is well-formed but its content is invalid.

Popular in APIs for validation errors, for example an email address in the wrong format.

How to fix: Read the error details in the response body and correct the fields it names.

Defined in RFC 9110Link
423LockedThe resource is locked (WebDAV).

Someone else holds a lock on the file.

Defined in RFC 4918Link
424Failed DependencyThe request failed because an earlier one failed (WebDAV).

Used in batch operations where one step depends on another.

Defined in RFC 4918Link
425Too EarlyThe server will not process a request that might be replayed.

Related to TLS 1.3 early data (0-RTT).

Defined in RFC 8470Link
426Upgrade RequiredSwitch to a different protocol to continue.

For example the server requires TLS or HTTP/2. Comes with an Upgrade header.

Defined in RFC 9110Link
428Precondition RequiredThe request must be conditional.

The server wants an If-Match header to prevent lost updates.

Defined in RFC 6585Link
429Too Many RequestsYou have sent too many requests; slow down.

Rate limiting. The Retry-After header, if present, says how long to wait.

How to fix: Wait for the Retry-After time, add exponential backoff to retries, cache responses and batch requests where the API allows.

Defined in RFC 6585Link
431Request Header Fields Too LargeThe request headers are too big.

Often caused by very large or too many cookies.

How to fix: Clear cookies for the site, or reduce the size of custom headers and tokens.

Defined in RFC 6585Link
444No Responsenginx closed the connection without a response.nginx

Used in nginx configuration to drop unwanted requests.

Link
451Unavailable For Legal ReasonsThe resource is blocked for legal reasons.

For example a court order or government censorship. The number is a nod to Fahrenheit 451.

Defined in RFC 7725Link
499Client Closed RequestThe client closed the connection before the server answered.nginx

Logged by nginx when the user cancels or the client times out first.

How to fix: Look for slow responses that make clients give up, and check client timeouts.

Link

5xxServer errorThe server failed to handle a valid request.

500Internal Server ErrorSomething went wrong on the server.

A generic error when the server hit an unexpected problem, such as an unhandled exception.

How to fix: Check the server error logs; it is usually a bug, a failed database query or a misconfiguration. Clients can retry later.

Defined in RFC 9110Link
501Not ImplementedThe server does not support this functionality.

For example an HTTP method the server does not recognise at all.

Defined in RFC 9110Link
502Bad GatewayA gateway or proxy got an invalid response from the server behind it.

Common with nginx, load balancers and CDNs when the application server crashed or returned garbage.

How to fix: Check that the upstream application is running and listening on the expected port, and look at both the proxy and application logs.

Defined in RFC 9110Link
503Service UnavailableThe server is temporarily unable to handle the request.

Overload or maintenance. A Retry-After header can say when to try again.

How to fix: Retry later; on the server side, scale up, fix crashing workers or end the maintenance mode.

Defined in RFC 9110Link
504Gateway TimeoutA gateway or proxy timed out waiting for the server behind it.

The upstream server took too long, often due to a slow database query or external API call.

How to fix: Speed up the slow request, move long work to a background job, or raise proxy timeouts (for example proxy_read_timeout in nginx).

Defined in RFC 9110Link
505HTTP Version Not SupportedThe server does not support the HTTP version used.

Rare in practice.

Defined in RFC 9110Link
506Variant Also NegotiatesA server configuration error in content negotiation.

The chosen variant is itself set up to negotiate, creating a loop.

Defined in RFC 2295Link
507Insufficient StorageThe server has run out of space to finish the request (WebDAV).

For example a full disk during an upload.

Defined in RFC 4918Link
508Loop DetectedThe server found an infinite loop (WebDAV).

Seen in recursive WebDAV operations; some hosts also use it for resource-limit errors.

Defined in RFC 5842Link
510Not ExtendedFurther extensions to the request are needed.

From an experimental extension framework; now obsolete.

Defined in RFC 2774Link
511Network Authentication RequiredYou need to sign in to the network first.

Used by captive portals, such as hotel or airport Wi-Fi login pages.

Defined in RFC 6585Link
520Web Server Returned an Unknown ErrorThe origin server returned something unexpected to Cloudflare.Cloudflare

A catch-all Cloudflare error, often an empty or invalid response.

How to fix: Check that the origin server is healthy and returns valid HTTP responses.

Link
521Web Server Is DownCloudflare could not connect to the origin server.Cloudflare

The origin refused the connection.

How to fix: Make sure the web server is running and that its firewall allows Cloudflare’s IP ranges.

Link
522Connection Timed OutCloudflare timed out connecting to the origin server.Cloudflare

The origin did not complete the TCP handshake in time.

Link
523Origin Is UnreachableCloudflare could not reach the origin server.Cloudflare

Often a DNS or routing problem.

Link
524A Timeout OccurredThe origin took too long to send a response to Cloudflare.Cloudflare

Cloudflare waited about 100 seconds for the HTTP response.

How to fix: Make the request faster or move long-running work to a background job.

Link
525SSL Handshake FailedThe TLS handshake between Cloudflare and the origin failed.Cloudflare

Check the origin’s certificate and TLS settings.

Link
526Invalid SSL CertificateThe origin’s certificate could not be validated.Cloudflare

Seen with Cloudflare’s Full (strict) SSL mode when the origin certificate is expired or self-signed.

Link

What is the HTTP Status Code Lookup?

Every HTTP response starts with a three-digit status code that tells the client what happened. The first digit gives the class: 1xx informational, 2xx success, 3xx redirection, 4xx a problem with the request, and 5xx a problem on the server.

This reference covers every standard code from the HTTP specifications, plus the unofficial ones you will meet from nginx and Cloudflare. Search by number or by words like “timeout” or “redirect”, and open any code for when it is used and, for errors, the usual causes and how to fix them.

How to use it

  1. Type a code (like 404) or a word (like “forbidden”) in the search box.
  2. Filter by class: 1xx, 2xx, 3xx, 4xx or 5xx.
  3. Open a code to read when it is used and how to fix it.
  4. Share a link straight to a code: the address bar updates, for example #429.

Features

  • Every standard code. All codes from the current HTTP specification (RFC 9110) and related RFCs, including WebDAV.
  • How to fix errors. Common causes and fixes for 4xx and 5xx errors such as 403, 429, 502 and 504.
  • Unofficial codes. nginx 444 and 499, and Cloudflare 520–526, clearly marked.
  • Instant search. Find a code by number or by words in its name and description.
  • Links to a code. Each code has its own link you can share with your team.
  • Works offline. The whole reference is on this page; nothing is fetched as you search.

Frequently asked questions

What is the difference between 401 and 403?

401 Unauthorized means you are not authenticated: no valid credentials were sent, so sign in or send a token. 403 Forbidden means the server knows who you are, but you are not allowed to do this.

Should I use 301 or 302 for a redirect?

Use 301 (or 308) when a page has moved for good: browsers cache it and search engines move their ranking to the new URL. Use 302 (or 307) for temporary moves. 307 and 308 also guarantee that a POST stays a POST.

What is the difference between 502, 503 and 504?

502 Bad Gateway means a proxy got an invalid response from the server behind it. 503 Service Unavailable means the server is overloaded or down for maintenance. 504 Gateway Timeout means the proxy waited too long for the server behind it.

When should an API return 400 or 422?

Use 400 when the request cannot be read at all, such as broken JSON. Many APIs use 422 when the request is readable but the data fails validation, such as an invalid email address, and explain which fields are wrong in the body.

What does 429 Too Many Requests mean?

You hit a rate limit. Wait before retrying (check the Retry-After header), retry with exponential backoff, and reduce how often you call the API.

Last updated · Free, no sign-up, runs in your browser.

Free for everyone, kept free by you.

No paywall, no sign-up and no watermarks. If a tool saved you time, you can chip in any amount by UPI to keep Nova Free Tools running.

Esc
↑↓ move↵ openEsc close