HTTP Status Codes

Searchable reference for every HTTP status code with descriptions and RFC links.

61 results

1xx Informational

Request received, continuing process.

100

Continue

RFC 9110

The server has received the request headers and the client should proceed to send the request body.

101

Switching Protocols

RFC 9110

The server is switching protocols as requested by the client (e.g. WebSocket upgrade).

102

Processing

RFC 2518

WebDAV: the server has received and is processing the request, but no response is available yet.

103

Early Hints

RFC 8297

Used to return preliminary headers (e.g. Link) before the final response.

2xx Success

Request received, understood, and accepted.

200

OK

RFC 9110

Standard success response. The body contains the requested resource or operation result.

201

Created

RFC 9110

Request succeeded and a new resource was created. Location header should point to it.

202

Accepted

RFC 9110

Request accepted for processing but not yet completed (asynchronous handling).

203

Non-Authoritative Information

RFC 9110

The returned metadata is from a transforming proxy, not the origin server.

204

No Content

RFC 9110

Success with no response body. Common for DELETE and PUT operations.

205

Reset Content

RFC 9110

Success; the client should reset the document view (e.g. clear a form).

206

Partial Content

RFC 9110

Used for range requests. The body contains only the requested byte range.

207

Multi-Status

RFC 4918

WebDAV: body contains an XML document with multiple independent status codes.

208

Already Reported

RFC 5842

WebDAV: members of a binding already enumerated and won't be repeated.

226

IM Used

RFC 3229

Server fulfilled a GET using delta encoding (instance manipulations).

3xx Redirection

Further action needed to complete the request.

300

Multiple Choices

RFC 9110

Multiple representations available; the user or agent should choose one.

301

Moved Permanently

RFC 9110

Resource permanently moved to the URL in the Location header. Cacheable.

302

Found

RFC 9110

Resource temporarily at a different URL. Method may change to GET historically.

303

See Other

RFC 9110

Response to the request can be found at another URL via GET (Post/Redirect/Get).

304

Not Modified

RFC 9110

Cached version is still valid. Sent in response to conditional GET requests.

307

Temporary Redirect

RFC 9110

Temporary redirect that preserves the original HTTP method and body.

308

Permanent Redirect

RFC 9110

Permanent redirect that preserves the original HTTP method and body.

4xx Client Error

Request contains bad syntax or cannot be fulfilled.

400

Bad Request

RFC 9110

Server cannot process the request due to malformed syntax or invalid input.

401

Unauthorized

RFC 9110

Authentication required or has failed. Use WWW-Authenticate header.

402

Payment Required

RFC 9110

Reserved for future use. Sometimes used by APIs to signal quota or billing issues.

403

Forbidden

RFC 9110

Server understood the request but refuses to authorize it. Authentication won't help.

404

Not Found

RFC 9110

The requested resource does not exist on the server.

405

Method Not Allowed

RFC 9110

Method is not supported for this resource. Allow header lists valid methods.

406

Not Acceptable

RFC 9110

Resource cannot produce a response matching the Accept headers in the request.

407

Proxy Authentication Required

RFC 9110

Client must authenticate with the proxy first.

408

Request Timeout

RFC 9110

Server timed out waiting for the request. The client may repeat without modification.

409

Conflict

RFC 9110

Request conflicts with the current state (e.g. version conflict, duplicate).

410

Gone

RFC 9110

Resource is permanently gone with no forwarding address. Stronger than 404.

411

Length Required

RFC 9110

Server requires a Content-Length header.

412

Precondition Failed

RFC 9110

A precondition (e.g. If-Match) in the request headers was not met.

413

Content Too Large

RFC 9110

Request body is larger than the server is willing or able to process.

414

URI Too Long

RFC 9110

Request URI is longer than the server is willing to interpret.

415

Unsupported Media Type

RFC 9110

The request's media type is not supported by the resource.

416

Range Not Satisfiable

RFC 9110

The Range header requests a portion that cannot be supplied.

417

Expectation Failed

RFC 9110

The expectation given in the Expect header could not be met.

418

I'm a Teapot

RFC 2324

April Fools' joke from RFC 2324. Returned by teapots that cannot brew coffee.

421

Misdirected Request

RFC 9110

Request was directed at a server unable to produce a response for the target URI.

422

Unprocessable Content

RFC 9110

Request was well-formed but had semantic errors. Common for validation failures.

423

Locked

RFC 4918

WebDAV: the resource being accessed is locked.

424

Failed Dependency

RFC 4918

WebDAV: the request failed because it depended on another request that failed.

425

Too Early

RFC 8470

Server is unwilling to risk processing a request that might be replayed.

426

Upgrade Required

RFC 9110

Client must switch to a different protocol given in the Upgrade header.

428

Precondition Required

RFC 6585

Server requires the request to be conditional (e.g. If-Match) to avoid lost updates.

429

Too Many Requests

RFC 6585

Client has sent too many requests in a given time. Use Retry-After header.

431

Request Header Fields Too Large

RFC 6585

Server refuses to process the request because headers are too large.

451

Unavailable For Legal Reasons

RFC 7725

Resource is unavailable due to a legal demand (e.g. censorship, takedown).

5xx Server Error

Server failed to fulfill an apparently valid request.

500

Internal Server Error

RFC 9110

Generic error: the server encountered an unexpected condition.

501

Not Implemented

RFC 9110

Server does not support the functionality required to fulfill the request.

502

Bad Gateway

RFC 9110

Server, acting as a gateway, received an invalid response from an upstream server.

503

Service Unavailable

RFC 9110

Server is temporarily unable to handle the request (overload or maintenance).

504

Gateway Timeout

RFC 9110

Gateway did not receive a timely response from the upstream server.

505

HTTP Version Not Supported

RFC 9110

Server does not support the HTTP protocol version used in the request.

506

Variant Also Negotiates

RFC 2295

Transparent content negotiation results in a circular reference.

507

Insufficient Storage

RFC 4918

WebDAV: server cannot store the representation needed to complete the request.

508

Loop Detected

RFC 5842

WebDAV: server detected an infinite loop while processing the request.

510

Not Extended

RFC 2774

Further extensions to the request are required for the server to fulfill it.

511

Network Authentication Required

RFC 6585

Client needs to authenticate to gain network access (e.g. captive portal).

About HTTP Status Codes

HTTP Status Codes is a searchable reference for every status code in the HTTP standard — 1xx informational, 2xx success, 3xx redirection, 4xx client error, 5xx server error — plus the common non-standard codes that real servers return (`418 I'm a teapot`, `444 No Response`, `499 Client Closed Request`). Each entry has a one-line description, a longer explanation of when to send it, and a link to the relevant RFC section so you can jump to the canonical definition.

Reach for it whenever you are debugging or designing an API: deciding between `400` and `422` for a validation failure, working out whether `301` or `308` is the right redirect, or looking up what `425 Too Early` actually means before merging a feature that returns it. The reference is offline — every code is bundled into the page, so no network request is needed to look up the meaning of a code that just appeared in your logs.

Examples

Input
search: 422
Output
422 Unprocessable Content
— The request was well-formed but had semantic errors (validation failed).
— RFC 9110 §15.5.21

Each entry includes a description, a longer rationale, and a deep link to the RFC. Search by number or by keyword ("redirect", "validation", "forbidden").

Frequently asked questions

Which RFCs do the descriptions follow?

RFC 9110 (HTTP Semantics, the consolidated definition that supersedes RFC 7231), RFC 9111 (Caching), and the WebDAV / RESTful extensions where applicable. Older codes that originated in RFC 2616 or 7231 are still cited for historical context.

Should I use 400 or 422 for validation errors?

Both are widely used. RFC 9110 says `400 Bad Request` covers any malformed request; `422 Unprocessable Content` is more specific — the request *parses* fine but the contents fail semantic validation. Use 422 if you want clients to distinguish parse errors from validation errors; otherwise 400 is fine.

What is the difference between 301, 302, 307, and 308?

301 / 308 are *permanent*; 302 / 307 are *temporary*. 301 / 302 may change the request method (POST → GET) on follow; 307 / 308 preserve the method. Modern recommendation: 308 for permanent redirects (preserves method), 307 for temporary, never 301 or 302 unless you must support ancient clients.

Why does the reference include non-standard codes?

Because real servers return them. `418 I'm a teapot` is a joke that became canonical; `444 No Response` is Nginx-specific; `499 Client Closed Request` is widely emitted by proxies. Knowing what a non-standard code means is more useful than pretending it is not there.