🔒 Runs in your browser — nothing is uploaded✓ Free, no signup

HTTP Status Codes — Complete List

Every HTTP response status code explained in plain English. Search by number or keyword, or filter by class — from 1xx informational to 5xx server errors.

1xx Informational

The request was received and is being processed.

100

Continue

The server has received the request headers and the client should send the body. Used with Expect: 100-continue.

RFC 9110 · Link

101

Switching Protocols

The server is switching protocols as requested by the Upgrade header — for example, to WebSocket.

RFC 9110 · Link

102

Processing

The server has accepted the request but hasn't finished it yet (WebDAV). Rarely used today.

RFC 2518 · Link

103

Early Hints

Lets the browser start preloading resources (via Link headers) while the server prepares the final response.

RFC 8297 · Link

2xx Success

The request was received, understood and accepted.

200

OK

The request succeeded. The body contains the result — the resource for GET, the outcome for POST.

RFC 9110 · Link

201

Created

The request succeeded and a new resource was created. The Location header usually points to it.

RFC 9110 · Link

202

Accepted

The request was accepted for processing but isn't finished — common for background jobs and queues.

RFC 9110 · Link

203

Non-Authoritative Information

The response was modified by a proxy and isn't exactly what the origin server sent.

RFC 9110 · Link

204

No Content

The request succeeded and there's no body to return. Common for DELETE and for PUT updates.

RFC 9110 · Link

205

Reset Content

The request succeeded and the client should reset the form or view that sent it.

RFC 9110 · Link

206

Partial Content

Only part of the resource is returned, as asked for by a Range header — used for resumable downloads and video streaming.

RFC 9110 · Link

207

Multi-Status

The body contains several status codes for several operations (WebDAV).

RFC 4918 · Link

208

Already Reported

Members of a WebDAV binding were already listed earlier in the response.

RFC 5842 · Link

226

IM Used

The server applied instance manipulations (such as a delta) to the response.

RFC 3229 · Link

3xx Redirection

Further action is needed — usually following another URL.

300

Multiple Choices

There are several possible responses and the client should choose one.

RFC 9110 · Link

301

Moved Permanently

A permanent redirect — the resource has a new URL, given in the Location header. Browsers and search engines update their links. The method may change from POST to GET.

RFC 9110 · Link

302

Found

A temporary redirect — the resource is at another URL for now (Location header). Browsers usually follow it with GET.

RFC 9110 · Link

303

See Other

A redirect telling the client to GET another URL — typically used after a form POST to show a result page.

RFC 9110 · Link

304

Not Modified

The cached copy is still valid, so no body is sent. A response to If-None-Match or If-Modified-Since.

RFC 9110 · Link

307

Temporary Redirect

Temporarily at another URL — and unlike 302, the method and body must stay the same.

RFC 9110 · Link

308

Permanent Redirect

Permanently at another URL — and unlike 301, the method and body must stay the same.

RFC 9110 · Link

4xx Client error

The request has a problem the client needs to fix.

400

Bad Request

The server can't process the request because it's malformed — invalid JSON, missing fields or bad syntax.

RFC 9110 · Link

401

Unauthorized

Authentication is required or has failed. Despite the name, it means unauthenticated — send valid credentials.

RFC 9110 · Link

402

Payment Required

Reserved for future use. Some APIs use it for billing or quota problems.

RFC 9110 · Link

403

Forbidden

The server understood who you are but refuses access. Logging in again won't help.

RFC 9110 · Link

404

Not Found

The resource doesn't exist at this URL — or the server is hiding that it exists.

RFC 9110 · Link

405

Method Not Allowed

The URL exists but doesn't support this method (for example, POST to a read-only endpoint). The Allow header lists valid methods.

RFC 9110 · Link

406

Not Acceptable

The server can't produce a response matching the Accept headers sent by the client.

RFC 9110 · Link

407

Proxy Authentication Required

Like 401, but the client must authenticate with a proxy.

RFC 9110 · Link

408

Request Timeout

The server gave up waiting for the client to finish sending the request.

RFC 9110 · Link

409

Conflict

The request conflicts with the current state — for example, a duplicate record or an edit conflict.

RFC 9110 · Link

410

Gone

The resource was deliberately and permanently removed. Unlike 404, it won't come back.

RFC 9110 · Link

411

Length Required

The server needs a Content-Length header.

RFC 9110 · Link

412

Precondition Failed

A condition in the request headers (such as If-Match) wasn't met — often used to prevent lost updates.

RFC 9110 · Link

413

Content Too Large

The request body is larger than the server allows — for example, an upload over the size limit.

RFC 9110 · Link

414

URI Too Long

The URL is longer than the server will handle — often caused by very long query strings.

RFC 9110 · Link

415

Unsupported Media Type

The server doesn't support the body's format. Check the Content-Type header.

RFC 9110 · Link

416

Range Not Satisfiable

The Range requested is outside the size of the resource.

RFC 9110 · Link

417

Expectation Failed

The server can't meet the Expect request header.

RFC 9110 · Link

418

I'm a teapot

An April Fools' joke from the Hyper Text Coffee Pot Control Protocol. Some sites use it for playful errors.

RFC 2324 · Link

421

Misdirected Request

The request reached a server that can't respond for this host — seen with HTTP/2 connection reuse.

RFC 9110 · Link

422

Unprocessable Content

The syntax is fine but the content fails validation — common in REST APIs for field errors.

RFC 9110 · Link

423

Locked

The resource is locked (WebDAV).

RFC 4918 · Link

424

Failed Dependency

The request failed because an earlier request it depended on failed (WebDAV).

RFC 4918 · Link

425

Too Early

The server won't process a request that might be replayed (TLS early data).

RFC 8470 · Link

426

Upgrade Required

The client must switch to another protocol, given in the Upgrade header.

RFC 9110 · Link

428

Precondition Required

The server requires conditional requests (such as If-Match) to prevent lost updates.

RFC 6585 · Link

429

Too Many Requests

Rate limit exceeded. The Retry-After header says how long to wait before trying again.

RFC 6585 · Link

431

Request Header Fields Too Large

The headers are too big — often caused by too many or oversized cookies.

RFC 6585 · Link

451

Unavailable For Legal Reasons

Access is blocked for legal reasons, such as a court order or government censorship.

RFC 7725 · Link

5xx Server error

The server failed to handle a valid request.

500

Internal Server Error

A generic server error — something unexpected went wrong, such as an unhandled exception. Check the server logs.

RFC 9110 · Link

501

Not Implemented

The server doesn't support the functionality needed — for example, an unknown method.

RFC 9110 · Link

502

Bad Gateway

A gateway or proxy (such as Nginx or a load balancer) got an invalid response from the upstream server — often because the app crashed or isn't running.

RFC 9110 · Link

503

Service Unavailable

The server is temporarily unable to handle requests — overloaded or down for maintenance. Retry-After may say when to try again.

RFC 9110 · Link

504

Gateway Timeout

A gateway or proxy didn't get a response from the upstream server in time — often a slow query or a hung app.

RFC 9110 · Link

505

HTTP Version Not Supported

The server doesn't support the HTTP version used in the request.

RFC 9110 · Link

506

Variant Also Negotiates

A server configuration error in content negotiation.

RFC 2295 · Link

507

Insufficient Storage

The server can't store what's needed to complete the request (WebDAV).

RFC 4918 · Link

508

Loop Detected

The server found an infinite loop while processing the request (WebDAV).

RFC 5842 · Link

510

Not Extended

Further extensions are required for the server to fulfil the request.

RFC 2774 · Link

511

Network Authentication Required

You need to sign in to the network first — typical of hotel or airport Wi-Fi captive portals.

RFC 6585 · Link

When should you use the HTTP Status Codes?

  • Finding out what an error like 403, 422 or 502 actually means
  • Choosing the right status code when designing a REST API
  • Debugging redirects, caching (304) and rate limits (429)

How to use the HTTP Status Codes

  1. 1

    Search

    Type a code (404), a class (5xx) or words like redirect or rate limit.

  2. 2

    Filter by class

    Show only 2xx successes, 4xx client errors and so on.

  3. 3

    Read the explanation

    Each code says what it means, when it's used and which spec defines it.

  4. 4

    Share a code

    Use the Link under a code to share it directly, for example /http-status-codes#429.

Examples

Searching for 'redirect'

Search

redirect

Matches

301 Moved Permanently
302 Found
303 See Other
307 Temporary Redirect
308 Permanent Redirect

Common errors and how to fix them

401 or 403?
401 means you aren't authenticated (log in or send a token). 403 means you are, but you aren't allowed.
502 or 504?
Both come from a proxy or load balancer. 502 means the app sent a bad response or isn't running; 504 means it didn't answer in time.
Related tools: URL Parser · CORS Header Generator · cURL to Code

More from Web & Network

Free tools that run in your browser — no signup, nothing uploaded.

HTTP Status Codes FAQ

1xx informational, 2xx success, 3xx redirection, 4xx client errors (a problem with the request) and 5xx server errors (the server failed).

301 is a permanent redirect — browsers and search engines update to the new URL. 302 is temporary. Use 308 and 307 if the request method must not change.

The server has nothing at that URL. If the page was removed deliberately and won't return, 410 Gone is more precise.

400 for a request that can't be parsed (bad JSON or syntax). 422 when it parses but fails validation, such as a missing or invalid field.

You've hit a rate limit. Wait for the time in the Retry-After header before trying again.

An unexpected error on the server, such as an unhandled exception or a bug. The details are in the server's logs, not the response.