1xx Informational HTTP Status Codes
1xx responses are interim responses used during protocol negotiation and request pipelining. They indicate that the server received the request and is taking further action before sending a final response.
All 1xx Codes
| Code | Name | Summary | Guide |
|---|---|---|---|
| 100 | Continue | Server approves the request headers; client should send the request body. | Guide |
| 101 | Switching Protocols | Server agrees to switch protocols as requested via the Upgrade header. | Guide |
| 102 | Processing | Deprecated WebDAV keepalive. Server is processing a long request; final response pending. | Guide |
| 103 | Early Hints | Server sends resource preload hints before the final response is ready. | Guide |
| 104 | Upload Resumption Supported | Experimental: server supports the resumable upload protocol draft. | Guide |
What 1xx Codes Mean
1xx informational responses were introduced in HTTP/1.1 (RFC 2068, later RFC 9110). They are “interim responses” — not the final answer to a request, but a signal that something is happening before the final response arrives. HTTP/1.0 had no 1xx codes; they required the structured request/response pipelining of HTTP/1.1.
A key characteristic of 1xx responses: they are followed by additional responses. After a server sends 100 Continue, it will later send a 200, 400, or other final response. After sending 103 Early Hints, the server will send a 200 (or other final response) with the actual page. Clients must be prepared to receive multiple responses to a single request when working with 1xx codes.
HTTP/2 and HTTP/3 change how some 1xx codes work. HTTP/2 does not use the Expect: 100-continue mechanism — its stream architecture makes the body-holding optimization unnecessary. However, 103 Early Hints is more powerful on HTTP/2 and HTTP/3 because it can preload resources while the server is still processing the request.
100 Continue: Body Upload Optimization
100 Continue solves a bandwidth problem in HTTP/1.1. When a client wants to upload a large body (a file upload, a large JSON payload), it risks wasting bandwidth if the server is going to reject the request anyway — due to bad authentication, an unsupported content type, or a body that exceeds size limits.
The solution: the client sends only headers first, with Expect: 100-continue. The server validates the headers and responds 100 if the body should be sent, or an error code if not. Only after receiving 100 does the client send the (potentially large) body. This is automatic in most HTTP clients: curl uses it for payloads over 1 KB, Python requests and Java HttpClient have it enabled by default.
The server-side counterpart is 417 Expectation Failed, returned when the server cannot or will not satisfy the Expect header. Together, 100 and 417 form a pre-validation handshake for large request bodies.
101 Switching Protocols: The WebSocket Upgrade
101 Switching Protocols is how HTTP connections become WebSocket connections. The client sends an HTTP request with Upgrade: websocket and Connection: Upgrade headers. The server responds 101, and from that point on, both sides communicate using the WebSocket protocol over the same TCP connection.
The same mechanism supports Server-Sent Events upgrades and HTTP/2 upgrades over plaintext (though HTTP/2 is usually negotiated via TLS ALPN rather than a 101 upgrade). After 101, the original HTTP framing is abandoned — the connection is handed off to the new protocol entirely.
103 Early Hints: Preload for Faster Page Loads
103 Early Hints (RFC 8297) lets a server send Link preload and preconnect headers before the full HTML response is ready. While a server is running database queries and rendering templates, it can already tell the browser which CSS, fonts, and JavaScript files will be needed. The browser starts fetching those resources in parallel, so by the time the HTML arrives, the critical subresources may already be loaded.
This can reduce page load times by 100–300ms on pages with significant server-side processing time. Cloudflare, nginx, and Node.js (v18.11+) all support 103. It is the only 1xx code that is gaining new adoption as of 2024.