100 Continue

An interim response: the server has seen the request headers and tells the client to go ahead and send the body. It appears when a client sends Expect: 100-continue before uploading a large payload — a handshake that avoids transferring megabytes the server was going to reject anyway.

What usually causes it

  • A client (curl does this automatically for large POST bodies) sent Expect: 100-continue
  • Proxies or load balancers forwarding the expectation between hops

How to debug and fix it

  1. Nothing to fix — 100 is not an error. The final status follows once the body is sent.
  2. If a legacy server hangs on Expect: 100-continue, disable it client-side (curl: -H 'Expect:').
  3. If uploads stall for exactly 1 second with curl, this handshake timing is why — same header disables it.
Worth knowing: You rarely see 100 in browser devtools: browsers don't use Expect: 100-continue. It shows up in curl -v and server-to-server traffic.

Easily confused with