HTTP 408 Request Timeout
The server closed the connection because the client took too long to send the complete request.
Meaning
408 is about the client being slow to *send* the request (headers/body), not the server being slow to respond (that’s 504). It’s common on slow mobile networks, large uploads, or idle keep-alive connections.
Common causes
- Slow or unstable client network during upload
- Large request body with a short server body-read timeout
- Idle keep-alive connection reused after the server closed it
- Load balancer idle timeout shorter than the upload duration
⚡ Quick fix
- Retry the request (408 is generally safe to retry for idempotent requests)
- Increase body/header read timeouts on the server or load balancer
- Upload large files in chunks or via direct-to-storage (pre-signed URLs)
Detailed fix by platform
Nginx
- Raise read timeouts:nginx
client_body_timeout 120s; client_header_timeout 60s;
Apache
- Increase
Timeoutand checkmod_reqtimeout(RequestReadTimeout header=20-40,MinRate=500 body=60,MinRate=500).
How to diagnose
- Payload — Is this a large upload or slow client?
- Timeouts — Which hop (LB, proxy, server) has the shortest read timeout?
- Retry — Does an immediate retry succeed?
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
Was this page helpful?
Report a correction or suggest an improvement
Last updated 2 Oct 2026