Dev Reference
runs in your browserSearchable tables of HTTP status codes with their RFCs, every registered MIME type and its extensions, keyboard codes with a live key tester, and common ports.
IANA’s registry as of RFC 9110. A number matches as a prefix; "4xx" matches a class.
HTTP status
72 entries| Code | Name | Meaning | Defined in | |
|---|---|---|---|---|
| 100 | Continue | Send the rest of the request; the headers were acceptable. | RFC 9110 §15.2.11xx Informational | |
| 101 | Switching Protocols | The server agrees to change protocol, as asked in Upgrade. | RFC 9110 §15.2.21xx Informational | |
| 102 | Processing | WebDAV: the request is being worked on; no response yet. | RFC 2518 §10.11xx Informational | |
| 103 | Early Hints | Preliminary headers, usually Link, so the client can preload. | RFC 82971xx Informational | |
| 200 | OK | The request succeeded; the body depends on the method. | RFC 9110 §15.3.12xx Success | |
| 201 | Created | A resource was created; Location usually points at it. | RFC 9110 §15.3.22xx Success | |
| 202 | Accepted | Accepted for processing, which has not finished and may not succeed. | RFC 9110 §15.3.32xx Success | |
| 203 | Non-Authoritative Information | Success, but a proxy transformed the origin’s response. | RFC 9110 §15.3.42xx Success | |
| 204 | No Content | Success with no body; the client need not change its view. | RFC 9110 §15.3.52xx Success | |
| 205 | Reset Content | Success; the client should reset the form that sent it. | RFC 9110 §15.3.62xx Success | |
| 206 | Partial Content | Part of the resource, in answer to a Range request. | RFC 9110 §15.3.72xx Success | |
| 207 | Multi-Status | WebDAV: an XML body carries a status for each of several resources. | RFC 4918 §11.12xx Success | |
| 208 | Already Reported | WebDAV: members of this binding were listed earlier in the response. | RFC 5842 §7.12xx Success | |
| 226 | IM Used | The response is the result of applying instance manipulations (delta encoding). | RFC 3229 §10.4.12xx Success | |
| 300 | Multiple Choices | Several representations exist; pick one from the list. | RFC 9110 §15.4.13xx Redirection | |
| 301 | Moved Permanently | Use the Location URL from now on; a POST may become GET. | RFC 9110 §15.4.23xx Redirection | |
| 302 | Found | Temporarily at Location; a POST may become GET. | RFC 9110 §15.4.33xx Redirection | |
| 303 | See Other | Fetch Location with GET, typically after a form POST. | RFC 9110 §15.4.43xx Redirection | |
| 304 | Not Modified | The cached copy is still good; no body follows. | RFC 9110 §15.4.53xx Redirection | |
| 305 | Use Proxy | Deprecated: use the proxy in Location. | RFC 9110 §15.4.63xx Redirection | |
| 307 | Temporary Redirect | Temporarily at Location; repeat with the same method and body. | RFC 9110 §15.4.83xx Redirection | |
| 308 | Permanent Redirect | Permanently at Location; repeat with the same method and body. | RFC 9110 §15.4.93xx Redirection | |
| 400 | Bad Request | The request is malformed or otherwise cannot be understood. | RFC 9110 §15.5.14xx Client error | |
| 401 | Unauthorized | Authentication is required or failed; WWW-Authenticate says how. | RFC 9110 §15.5.24xx Client error | |
| 402 | Payment Required | Reserved for future use; some APIs use it for billing. | RFC 9110 §15.5.34xx Client error | |
| 403 | Forbidden | Understood, but refused; authenticating will not help. | RFC 9110 §15.5.44xx Client error | |
| 404 | Not Found | Nothing at this URL, or the server will not say whether there is. | RFC 9110 §15.5.54xx Client error | |
| 405 | Method Not Allowed | The resource exists but not for this method; Allow lists those that work. | RFC 9110 §15.5.64xx Client error | |
| 406 | Not Acceptable | No representation matches the Accept headers. | RFC 9110 §15.5.74xx Client error | |
| 407 | Proxy Authentication Required | Like 401, but from a proxy. | RFC 9110 §15.5.84xx Client error | |
| 408 | Request Timeout | The server gave up waiting for the rest of the request. | RFC 9110 §15.5.94xx Client error | |
| 409 | Conflict | The request clashes with the resource’s current state, such as an edit collision. | RFC 9110 §15.5.104xx Client error | |
| 410 | Gone | It existed and was removed on purpose; stop asking. | RFC 9110 §15.5.114xx Client error | |
| 411 | Length Required | Send a Content-Length header. | RFC 9110 §15.5.124xx Client error | |
| 412 | Precondition Failed | An If-Match or similar condition was not met. | RFC 9110 §15.5.134xx Client error | |
| 413 | Content Too Large | The body is bigger than the server will take (formerly Payload Too Large). | RFC 9110 §15.5.144xx Client error | |
| 414 | URI Too Long | The URL is longer than the server will parse. | RFC 9110 §15.5.154xx Client error | |
| 415 | Unsupported Media Type | The body’s Content-Type is not one the server accepts. | RFC 9110 §15.5.164xx Client error | |
| 416 | Range Not Satisfiable | The Range asked for lies outside the resource. | RFC 9110 §15.5.174xx Client error | |
| 417 | Expectation Failed | The Expect header cannot be met. | RFC 9110 §15.5.184xx Client error | |
| 418 | I’m a teapot(unofficial) | An April Fools’ joke that stuck; not assigned by IANA. | RFC 2324 §2.3.24xx Client error | |
| 421 | Misdirected Request | Sent to a server that cannot answer for this authority. | RFC 9110 §15.5.204xx Client error | |
| 422 | Unprocessable Content | Well-formed but semantically wrong, such as a failed validation. | RFC 9110 §15.5.214xx Client error | |
| 423 | Locked | WebDAV: the resource is locked. | RFC 4918 §11.34xx Client error | |
| 424 | Failed Dependency | WebDAV: an earlier request this one depended on failed. | RFC 4918 §11.44xx Client error | |
| 425 | Too Early | The server will not risk replaying an early-data request. | RFC 8470 §5.24xx Client error | |
| 426 | Upgrade Required | Switch to the protocol named in Upgrade, such as TLS. | RFC 9110 §15.5.224xx Client error | |
| 428 | Precondition Required | The server needs a conditional request to avoid lost updates. | RFC 6585 §34xx Client error | |
| 429 | Too Many Requests | Rate limited; Retry-After may say when to try again. | RFC 6585 §44xx Client error | |
| 431 | Request Header Fields Too Large | One header, or all of them together, is too big. | RFC 6585 §54xx Client error | |
| 444 | No Response(unofficial) | nginx closed the connection without replying; seen only in logs. | nginx4xx Client error | |
| 451 | Unavailable For Legal Reasons | Blocked by a legal demand; the body may say whose. | RFC 7725 §34xx Client error | |
| 499 | Client Closed Request(unofficial) | nginx: the client went away before the response was sent. | nginx4xx Client error | |
| 500 | Internal Server Error | The server hit an unexpected condition. | RFC 9110 §15.6.15xx Server error | |
| 501 | Not Implemented | The server does not support this method at all. | RFC 9110 §15.6.25xx Server error | |
| 502 | Bad Gateway | A proxy got an invalid response from the server behind it. | RFC 9110 §15.6.35xx Server error | |
| 503 | Service Unavailable | Overloaded or down for maintenance; Retry-After may help. | RFC 9110 §15.6.45xx Server error | |
| 504 | Gateway Timeout | A proxy timed out waiting for the server behind it. | RFC 9110 §15.6.55xx Server error | |
| 505 | HTTP Version Not Supported | The server refuses this major HTTP version. | RFC 9110 §15.6.65xx Server error | |
| 506 | Variant Also Negotiates | A content-negotiation misconfiguration on the server. | RFC 2295 §8.15xx Server error | |
| 507 | Insufficient Storage | WebDAV: the server is out of room to store the representation. | RFC 4918 §11.55xx Server error | |
| 508 | Loop Detected | WebDAV: an infinite loop while processing Depth: infinity. | RFC 5842 §7.25xx Server error | |
| 510 | Not Extended | The request needs further extensions the server requires. | RFC 2774 §75xx Server error | |
| 511 | Network Authentication Required | A captive portal wants you to log in to the network first. | RFC 6585 §65xx Server error | |
| 520 | Web Server Returned an Unknown Error(unofficial) | Cloudflare: the origin returned something Cloudflare could not interpret. | Cloudflare5xx Server error | |
| 521 | Web Server Is Down(unofficial) | Cloudflare: the origin refused the connection. | Cloudflare5xx Server error | |
| 522 | Connection Timed Out(unofficial) | Cloudflare: the TCP handshake with the origin timed out. | Cloudflare5xx Server error | |
| 523 | Origin Is Unreachable(unofficial) | Cloudflare: the origin could not be reached, often DNS. | Cloudflare5xx Server error | |
| 524 | A Timeout Occurred(unofficial) | Cloudflare: connected, but the origin took too long to respond. | Cloudflare5xx Server error | |
| 525 | SSL Handshake Failed(unofficial) | Cloudflare: the TLS handshake with the origin failed. | Cloudflare5xx Server error | |
| 526 | Invalid SSL Certificate(unofficial) | Cloudflare: the origin’s certificate could not be validated. | Cloudflare5xx Server error | |
| 527 | Railgun Error(unofficial) | Cloudflare: a Railgun connection error (retired product). | Cloudflare5xx Server error |
about this tool
Four tables, one search box
Pick a table and type. A number matches as a prefix, so 40 narrows the
status codes to the 400s and 44 the ports to 443 and 445; 4xx matches a
whole class; words match anywhere in the name and description, and every word
has to match, so not found gives 404 alone. Each row has a copy button for
the value you would paste.
HTTP status codes
The list is IANA's registry as consolidated by RFC 9110, with the section reference for each code so you can read the definition rather than a paraphrase. RFC 9110 renamed two codes in 2022 — 413 is Content Too Large, 422 is Unprocessable Content — and the table uses those names. A handful of codes you will meet in logs but that IANA has never assigned are included and marked unofficial: 418 (an April Fools' RFC), nginx's 444 and 499, and Cloudflare's 520 to 527. Each names the software that emits it instead of an RFC.
MIME types
The MIME table is the whole mime-db registry, about 2,500 types, of which
roughly a thousand have file extensions. It is fetched the first time the tab
is opened, not with the page. Searching by extension puts the exact match
first; searching by word matches the type name. The list is capped at two
hundred rows, and the heading says how many matched in total, because a
matches most of the registry. With no query, only types that have extensions
are listed, since those are the ones people look up.
Some mappings surprise people, which is the point of having the table: .ts
is video/mp2t (MPEG transport stream), not TypeScript; .js is
text/javascript by IANA and application/javascript by older Apache
configurations, and both are listed with their source.
Keycodes
Click the box and press a key to see what a keydown event carries: key
(what the key produces on your layout), code (which physical key it is),
the legacy keyCode and which, the location (left, right or numpad),
active modifiers, and whether the event is a repeat. Inside the box, Tab and
Space are captured rather than acted on. Keys pressed while typing in the
search field are not captured.
The table below lists the codes with their keyCode values as most browsers
report them. keyCode is deprecated and layout-dependent, and Firefox
disagrees on some punctuation; the notes say where. key values in the table
are for a US layout, unshifted.
Ports
Not the full IANA registry, which runs to thousands of mostly-historical entries, but the ports a developer meets: the classic services, databases, message queues, and the default ports of common development servers, which are conventions rather than registrations. The range column gives IANA's classification: 0–1023 well-known, 1024–49151 registered, 49152–65535 dynamic.
questions
- Where do the status codes come from?
- The IANA HTTP Status Code Registry, which RFC 9110 (2022) consolidates. A few codes you will meet in practice but that IANA has not assigned — 418, nginx’s 444 and 499, Cloudflare’s 520 to 527 — are included and marked unofficial, with the software that emits them named instead of an RFC.
- Why is 413 called Content Too Large and 422 Unprocessable Content?
- RFC 9110 renamed them from Payload Too Large and Unprocessable Entity. Both names refer to the same codes and older servers still send the old phrases; the table uses the current ones.
- What is the difference between key, code and keyCode?
- code names the physical key regardless of layout (KeyA is the same key on AZERTY). key is the character or action it produces on the current layout, so it changes with Shift and language. keyCode is a legacy number, deprecated, that differs between browsers for some punctuation; the table notes the Firefox values where they differ.
- Why does .ts map to video/mp2t?
- Because the registered type for the .ts extension is MPEG transport stream, which predates TypeScript. Servers that map by extension will label a TypeScript file as video unless told otherwise; that is exactly the kind of surprise this table exists to show.
- Are the ports the complete IANA list?
- No. The IANA registry has thousands of entries, most of them long dead. This table is the ports a developer actually meets: the classic services, the databases and queues, and the default ports of common development servers, which are conventions rather than registrations.