--- title: "408 Request Timeout — what it means and how to fix it" description: "The server gave up waiting for the client to finish sending its request. What causes an HTTP 408, what to try as a visitor, and what to check if it is your own site." url: https://atoneplace.net/error/408/ site: "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 - [404 Not Found](https://atoneplace.net/error/404/) - [403 Forbidden](https://atoneplace.net/error/403/) - [401 Unauthorized](https://atoneplace.net/error/401/) - [429 Too Many Requests](https://atoneplace.net/error/429/) - [400 Bad Request](https://atoneplace.net/error/400/) - [413 Content Too Large](https://atoneplace.net/error/413/) - [422 Unprocessable Content](https://atoneplace.net/error/422/) - [405 Method Not Allowed](https://atoneplace.net/error/405/) - [409 Conflict](https://atoneplace.net/error/409/) - [415 Unsupported Media Type](https://atoneplace.net/error/415/) - [410 Gone](https://atoneplace.net/error/410/) - [451 Unavailable For Legal Reasons](https://atoneplace.net/error/451/) ## Sources - Hypertext Transfer Protocol (HTTP) Status Code Registry — IANA (https://www.iana.org/assignments/http-status-codes/) - RFC 9110: HTTP Semantics — IETF (https://www.rfc-editor.org/rfc/rfc9110.html)