408 Request Timeout: when the client is too slow
408 Request Timeout means the server gave up waiting for the client to finish sending its request and closed the connection.
408 Request Timeout means the server gave up waiting for the client to finish sending its request. It’s about the incoming request being too slow, not about the server being slow to answer, which is what 504 and Cloudflare’s 524 describe.
Definition
RFC 9110, section 15.5.9 says the server “did not receive a complete request message within the time that it was prepared to wait.” The client may repeat the request. If the connection can’t be reused, the server should close it, which is why 408 responses usually carry Connection: close.
Common causes
- Idle connections. Browsers open connections ahead of time and sometimes never use them. When the server closes such a connection after its timeout, it may log or send a 408 that no visitor ever sees.
- Slow uploads on mobile or unstable networks that exceed the server’s body timeout.
- Aggressive timeouts set to fend off slow-request attacks.
- An overloaded server that can’t read requests fast enough.
SEO impact
Googlebot’s requests are small GETs sent quickly, so it should rarely trigger a 408. If it does, take it seriously: Google’s status code documentation handles all 4xx codes other than 429 the same way, so URLs that keep returning 408 can drop out of the index. Check Search Console’s Crawl Stats report for spikes and look for network trouble between crawlers and your server.
How to fix it
Many 408 log entries are harmless noise from unused connections. For real failures, tune timeouts to your traffic:
# Nginx (both default to 60s)
client_header_timeout 30s;
client_body_timeout 120s; # allow slow uploads
# Apache (mod_reqtimeout)
RequestReadTimeout header=20-40,MinRate=500 body=60,MinRate=500
For large uploads, consider resumable or chunked uploads so one slow connection doesn’t fail the whole transfer. If uploads fail because of their size rather than their speed, the server answers 413 instead.
How to check
Run the URL through the HTTP status checker. A page that returns 408 to a fast, simple request points to a server problem rather than a slow client, and the response time it reports helps spot an overloaded server.
HTTP/1.1 408 Request Timeout
Connection: close
Content-Type: text/html
Content-Length: 221 Frequently asked questions
What is the difference between 408 and 504?
408 means the client was too slow sending its request to the server. 504 means a proxy or gateway waited too long for a response from the server behind it.
Why do my logs show many 408 errors?
Often they come from connections browsers opened in advance and never used; the server closes them after its timeout and logs a 408. If real users aren’t affected, they are usually harmless.
Can a client retry after a 408?
Yes. RFC 9110 says the client may repeat the request, typically on a new connection.