At One Place

HTTP 408 — Request Timeout

HTTP 408
Request Timeout
The server gave up waiting for the client to finish sending its request.

What 408 actually means

The connection was opened but the request never arrived complete within the server's patience — a slow upload on a bad connection, or an idle keep-alive connection being reaped. It is a 4xx because the server is blaming the client for being slow, though in practice the network is usually at fault. Note it is the opposite of 504: here the client was slow to send, not the upstream slow to answer.

Common causes

  • A slow or dropping connection during a large upload
  • The server closing an idle keep-alive connection, which some clients report as 408
  • A client that opened a connection and sent nothing
  • A too-aggressive `client_body_timeout` or `client_header_timeout` on the server
  • A Slowloris-style protection kicking in against genuinely slow clients

If you're just trying to view the page

  1. Retry — this is often transient
  2. Check your connection, especially on mobile data or a congested Wi-Fi network
  3. For large uploads, try a wired connection, or upload a smaller file to test
  4. Close other applications saturating your upload bandwidth

If it's your site

  1. Raise `client_body_timeout` and `client_header_timeout` in Nginx, or the equivalent in your server, if legitimate users on slow links are being cut off
  2. Support resumable or chunked uploads for anything large rather than relying on one long request
  3. Send `Connection: close` with the 408 so the client does not try to reuse a dead connection
  4. Distinguish idle-keep-alive reaping from genuine timeouts in your logs; the first is normal and the second is not

Reference

Status code
408
Reason phrase
Request Timeout
Category
4xx — Client Error
Defined in
RFC 9110 §15.5.9

Common questions

What does HTTP 408 mean?
The server gave up waiting for the client to finish sending its request. The connection was opened but the request never arrived complete within the server's patience — a slow upload on a bad connection, or an idle keep-alive connection being reaped. It is a 4xx because the server is blaming the client for being slow, though in practice the network is usually at fault.
How do I fix a 408 error?
Retry — this is often transient
Is 408 a client error or a server error?
408 is in the 4xx range, which means client error. The request itself was the problem, so retrying it unchanged will usually return the same code.

Related pages

Sources

  1. Hypertext Transfer Protocol (HTTP) Status Code Registry — IANA
  2. RFC 9110: HTTP Semantics — IETF

How these figures are compiled and checked