Skip to content
ToolMug

HTTP Status Codes

A complete, searchable list of HTTP response status codes. Each code has a short explanation of what it means and where it is defined, so you can quickly understand an error in your logs or browser.

Runs in your browser — nothing you enter is uploaded

100

ContinueRFC 9110

The server received the request headers; the client may send the body.

101

Switching ProtocolsRFC 9110

The server is switching to the protocol the client asked for, for example WebSocket.

103

Early HintsRFC 8297

Preliminary headers, often Link preload hints, sent before the final response.

200

OKRFC 9110

The request succeeded.

201

CreatedRFC 9110

The request succeeded and a new resource was created, usually after POST or PUT.

202

AcceptedRFC 9110

The request was accepted for processing, but processing has not finished.

203

Non-Authoritative InformationRFC 9110

The response was modified by a transforming proxy.

204

No ContentRFC 9110

The request succeeded and there is no body to return.

205

Reset ContentRFC 9110

The request succeeded; the client should reset the document view, such as clearing a form.

206

Partial ContentRFC 9110

Only part of the resource is returned, in response to a Range request.

207

Multi-StatusRFC 4918 (WebDAV)

Several status codes for several operations, in an XML body.

208

Already ReportedRFC 5842 (WebDAV)

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

226

IM UsedRFC 3229

The response is the result of instance manipulations such as a delta encoding.

300

Multiple ChoicesRFC 9110

There are several representations to choose from.

301

Moved PermanentlyRFC 9110

The resource has moved permanently to the URL in Location. Search engines transfer ranking to the new URL.

302

FoundRFC 9110

The resource is temporarily at another URL. Browsers may change POST to GET when following it.

303

See OtherRFC 9110

Fetch the result from another URL with GET, typically after a form submission.

304

Not ModifiedRFC 9110

The cached copy is still valid, in response to a conditional request.

307

Temporary RedirectRFC 9110

Temporary redirect that keeps the request method and body.

308

Permanent RedirectRFC 9110

Permanent redirect that keeps the request method and body.

400

Bad RequestRFC 9110

The server cannot process the request because it is malformed.

401

UnauthorizedRFC 9110

Authentication is required or has failed. The response includes WWW-Authenticate.

402

Payment RequiredRFC 9110

Reserved for future use; some APIs use it for billing problems.

403

ForbiddenRFC 9110

The server understood the request but refuses it. Logging in again will not help.

404

Not FoundRFC 9110

The resource does not exist, or the server will not say that it does.

405

Method Not AllowedRFC 9110

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

406

Not AcceptableRFC 9110

No representation matches the Accept headers of the request.

407

Proxy Authentication RequiredRFC 9110

The client must authenticate with the proxy first.

408

Request TimeoutRFC 9110

The server timed out waiting for the request.

409

ConflictRFC 9110

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

410

GoneRFC 9110

The resource has been removed permanently and will not come back.

411

Length RequiredRFC 9110

The request needs a Content-Length header.

412

Precondition FailedRFC 9110

A condition in the request headers, such as If-Match, was not met.

413

Content Too LargeRFC 9110

The request body is larger than the server allows. Formerly "Payload Too Large".

414

URI Too LongRFC 9110

The URL is longer than the server will process.

415

Unsupported Media TypeRFC 9110

The request body format, given by Content-Type, is not supported.

416

Range Not SatisfiableRFC 9110

The requested Range is outside the resource.

417

Expectation FailedRFC 9110

The Expect request header cannot be met.

418

I'm a teapotRFC 2324 (April Fools)

An April Fools joke from the Hyper Text Coffee Pot Control Protocol, kept by some servers.

421

Misdirected RequestRFC 9110

The request reached a server that cannot answer for this host, for example after connection reuse.

422

Unprocessable ContentRFC 9110

The request is well-formed but its content is invalid, such as failed validation.

423

LockedRFC 4918 (WebDAV)

The resource is locked.

424

Failed DependencyRFC 4918 (WebDAV)

The request failed because a request it depended on failed.

425

Too EarlyRFC 8470

The server will not process a request that might be replayed (TLS early data).

426

Upgrade RequiredRFC 9110

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

428

Precondition RequiredRFC 6585

The server requires a conditional request, to prevent lost updates.

429

Too Many RequestsRFC 6585

Rate limit exceeded. Retry-After says when to try again.

431

Request Header Fields Too LargeRFC 6585

The headers are too large, often because of big cookies.

451

Unavailable For Legal ReasonsRFC 7725

The resource is blocked for legal reasons, such as a court order.

499

Client Closed RequestNginx · Non-standard

Nginx log code: the client closed the connection before the server responded.

500

Internal Server ErrorRFC 9110

An unexpected error on the server.

501

Not ImplementedRFC 9110

The server does not support the functionality required.

502

Bad GatewayRFC 9110

A gateway or proxy got an invalid response from the upstream server.

503

Service UnavailableRFC 9110

The server is temporarily unable to handle the request, for example overload or maintenance.

504

Gateway TimeoutRFC 9110

A gateway or proxy did not get a response from upstream in time.

505

HTTP Version Not SupportedRFC 9110

The HTTP version of the request is not supported.

506

Variant Also NegotiatesRFC 2295

A configuration error in transparent content negotiation.

507

Insufficient StorageRFC 4918 (WebDAV)

The server cannot store what is needed to complete the request.

508

Loop DetectedRFC 5842 (WebDAV)

The server found an infinite loop while processing the request.

511

Network Authentication RequiredRFC 6585

You must log in to the network, typically at a captive portal such as hotel Wi-Fi.

520

Web Server Returned an Unknown ErrorCloudflare · Non-standard

Cloudflare: the origin server returned an empty, unknown or unexpected response.

521

Web Server Is DownCloudflare · Non-standard

Cloudflare: the origin server refused the connection.

522

Connection Timed OutCloudflare · Non-standard

Cloudflare: the TCP connection to the origin server timed out.

524

A Timeout OccurredCloudflare · Non-standard

Cloudflare: the origin accepted the connection but did not respond in time.

How to use

  1. Type a code or a word, for example 502 or redirect, into the search box.
  2. Or filter by class — informational, success, redirection, client error or server error.
  3. Link to a specific code by adding its number to the page address, for example

Options explained

Classes
1xx informational, 2xx success, 3xx redirection, 4xx client errors (a problem with the request) and 5xx server errors (a problem on the server).
Non-standard
Codes such as Nginx 499 and Cloudflare 520–524 are not in any RFC but appear often in logs.

Choosing a redirect code

The five redirect codes in RFC 9110 differ in two ways: whether the move is permanent, and whether the client may change the request method when it follows the redirect.

Code Meaning Permanent Method after redirect
301 Moved Permanently Yes May change from POST to GET
302 Found No May change from POST to GET
303 See Other No Always becomes GET
307 Temporary Redirect No Must stay the same
308 Permanent Redirect Yes Must stay the same

For a normal page move or an HTTP to HTTPS redirect, 301 is the usual choice. Use 308 or 307 when a POST request, for example a form or an API call, must reach the new address unchanged. Use 303 after a successful form submission to send the browser to a result page that it fetches with GET.

Frequently asked questions

What is the difference between 301 and 302?

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

What is the difference between 401 and 403?

401 means you are not authenticated — log in and try again. 403 means you are authenticated or identified but not allowed; logging in again will not help.

What does 502 Bad Gateway mean?

A proxy or load balancer could not get a valid response from the application behind it, usually because the application crashed, is restarting or is not listening.

Privacy

This tool runs entirely in your browser. Your files and text are processed on your device and are never uploaded to our servers.

Related tools