100 Continue
1xx informational
The server received the request headers and the client should go ahead and send the body.
100 Continue is an interim response: it arrives before the final status, never instead of it. A client about to upload a large body can send just the headers with Expect: 100-continue and wait. If the server answers 100, the client streams the body; if it answers with a final status such as 401 or 413, the client skips the upload and saves the bandwidth.
| Class | 1xx Informational |
|---|---|
| Retry? | Not applicable |
| Cacheable by default | No — only with explicit Cache-Control |
| Response body | None |
| Defined in | RFC 9110 §15.2.1 — 100 Continue |
HTTP/1.1 100 Continue
When you'll see it
- The client sent
Expect: 100-continue. curl adds it automatically when a POST or PUT body is large. - A server or proxy that supports the handshake is confirming the upload can proceed.
What to do
- Usually nothing — clients and servers handle the exchange automatically.
- If uploads stall for about a second before starting, the server is ignoring the expectation and the client is waiting out its timeout. Send an empty
Expect:header (curl -H 'Expect:') to skip the handshake. - Servers that want to reject early should check auth and
Content-Lengthbefore reading the body, so they can answer 401 or 413 instead of 100.
Check what a URL returns
Print just the status line from the command line, or check a whole list of URLs at once, with their response headers, in the HTTP Status Checker.
curl -sI https://example.com/your-path | head -n 1
Frequently asked questions
Will I ever see 100 Continue in the browser?
No. Browsers don't send Expect: 100-continue, and interim 1xx responses are handled below the API surface — fetch() and XMLHttpRequest only expose the final status.
Why does curl pause before uploading?
curl sent Expect: 100-continue and is waiting for the server's go-ahead. If no 100 arrives, it waits about one second and then sends the body anyway. Disable the handshake with -H 'Expect:'.