Skip to main content

HTTP Status Codes Reference

HTTP Status Codes is a searchable reference of every HTTP response code from 1xx to 5xx with clear descriptions. Search by number, name, or meaning and copy any code instantly.

Written & reviewed by Helperzy Editorial Team · Updated July 2026

100

Continue

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

101

Switching Protocols

The requester has asked the server to switch protocols and the server has agreed to do so.

102

Processing

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

103

Early Hints

Used to return some response headers before the final HTTP message, allowing the client to start preloading resources.

200

OK

The request succeeded. The result meaning depends on the HTTP method used.

201

Created

The request succeeded and a new resource was created as a result. Typically the response to POST or PUT.

202

Accepted

The request has been received but not yet acted upon. It is non-committal and intended for asynchronous processing.

203

Non-Authoritative Information

The returned metadata is from a local or third-party copy rather than the origin server.

204

No Content

The server successfully processed the request and is not returning any content in the body.

205

Reset Content

Tells the client to reset the document view, for example to clear a form after submission.

206

Partial Content

The server is delivering only part of the resource due to a Range header sent by the client.

207

Multi-Status

WebDAV. Conveys information about multiple resources where several status codes might be appropriate.

208

Already Reported

WebDAV. The members of a binding have already been enumerated in a preceding part of the response.

226

IM Used

The server has fulfilled a GET request and the response represents the result of instance manipulations applied to the current instance.

300

Multiple Choices

The request has more than one possible response. The user or user agent should choose one of them.

301

Moved Permanently

The URL of the requested resource has been changed permanently. The new URL is given in the response.

302

Found

The requested resource resides temporarily under a different URL. The client should keep using the original URL.

303

See Other

Directs the client to get the requested resource at another URL with a GET request.

304

Not Modified

Used for caching. The response has not been modified, so the client can continue to use the cached version.

305

Use Proxy

Deprecated. Indicates that the requested response must be accessed through a proxy.

307

Temporary Redirect

The resource resides temporarily at a different URL and the request method must not be changed when reissuing.

308

Permanent Redirect

The resource now permanently lives at a different URL and the request method must not be changed.

400

Bad Request

The server cannot process the request due to a client error such as malformed syntax or invalid framing.

401

Unauthorized

Authentication is required and has failed or not been provided. Semantically means 'unauthenticated'.

402

Payment Required

Reserved for future use. Sometimes used by APIs to signal that payment or a paid plan is required.

403

Forbidden

The client is authenticated but does not have permission to access the requested resource.

404

Not Found

The server cannot find the requested resource. The URL is not recognized.

405

Method Not Allowed

The request method is known by the server but is not supported by the target resource.

406

Not Acceptable

The server cannot produce a response matching the list of acceptable values in the request's Accept headers.

407

Proxy Authentication Required

Similar to 401, but authentication is needed for a proxy.

408

Request Timeout

The server timed out waiting for the request. The client may repeat the request without modifications.

409

Conflict

The request conflicts with the current state of the server, such as an edit conflict.

410

Gone

The requested content has been permanently deleted from the server with no forwarding address.

411

Length Required

The server rejected the request because the Content-Length header field is not defined and is required.

412

Precondition Failed

The client has indicated preconditions in its headers which the server does not meet.

413

Payload Too Large

The request entity is larger than limits defined by the server. The server may close the connection.

414

URI Too Long

The URI requested by the client is longer than the server is willing to interpret.

415

Unsupported Media Type

The media format of the requested data is not supported by the server, so it rejects the request.

416

Range Not Satisfiable

The range specified by the Range header field in the request cannot be fulfilled.

417

Expectation Failed

The expectation indicated by the Expect request header field cannot be met by the server.

418

I'm a teapot

The server refuses to brew coffee because it is, permanently, a teapot. An April Fools' joke from RFC 2324.

421

Misdirected Request

The request was directed at a server that is not able to produce a response.

422

Unprocessable Content

The request was well-formed but could not be followed due to semantic errors. Common in validation.

423

Locked

WebDAV. The resource that is being accessed is locked.

424

Failed Dependency

WebDAV. The request failed because it depended on another request that failed.

425

Too Early

Indicates the server is unwilling to risk processing a request that might be replayed.

426

Upgrade Required

The server refuses to perform the request using the current protocol but might after the client upgrades.

428

Precondition Required

The origin server requires the request to be conditional to prevent lost updates.

429

Too Many Requests

The user has sent too many requests in a given amount of time (rate limiting).

431

Request Header Fields Too Large

The server is unwilling to process the request because its header fields are too large.

451

Unavailable For Legal Reasons

The requested resource is unavailable due to legal demands, such as government censorship.

500

Internal Server Error

The server encountered an unexpected condition that prevented it from fulfilling the request.

501

Not Implemented

The request method is not supported by the server and cannot be handled. Only GET and HEAD are required.

502

Bad Gateway

The server, while acting as a gateway or proxy, received an invalid response from the upstream server.

503

Service Unavailable

The server is not ready to handle the request, often due to maintenance or overload.

504

Gateway Timeout

The server, acting as a gateway, did not get a response in time from the upstream server.

505

HTTP Version Not Supported

The HTTP version used in the request is not supported by the server.

506

Variant Also Negotiates

The server has an internal configuration error in transparent content negotiation.

507

Insufficient Storage

WebDAV. The server is unable to store the representation needed to complete the request.

508

Loop Detected

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

510

Not Extended

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

511

Network Authentication Required

The client needs to authenticate to gain network access, often used by captive portals.

100% Private

This reference runs entirely in your browser. Nothing uploaded.

How to Use HTTP Status Codes

1

Search or Filter

Type a number such as 422, a name such as Forbidden, or a keyword like redirect. You can also filter to a single class when you only want the 4xx or 5xx family.

2

Read the Meaning

Each entry explains what the code asserts and when a server should send it, which matters because caches, crawlers and client libraries all act on the number.

3

Copy the Code

Copy the code and name into your API documentation, error handler or incident notes. Pair 429 with a Retry-After header and 201 with a Location header where relevant.

What HTTP Status Codes Mean and How to Choose One

Every HTTP response carries a three-digit status code that summarises what the server decided. This reference lists the standard codes with a plain description of each, searchable by number, name or keyword and filterable by class. Backend developers designing an API, frontend developers handling a failed fetch, SEO specialists auditing redirects and support engineers reading a server log all consult the same list. The codes are not decoration: browsers, caches, search engine crawlers and HTTP client libraries all change their behaviour based on the number you return, so choosing the right one is a design decision rather than a formality. The first digit is the whole taxonomy. A 1xx response is informational and you will rarely see one outside protocol upgrades. A 2xx means success, with 200 OK the default, 201 Created for a resource that now exists and should carry a Location header, and 204 No Content for a successful call with nothing to send back. A 3xx means redirection, where 301 is a permanent move that transfers search ranking, 302 is temporary and leaves the original URL authoritative, 307 preserves the request method where 302 historically did not, and 304 Not Modified is what makes browser caching work by telling the client its copy is still fresh. A 4xx means the client sent something wrong, and a 5xx means the server failed at something the client could not have prevented. That last distinction is the one API designers get wrong most often. Take a concrete API interaction. A client sends a POST to create a user with a malformed email address. The correct response is 422 Unprocessable Content, or 400 Bad Request if you prefer the simpler split, because the caller can fix the payload and retry. Now the same request arrives correctly formed but the database connection has died. The correct response is 500 Internal Server Error, because nothing the client changes will help. Return 500 for the first case and every client will treat a permanent validation failure as a transient fault and retry it, potentially thousands of times. Return 400 for the second and monitoring will show a healthy service while the database is down. One digit, completely different operational consequences. Everyday uses. An SEO specialist migrating a blog checks that old article URLs return 301 rather than 302, since only the permanent code reliably passes ranking signals to the new address. A frontend developer writing error handling maps 401 to a login redirect and 403 to a permission message, because the two mean genuinely different things: not authenticated versus authenticated but not allowed. A platform engineer investigating an outage sees 502 Bad Gateway in the load balancer log and knows the upstream application is not responding rather than the proxy being at fault. An API author adds 429 Too Many Requests with a Retry-After header so clients back off politely instead of hammering the endpoint. Two things worth remembering. 401 and 403 are routinely confused: 401 means the request lacked valid credentials and the client should authenticate, while 403 means the credentials were fine but the account is not permitted to do this, and swapping them sends users into a login loop they cannot escape. Similarly, returning 200 with an error message in the body is a common shortcut that breaks caching, monitoring and client retry logic, because every tool in the chain believes the call succeeded. As for 418 I am a teapot, it is a real registered code from an April Fools specification and best left out of production. This reference is bundled with the page and searched locally, so nothing you look up is sent anywhere.

Examples: HTTP Status Codes

Input

POST /users with a malformed email address in the body

Result

422 Unprocessable Content (or 400 Bad Request)

The payload is the problem and the caller can fix it, so a 4xx is correct; returning 500 here makes clients treat a permanent validation failure as a transient fault and retry endlessly.

Input

The same valid POST, but the database connection has failed

Result

500 Internal Server Error

Nothing the client changes will help, so the 5xx class is correct and monitoring will correctly flag the service as unhealthy rather than reporting a client mistake.

Frequently Asked Questions – HTTP Status Codes

HTTP status codes are grouped by their first digit: 1xx informational, 2xx success, 3xx redirection, 4xx client errors, and 5xx server errors. The first digit tells you the general outcome at a glance, and the remaining two digits identify the specific situation within that class.