HTTP Status Codes Reference

Complete HTTP status codes reference with descriptions and RFC specs.

61 codes

100
ContinueRFC 9110

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

101
Switching ProtocolsRFC 9110

The server agrees to switch protocols as requested by the client via the Upgrade header.

102
ProcessingRFC 2518

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

103
Early HintsRFC 8297

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

200
OKRFC 9110

The request succeeded. The meaning of success depends on the HTTP method used.

201
CreatedRFC 9110

The request succeeded and a new resource was created. Typically used with POST or PUT.

202
AcceptedRFC 9110

The request has been accepted for processing, but processing has not been completed.

203
Non-Authoritative InformationRFC 9110

The returned metadata is not exactly the same as available from the origin server, but collected from a local or third-party copy.

204
No ContentRFC 9110

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

205
Reset ContentRFC 9110

The server successfully processed the request and asks the client to reset the document view.

206
Partial ContentRFC 9110

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

207
Multi-StatusRFC 4918

The message body contains multiple separate response codes for multiple independent operations.

208
Already ReportedRFC 5842

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

226
IM UsedRFC 3229

The server has fulfilled a GET request and the response is a representation of the result of one or more instance-manipulations.

300
Multiple ChoicesRFC 9110

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

301
Moved PermanentlyRFC 9110

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

302
FoundRFC 9110

The URI of requested resource has been changed temporarily. Further changes in the URI might be made in the future.

303
See OtherRFC 9110

The server sent this response to direct the client to get the requested resource at another URI with a GET request.

304
Not ModifiedRFC 9110

Used for caching. Tells the client that the response has not been modified, so the client can use the cached version.

307
Temporary RedirectRFC 9110

The server sends this response to direct the client to get the requested resource at another URI with the same method.

308
Permanent RedirectRFC 9110

The resource is now permanently located at another URI. Similar to 301 but the request method must not change.

400
Bad RequestRFC 9110

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

401
UnauthorizedRFC 9110

The client must authenticate itself to get the requested response. Similar to 403 but authentication is possible.

402
Payment RequiredRFC 9110

Reserved for future use. Originally intended for digital payment systems.

403
ForbiddenRFC 9110

The client does not have access rights to the content. Unlike 401, the client's identity is known to the server.

404
Not FoundRFC 9110

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

405
Method Not AllowedRFC 9110

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

406
Not AcceptableRFC 9110

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

407
Proxy Authentication RequiredRFC 9110

Authentication is needed to be done by a proxy.

408
Request TimeoutRFC 9110

The server would like to shut down this unused connection. It is sent on an idle connection by some servers.

409
ConflictRFC 9110

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

410
GoneRFC 9110

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

411
Length RequiredRFC 9110

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

412
Precondition FailedRFC 9110

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

413
Content Too LargeRFC 9110

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

414
URI Too LongRFC 9110

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

415
Unsupported Media TypeRFC 9110

The media format of the requested data is not supported by the server.

416
Range Not SatisfiableRFC 9110

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

417
Expectation FailedRFC 9110

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

418
I'm a TeapotRFC 2324

The server refuses the attempt to brew coffee with a teapot. An April Fools' joke from RFC 2324.

421
Misdirected RequestRFC 9110

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

422
Unprocessable ContentRFC 9110

The request was well-formed but was unable to be followed due to semantic errors.

423
LockedRFC 4918

The resource that is being accessed is locked.

424
Failed DependencyRFC 4918

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

425
Too EarlyRFC 8470

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

426
Upgrade RequiredRFC 9110

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

428
Precondition RequiredRFC 6585

The origin server requires the request to be conditional to prevent lost-update problems.

429
Too Many RequestsRFC 6585

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

431
Request Header Fields Too LargeRFC 6585

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

451
Unavailable For Legal ReasonsRFC 7725

The user agent requested a resource that cannot legally be provided, such as a web page censored by a government.

500
Internal Server ErrorRFC 9110

The server has encountered a situation it does not know how to handle.

501
Not ImplementedRFC 9110

The request method is not supported by the server and cannot be handled.

502
Bad GatewayRFC 9110

The server, while working as a gateway, got an invalid response from the upstream server.

503
Service UnavailableRFC 9110

The server is not ready to handle the request. Common causes are a server that is down for maintenance or overloaded.

504
Gateway TimeoutRFC 9110

The server is acting as a gateway and cannot get a response in time from the upstream server.

505
HTTP Version Not SupportedRFC 9110

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

506
Variant Also NegotiatesRFC 2295

The server has an internal configuration error: the chosen variant resource is configured to engage in transparent content negotiation itself.

507
Insufficient StorageRFC 4918

The method could not be performed on the resource because the server is unable to store the representation needed.

508
Loop DetectedRFC 5842

The server detected an infinite loop while processing the request.

510
Not ExtendedRFC 2774

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

511
Network Authentication RequiredRFC 6585

The client needs to authenticate to gain network access.

What Are HTTP Status Codes?

HTTP status codes are three-digit numbers that a server returns in response to every HTTP request. They tell the client whether the request succeeded, needs further action, or failed — and why. Status codes are defined in RFC 9110 and grouped into five classes based on their first digit: 1xx informational, 2xx success, 3xx redirection, 4xx client error, and 5xx server error. Understanding status codes is essential for debugging APIs, configuring web servers, and building reliable HTTP clients.

How to Use This Reference

  1. Type a code number (e.g. 404) or keyword (e.g. timeout) in the search box to filter the list.
  2. Use the 1xx–5xx buttons to filter by status class.
  3. Each entry shows the code, name, description, and the RFC that defines it.

Status Code Classes

  • 1xx Informational — The request was received and the process is continuing.
  • 2xx Success — The request was successfully received, understood, and accepted.
  • 3xx Redirection — Further action must be taken to complete the request.
  • 4xx Client Error — The request contains bad syntax or cannot be fulfilled by the server.
  • 5xx Server Error — The server failed to fulfill an apparently valid request.

FAQ

What are HTTP status codes?

HTTP status codes are three-digit numbers returned by a server in response to a client request. They indicate whether the request was successful, redirected, or resulted in an error. Codes are grouped into five classes: 1xx (informational), 2xx (success), 3xx (redirection), 4xx (client error), and 5xx (server error).

What is the difference between 401 and 403?

401 Unauthorized means the client must authenticate — the server does not know who you are. 403 Forbidden means the server knows who you are but you do not have permission to access the resource.

What is the difference between 301 and 302?

301 Moved Permanently tells clients and search engines that the resource has moved forever — update your bookmarks and links. 302 Found is a temporary redirect — the resource is temporarily at a different URL, so keep using the original URL.

What does 429 Too Many Requests mean?

429 Too Many Requests means the client has sent too many requests in a given time window. The server is rate-limiting the client. The response often includes a Retry-After header indicating when to try again.