HTTP Status Codes

Reference guide for HTTP status codes with descriptions. Free, fast, and works entirely in your browser with no sign-up required.

Updated

Share:
Home/Utility Tools/HTTP Status Codes

HTTP Status Codes

Complete reference of all HTTP status codes — search, filter by category, view mnemonics, compare similar codes, troubleshooting guides, REST best practices, RFC references, and header examples.

100

Continue

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

"100 Continue" — server says "keep going, I'm listening"

101

Switching Protocols

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

"101" — one protocol becomes another

102

Processing

WebDAV

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

"102" — still chewing, haven't swallowed yet

103

Early Hints

Used to return some response headers before the final HTTP message, allowing resource preloading.

"103 Early Hints" — the server sends you a shopping list before the store opens

200

OK

Common

The request was successful. The meaning depends on the HTTP method used.

"200 OK" — everything's fine, here's your data

201

Created

Common

The request was successful and a new resource was created as a result.

"201 Created" — a new resource was born

202

Accepted

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

"202 Accepted" — your ticket is in the queue

204

No Content

Common

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

"204 No Content" — done, nothing to show

206

Partial Content

The server is delivering only part of the resource in response to a Range request.

"206 Partial" — only part of the file, just what you asked for

207

Multi-Status

WebDAV

A Multi-Status response conveys information about multiple resources in situations where multiple status codes might be appropriate.

"207 Multi-Status" — here are everyone's individual results

301

Moved Permanently

Common

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

"301 Moved Permanently" — I've moved and given you my new forwarding address

302

Found

Common

The URI of the requested resource has been changed temporarily.

"302 Found" — it's temporarily over there

303

See Other

The server is redirecting the user agent to a different resource, as indicated by the Location header.

"303 See Other" — go look at that other page via GET

304

Not Modified

Common

There is no need to retransmit the requested resources. The client can use cached data.

"304 Not Modified" — nothing changed, use your cache

307

Temporary Redirect

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

"307" — temporary detour, same vehicle (method)

308

Permanent Redirect

The resource is now permanently located at another URI. Method is preserved unlike 301.

"308" — permanently moved AND method preserved

400

Bad Request

Common

The server cannot or will not process the request due to something perceived to be a client error.

"400 Bad Request" — you sent gibberish

401

Unauthorized

Common

The request lacks valid authentication credentials for the target resource.

"401 Unauthorized" — show me your ID

403

Forbidden

Common

The server understood the request but refuses to authorize it.

"403 Forbidden" — I know who you are, but you can't come in

404

Not Found

Common

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

"404 Not Found" — this page does not exist

405

Method Not Allowed

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

"405 Method Not Allowed" — you're knocking on the wrong door type

408

Request Timeout

The server would like to shut down this unused connection. Sent when server times out waiting for client.

"408" — you took too long to finish your sentence

409

Conflict

The request could not be completed due to a conflict with the current state of the target resource.

"409 Conflict" — two things are fighting over the same space

410

Gone

The target resource is no longer available at the origin server and this condition is likely to be permanent.

"410 Gone" — it existed once, but it's gone forever

412

Precondition Failed

The server does not meet one of the preconditions in the request header fields.

"412" — the conditions you set weren't met

413

Content Too Large

The request entity is larger than limits defined by server.

"413 Too Large" — your suitcase is too big for the overhead bin

414

URI Too Long

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

"414 URI Too Long" — your address label is a novel

415

Unsupported Media Type

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

"415 Unsupported Media Type" — I don't speak that language

422

Unprocessable Entity

Common

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

"422" — grammatically correct but logically wrong

423

Locked

WebDAV

The resource that is being accessed is locked.

"423 Locked" — someone else has checked this out

424

Failed Dependency

WebDAV

The method could not be performed on the resource because the requested action depended on another action and that action failed.

"424" — the domino that came before you fell

425

Too Early

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

"425 Too Early" — not yet, the security handshake isn't done

426

Upgrade Required

The server refuses to perform the request using the current protocol but might after an upgrade.

"426" — you need a better version to enter

428

Precondition Required

The origin server requires the request to be conditional.

"428" — you need to show conditions before we proceed

429

Too Many Requests

Common

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

"429 Too Many" — slow down, you're flooding us

431

Request Header Fields Too Large

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

"431" — your luggage has too many labels on it

451

Unavailable For Legal Reasons

The user-agent requested a resource that cannot legally be provided.

"451" — reference to Fahrenheit 451, the book about censorship

500

Internal Server Error

Common

The server has encountered a situation it doesn't know how to handle.

"500" — something exploded in the engine room

501

Not Implemented

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

"501" — feature not built yet

502

Bad Gateway

Common

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

"502 Bad Gateway" — the middleman got a bad answer

503

Service Unavailable

Common

The server is not ready to handle the request. Common causes: maintenance or overload.

"503 Service Unavailable" — closed for maintenance, back soon

504

Gateway Timeout

Common

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

"504 Gateway Timeout" — the upstream server went radio silent

505

HTTP Version Not Supported

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

"505" — incompatible versions

506

Variant Also Negotiates

The server has an internal configuration error: transparent content negotiation results in a circular reference.

"506" — the signpost points to another signpost

507

Insufficient Storage

WebDAV

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

"507" — the hard drive is full

508

Loop Detected

WebDAV

The server detected an infinite loop while processing the request.

"508" — the snake is eating its own tail

510

Not Extended

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

"510" — you need extra plugins installed

511

Network Authentication Required

The client needs to authenticate to gain network access (captive portal).

"511" — you need to log into the WiFi first

499

Client Closed Request

Unofficial

A non-standard code used by nginx to indicate that the client closed the connection before the server answered.

"499" — client hung up mid-sentence (nginx-specific)

520

Web Server Returns Unknown Error

Unofficial

Cloudflare-specific. The origin server returned an unexpected response.

"520" — Cloudflare has no idea what your server said

521

Web Server Is Down

Unofficial

Cloudflare-specific. The origin server refused connections.

"521" — Cloudflare knocked, nobody home

522

Connection Timed Out

Unofficial

Cloudflare-specific. Cloudflare timed out contacting the origin server.

"522" — Cloudflare waited too long

524

A Timeout Occurred

Unofficial

Cloudflare-specific. Cloudflare established a TCP connection but the origin did not send a response in time.

"524" — Cloudflare waited, origin stayed silent

Frequently Asked Questions

What is the difference between a 401 and a 403 status code?

Both signal a 4xx client error around access, but they mean different things. A 401 Unauthorized means you are not authenticated: the server doesn't know who you are, so you should send valid credentials, such as a login token or API key, and try again. A 403 Forbidden means you are authenticated but not allowed: the server knows who you are and is deliberately refusing, so re-sending credentials won't help — you need different permissions or a role change. Returning the wrong one confuses clients, because a 401 invites a retry with login while a 403 tells them to stop. This reference has a dedicated comparison view that places these lookalike codes side by side. Search 401 or 403 above to read each code's causes and fixes in full.

When should I use a 301 redirect versus a 308?

Both 301 Moved Permanently and 308 Permanent Redirect tell clients a resource has moved for good and that they should update bookmarks and links. The key difference is method handling. With a 301, some clients may change a POST into a GET when following the redirect, which can silently drop request bodies. A 308 guarantees the original method and body are preserved, making it the safer choice for API migrations and any non-GET request. For ordinary page moves that search engines should follow, a 301 remains the well-understood default and passes ranking signals. Choosing wrong can break form submissions or lose link equity. This reference lists both codes with example responses and notes the governing RFC. Search 301 or 308 above, or open the comparison view to see them contrasted directly.

Why does a server return a 502 instead of a 504?

Both are 5xx server errors involving a gateway or reverse proxy such as nginx or Cloudflare sitting in front of your application, but they describe different failures. A 502 Bad Gateway means the proxy reached the upstream server but got an invalid or empty response — often the backend crashed, returned garbage, or closed the connection. A 504 Gateway Timeout means the proxy reached the upstream but the upstream took too long to respond, so the proxy gave up waiting. The practical clue: a 502 usually points to a broken or down backend, while a 504 points to a slow one, so you investigate crashes versus latency and timeout limits. This reference catalogs both with common causes and fix steps. Search 502 or 504 above to see each one explained.

What is the difference between a 404 and a 410 status code?

A 404 Not Found means the resource isn't there right now, but the server makes no promise about the future — it might return later, so clients and search engines keep checking. A 410 Gone is a stronger, deliberate signal: the resource was intentionally and permanently removed and will not come back. For SEO this matters, because a 410 tells search engines to stop requesting the URL and de-index it faster, whereas a 404 leaves the door open. Use 410 when you've purposely retired a page, an expired campaign, or deleted content; use 404 for typos and genuinely missing resources. Returning the right one keeps crawl budget and logs clean. This reference explains both codes and pairs them in its comparison view. Search 404 or 410 above to read the full details.

What do the five HTTP status code categories mean?

Every HTTP response code falls into one of five families, signalled by its first digit. 1xx Informational means the request was received and processing continues, like 100 Continue. 2xx Success means the request was understood and accepted, with 200 OK as the default and 201 Created or 204 No Content for specific cases. 3xx Redirection means more action is needed, usually following a Location header, as with 301 and 302. 4xx Client Error means the request itself was faulty — bad syntax, missing credentials, or a missing resource like 404. 5xx Server Error means the server failed to fulfil a valid request, from 500 Internal Server Error to gateway issues. Knowing the family tells you instantly whether the problem is on the client or the server. Browse any category above to learn its codes before you hit them in an outage.

About the HTTP Status Codes Reference

HTTP status codes are the three-digit numbers a server returns with every web response to say what happened — whether a page loaded, redirected, was denied, or crashed. This reference puts every code you're likely to meet in one searchable place, with plain-language explanations, real example responses, common causes, and how-to-fix notes. It's built for developers, API designers, DevOps engineers, and anyone debugging a request who needs to know what a 403, a 502, or a 308 actually means and what to do about it.

The reference catalogs more than 50 status codes grouped into the five official families, including WebDAV extensions and a few unofficial vendor codes (such as Cloudflare's 520524) that you'll see in production logs but won't find in the RFCs. Most of the tool runs entirely in your browser with no sign-up. The one exception is the optional URL Status Tester, which sends the address you enter through a public CORS proxy to fetch its live status — so use that feature only for URLs you're comfortable routing through a third party.

The five status code categories

Every HTTP response code falls into one of five ranges, signalled by its first digit:

  • 1xx Informational — the request was received and the process is continuing (e.g. 100 Continue, 101 Switching Protocols).
  • 2xx Success — the request was received, understood, and accepted. 200 OK is the default; 201 Created follows a successful POST, and 204 No Content is common after a DELETE.
  • 3xx Redirection — further action is needed to complete the request, usually following a Location header. 301 is a permanent move; 302 and 307 are temporary.
  • 4xx Client Error — the request was faulty: a bad syntax (400), missing credentials (401), insufficient permission (403), or a missing resource (404).
  • 5xx Server Error — the server failed to fulfil a valid request, from a generic 500 Internal Server Error to gateway problems like 502 and 504.

What each entry gives you

Search by number or keyword and click any code to expand its full detail. For each status you get a clear description, a real-world use case, an example HTTP response or JSON body, a list of common causes, and practical steps to fix it where the code signals a problem. Many entries also cite the governing RFC section and link to related codes. You can filter to a single category, pin the codes you reference most, or isolate just the WebDAV and unofficial entries. A printable Quick Reference view condenses the whole set into a cheat sheet.

Settling the codes people confuse

Some status codes look interchangeable but mean very different things, and choosing wrong sends the wrong signal to clients, browsers, and search engines. A dedicated comparison view sets the lookalikes side by side:

  • 401 vs 403401 means not authenticated (send valid credentials); 403 means authenticated but not allowed (re-authenticating won't help).
  • 301 vs 308 — both are permanent redirects, but 301 may let a POST become a GET, while 308 preserves the original method, making it safer for API migrations.
  • 400 vs 422400 is a syntax-level problem (malformed JSON); 422 means the JSON is valid but fails a business rule, like a badly formatted email.
  • 404 vs 410404 means not found, maybe later; 410 Gone means deliberately and permanently removed, a stronger signal to stop requesting and de-index.
  • 502 vs 504502 Bad Gateway is a bad upstream response; 504 Gateway Timeout means the upstream took too long.

Use the search box above to jump straight to any code, or browse a category to learn the family before you need it in an outage.