HTTPfy

408 Request Timeout

The server timed out waiting for the client to finish sending the request.

408 at a glance

Code
408
Name
Request Timeout
Class
4xx Client error
Status
IANA-registered standard code
Defined in
RFC 9110, Section 15.5.9
Cacheable by default
No by default. Caches store it only when the response carries explicit freshness (Cache-Control max-age, s-maxage or Expires).

What 408 means

408 Request Timeout means the client did not produce a complete request within the time the server was prepared to wait, and the server is closing the connection. Browsers may silently retry a 408 on a reused keep-alive connection. It is about slow clients, not slow servers (that is 504).

What typically causes a 408

  • nginx client_header_timeout or client_body_timeout (60 s by default) expiring during slow uploads.
  • Apache RequestReadTimeout (mod_reqtimeout), which also defends against Slowloris.
  • Clients that open a connection and never send a request (pre-connect, some health checkers).
  • Very slow mobile links uploading large bodies.

Fix it on the server

  • Raise body timeouts for upload endpoints only, rather than globally.
  • Send Connection: close with the 408.

Fix it as a client or visitor

  • Retry, ideally with resumable or chunked uploads for large files.

Headers that go with 408

HeaderRole
Connectionclose: the server closes after sending it.

Example response

HTTP/1.1 408 Request Timeout
Connection: close
Content-Length: 0

Opens the HTTP headers tool with your URL filled in; it shows the status line and headers of every redirect hop.