HTTP Status Codes & MIME Types

Searchable reference for every common HTTP status code (what it really means) plus file-extension → MIME type lookup. Instant filter, works offline.

encoding

HTTP Status Codes & MIME Types

  • 100

    Continue

    Request headers accepted — client may send the body.

  • 101

    Switching Protocols

    Server agrees to switch protocol (e.g. HTTP → WebSocket upgrade).

  • 102

    Processing

    WebDAV: request received, still working — prevents client timeout.

  • 103

    Early Hints

    Preload hints sent before the final response, so browsers fetch assets sooner.

  • 200

    OK

    Standard success — the response body carries the result.

  • 201

    Created

    Resource created; Location header usually points to it.

  • 202

    Accepted

    Request queued for async processing — no promise it will finish.

  • 204

    No Content

    Success with an intentionally empty body (common for DELETE/PUT).

  • 206

    Partial Content

    Byte-range response — used by video streaming and resumable downloads.

  • 301

    Moved Permanently

    Permanent redirect; browsers and search engines update their references.

  • 302

    Found

    Temporary redirect; method may change to GET on follow.

  • 304

    Not Modified

    Cached copy is still valid — sent for conditional requests (ETag / If-Modified-Since).

  • 307

    Temporary Redirect

    Like 302 but the method and body must not change.

  • 308

    Permanent Redirect

    Like 301 but the method and body must not change.

  • 400

    Bad Request

    Malformed request — syntax, framing, or invalid parameters.

  • 401

    Unauthorized

    Authentication missing or invalid — really means "unauthenticated".

  • 403

    Forbidden

    Authenticated but not allowed — credentials won’t help.

  • 404

    Not Found

    No resource at this URL (or the server hides its existence).

  • 405

    Method Not Allowed

    URL exists but not for this HTTP method — check the Allow header.

  • 406

    Not Acceptable

    Server cannot produce a representation matching the Accept headers.

  • 408

    Request Timeout

    Client took too long to send the full request.

  • 409

    Conflict

    Request clashes with current resource state (e.g. concurrent edit).

  • 410

    Gone

    Deliberately removed, permanently — stronger signal than 404.

  • 411

    Length Required

    Server insists on a Content-Length header.

  • 412

    Precondition Failed

    An If-* conditional header did not match (optimistic locking).

  • 413

    Content Too Large

    Request body exceeds the server’s size limit.

  • 415

    Unsupported Media Type

    Body format not supported (wrong Content-Type).

  • 418

    I'm a teapot

    April-fools RFC 2324; some APIs use it for playful blocks.

  • 422

    Unprocessable Content

    Syntax is fine but the data fails validation rules.

  • 425

    Too Early

    Server refuses to risk a replayed request (TLS early data).

  • 429

    Too Many Requests

    Rate limit hit — Retry-After tells you when to try again.

  • 431

    Request Header Fields Too Large

    Headers (often cookies) exceed the server limit.

  • 451

    Unavailable For Legal Reasons

    Blocked for legal/censorship reasons.

  • 500

    Internal Server Error

    Unhandled server-side failure — the catch-all 5xx.

  • 501

    Not Implemented

    Server does not support this method at all.

  • 502

    Bad Gateway

    Proxy/load balancer got an invalid response from the upstream server.

  • 503

    Service Unavailable

    Temporarily overloaded or down for maintenance — retry later.

  • 504

    Gateway Timeout

    Proxy gave up waiting for the upstream server.

  • 505

    HTTP Version Not Supported

    Requested HTTP version is not supported.

  • 507

    Insufficient Storage

    WebDAV: server cannot store what the request requires.

  • 508

    Loop Detected

    WebDAV: infinite loop while processing the request.

Runs entirely in your browser. Your input never leaves your device.

What next?

FAQ

What is this page?

A searchable reference of HTTP status codes and common MIME types. Search by number, by name, or filter by class — 1xx informational, 2xx success, 3xx redirection, 4xx client error, 5xx server error.

How do I read the first digit?

It tells you who to talk to. A 4xx says the request was wrong — fix the caller. A 5xx says the server failed while handling a valid request — fix the server. Getting that boundary right is most of the value in the scheme, and it is why returning 200 with an error body makes systems hard to operate: every monitor and cache downstream now believes the call succeeded.

What is the difference between 301 and 302?

301 is permanent and 302 is temporary. Browsers and search engines cache a 301 aggressively — often indefinitely — so a 301 issued by mistake is genuinely hard to undo, because clients stop asking the old URL. Use 302 (or 307) while you are unsure.

What about 307 and 308?

They are the strict versions of 302 and 301. The older codes permitted clients to change a POST into a GET when following the redirect; 307 and 308 forbid that, preserving the method and body. If you are redirecting anything other than a GET, prefer them.

When should I use 401 versus 403?

401 means "not authenticated" — you have not proved who you are, and a WWW-Authenticate header should accompany it. 403 means "authenticated, but not allowed". A common leak is returning 403 where 404 would be better: telling an unauthorised user that a resource exists is itself information.

What is 304 Not Modified for?

Conditional requests. The client sends a validator such as If-None-Match, and if nothing changed the server replies 304 with no body — saving the transfer while confirming the cached copy is still good.

Is 418 real?

It is a genuine registered code from an April Fools' RFC — "I'm a teapot" — and it periodically gets proposed for removal. Do not use it in production; it appears in the list for completeness.

Why do I need MIME types alongside status codes?

Because both are part of getting a response right. A correct status with text/plain on JSON leaves clients guessing, and browsers may sniff the content and behave in ways you did not intend.

Is anything sent to a server?

No. The list is bundled with the page and searched locally.

More encoding tools