408 Request Timeout: what it means and what to do

A 408 means the server waited for the rest of your request and gave up. The official definition in RFC 9110 is that the server did not receive a complete request message within the time it was prepared to wait, so it closed the connection instead. It points at slowness somewhere between the client and the server: a stalled upload, a struggling network, or a connection that quietly died halfway through sending.

If you are just visiting a site

  1. Retry the action. A 408 is frequently a one-off caused by a momentary stall. A second attempt on a healthy connection usually goes through.
  2. Check your connection. Weak Wi-Fi, a congested mobile signal, or a VPN having a bad day can all slow a request enough to trip a server timeout. Moving closer to the router or switching networks helps.
  3. Uploading something? Make it smaller or wait for a better connection. Large uploads on slow links are the classic 408. Uploading one file at a time beats a batch that stalls as a group.
  4. Restart the router if every site feels slow. If only one action on one site times out, the rest of these steps matter more than the router.

If it is your site or your API

  1. Find your timeout values. Web servers and load balancers all cap how long they wait for a request body. Know the number before users teach it to you.
  2. Look for slow-client patterns in the logs. Clusters of 408s from one network or region point at their path to you, not your application.
  3. Support resumable or chunked uploads if users send large files. A single all-or-nothing request over a mobile connection is a 408 waiting to happen.
  4. Do not confuse it with 504. A 408 is the server waiting on the client. A 504 is a gateway waiting on another server. They have opposite culprits.
Visitors: the fix is a steadier connection or a smaller upload, not a different browser setting. Owners: repeated 408s on uploads usually mean your timeout is shorter than your users' real networks.

Common questions

What is the difference between 408 and 504? A 408 means the server timed out waiting for the client to finish sending its request. A 504 means a gateway timed out waiting for another server to respond. One is the client being slow, the other is the backend being slow.

Why do I get a 408 only when uploading? Uploads are the slowest requests most people send. If the file takes longer to transmit than the server's request timeout allows, the server closes the connection partway and answers 408, even though nothing was wrong with the file itself.

Related errors

504 Gateway Timeout · 413 Content Too Large · 400 Bad Request