Developer
HTTP STATUS CODES
Complete HTTP status code reference. Search by code number or keyword. Click any card for details.
Developer Reference
Core Algorithm & Standalone Script
Standalone, zero-dependency JavaScript implementation powering this tool. Free to inspect, copy, and build upon.
const CODES = [
[100,'Continue','The server has received the request headers and the client should proceed.','Used in large uploads to check if server will accept before sending the body.',1],
[101,'Switching Protocols','The server agrees to switch protocols as requested by the client.','WebSocket upgrade: HTTP → WS.',1],
[102,'Processing','The server is processing the request but no response is available yet.','WebDAV; long-running operations.',1],
[103,'Early Hints','Lets the client start preloading resources before the final response.','Preload CSS/JS links before the full HTML arrives.',1],
[200,'OK','The request succeeded. Response body contains the requested resource.','Standard GET response, form submission success.',2],
[201,'Created','The request succeeded and a new resource was created.','POST to create a user, item, or record.',2],
[202,'Accepted','The request was accepted but processing is not complete.','Asynchronous operations like email sending.',2],
[203,'Non-Authoritative Information','Returned from a proxy that modified the origin response.','CDN or proxy adds/removes headers.',2],
[204,'No Content','Request succeeded but there is no content to return.','DELETE, PUT with no body, empty PATCH.',2],
[205,'Reset Content','Tells the client to reset the document view.','Clear a form after submission.',2],
[206,'Partial Content','Partial resource returned, used with range requests.','Video streaming, resumable downloads.',2],
[207,'Multi-Status','Multiple statuses for a multi-resource operation.','WebDAV PROPFIND responses.',2],
[208,'Already Reported','Used in DAV to avoid enumerating members multiple times.','WebDAV binding extensions.',2],
[226,'IM Used','Response is a delta encoding of the requested resource.','HTTP Delta encoding (RFC 3229).',2],
[300,'Multiple Choices','Multiple options for the resource the client can choose from.','Content negotiation fallback.',3],
[301,'Moved Permanently','This and all future requests should be directed to a new URL.','Domain migration, URL restructuring.',3],
[302,'Found','Redirects the client to another URL temporarily.','Post/Redirect/Get pattern, login redirects.',3],
[303,'See Other','Redirect to a GET request at another URL.','After a POST, redirect to results page.',3],
[304,'Not Modified','Resource has not been modified; use the cached version.','Conditional GET with ETag/If-Modified-Since.',3],
[307,'Temporary Redirect','Same as 302 but method must not change.','Non-GET redirects where method preservation matters.',3],
[308,'Permanent Redirect','Same as 301 but method must not change.','Permanent move preserving POST method.',3],
[400,'Bad Request','The server cannot process the request due to a client error.','Malformed JSON, invalid query params, missing required fields.',4],
[401,'Unauthorized','Authentication is required and has failed or not been provided.','Missing or invalid API key, expired token.',4],
[402,'Payment Required','Reserved for future use; used by some payment APIs.','Paywalls, API quota exceeded.',4],
[403,'Forbidden','Server understood the request but refuses to authorize it.','Authenticated but not authorized, IP blocked.',4],
[404,'Not Found','The requested resource could not be found.','Wrong URL, deleted resource, mistyped path.',4],
[405,'Method Not Allowed','The HTTP method is not allowed for this resource.','POST to a read-only endpoint.',4],
[406,'Not Acceptable','Server cannot produce a response matching the Accept headers.','Content negotiation failure.',4],
[407,'Proxy Authentication Required','Authentication required with a proxy.','Corporate proxy auth.',4],
[408,'Request Timeout','The server timed out waiting for the request.','Client too slow, connection dropped.',4],
[409,'Conflict','Request conflicts with current state of the resource.','Duplicate entry, version conflict, merge conflict.',4],
[410,'Gone','The resource is permanently gone with no forwarding address.','Intentionally deleted, content removed per GDPR.',4],
[411,'Length Required','Server requires Content-Length header.','Missing Content-Length in POST/PUT.',4],
[412,'Precondition Failed','One or more conditions in the request headers evaluated to false.','Optimistic locking with If-Match ETag.',4],
[413,'Content Too Large','Request body exceeds server limits.','File upload too large, payload limit exceeded.',4],
[414,'URI Too Long','The URI provided was too long for the server to process.','Very long query strings.',4],
[415,'Unsupported Media Type','The media format is not supported by the server.','Sending XML to a JSON-only endpoint.',4],
[416,'Range Not Satisfiable','The requested byte range is not satisfiable.','Invalid Range header in streaming.',4],
[417,'Expectation Failed','Server cannot meet the requirements in the Expect header.','100-continue expectation failed.',4],
[418,"I'm a Teapot",'The server refuses to brew coffee because it is a teapot (April Fools RFC).','Easter egg, rate limiting humor, placeholder responses.',4],
[421,'Misdirected Request','Request was directed at a server unable to respond.','HTTP/2 connection reuse issues.',4],
[422,'Unprocessable Content','Semantic errors prevent the server from processing the request.','Validation errors, invalid field values.',4],
[423,'Locked','Resource is locked.','WebDAV locking.',4],
[424,'Failed Dependency','Request failed because a dependency failed.','WebDAV dependent operations.',4],
[425,'Too Early','Server unwilling to process a potentially replayed request.','TLS 1.3 early data (0-RTT) protection.',4],
[426,'Upgrade Required','Client must switch to a different protocol.','Required TLS upgrade.',4],
[428,'Precondition Required','Server requires conditional requests.','Optimistic concurrency control enforcement.',4],
[429,'Too Many Requests','Client has sent too many requests in a given time.','API rate limiting — add backoff.',4],
[431,'Request Header Fields Too Large','Headers are too large for the server to process.','Cookie bloat, huge custom headers.',4],
[451,'Unavailable For Legal Reasons','Access denied for legal reasons.','Content blocked by GDPR, court order, or regional law.',4],
[500,'Internal Server Error','A generic server-side error occurred.','Uncaught exception, null pointer, database error.',5],
[501,'Not Implemented','The server does not support the functionality required.','Unimplemented HTTP method.',5],
[502,'Bad Gateway','An upstream server returned an invalid response.','Nginx/proxy cannot reach app server.',5],
[503,'Service Unavailable','The server is temporarily unavailable.','Maintenance mode, overloaded, deploying.',5],
[504,'Gateway Timeout','Upstream server did not respond in time.','Database slow query, upstream timeout.',5],
[505,'HTTP Version Not Supported','HTTP version in the request is not supported.','Using HTTP/3 with an HTTP/1.1-only server.',5],
[506,'Variant Also Negotiates','Circular reference in content negotiation.','Misconfigured content negotiation.',5],
[507,'Insufficient Storage','Server is unable to store the resource.','WebDAV, disk full.',5],
[508,'Loop Detected','Infinite loop detected while processing the request.','WebDAV infinite loop.',5],
[510,'Not Extended','Further extensions required for the server to fulfil the request.','HTTP Extension Framework.',5],
[511,'Network Authentication Required','Client must authenticate to gain network access.','Captive portal on public WiFi.',5],
];
let activeCategory = 'all';
function buildGrid() {
const grid = document.getElementById('statusGrid');
grid.innerHTML = CODES.map(([code, name, desc, use, cat]) =>
`<div class="status-card" data-code="${code}" data-cat="${cat}" data-text="${code} ${name} ${desc} ${use}".toLowerCase() onclick="this.classList.toggle('open')">
<div class="status-code s${cat}xx">${code}</div>
<div class="status-name">${name}</div>
<div class="status-desc">${desc}</div>
<div class="status-detail">${desc}<div class="status-use">→ ${use}</div></div>
</div>`
).join('');
filter();
}
function setCategory(cat, btn) {
activeCategory = cat;
document.querySelectorAll('.filter-tab').forEach(t => t.classList.remove('active'));
btn.classList.add('active');
filter();
}
function filter() {
const q = document.getElementById('searchInput').value.toLowerCase();
const cards = document.querySelectorAll('.status-card');
let visible = 0;
cards.forEach(card => {
const code = card.dataset.code;
const cat = card.dataset.cat;
const text = card.textContent.toLowerCase();
const catMatch = activeCategory === 'all' || cat === activeCategory;
const qMatch = !q || code.includes(q) || text.includes(q);
const show = catMatch && qMatch;
card.classList.toggle('hidden', !show);
if (show) visible++;
});
document.getElementById('resultCount').textContent = `Showing ${visible} of ${CODES.length} status codes`;
}
buildGrid();