408 Client Error 📋

408 Request Timeout: Client Took Too Long

Last updated: June 28, 2026 • 5 min read

✦ The Golden Answer: The 408 Request Timeout status code means the server timed out while waiting for the client to send the complete request. This typically happens when the client sends the request headers but takes too long to send the request body (e.g., uploading a large file over a slow connection), or when the client doesn't send the final CRLF sequence promptly. The server closes the connection after a configured timeout.

Common Causes of 408 Errors

CauseExampleHow to Fix
Slow network connectionUploading a large file over a congested network.Improve network speed, use a smaller payload, or increase server timeout.
Server timeout too shortDefault timeout is 5 seconds, but client needs 10 seconds to send the body.Increase the server's timeout setting (e.g., Timeout in Apache, send_timeout in Nginx).
Client does not send the entire requestClient code sends headers but delays sending the body.Ensure the client sends the body immediately after the headers.
Proxy or load balancer timeoutsIntermediate proxy has a shorter timeout than the client expects.Adjust proxy timeout settings or use longer timeouts.
Keep-alive issuesClient sends partial data and expects a keep-alive, but the server times out.Check keep-alive settings on both client and server.

Example: 408 Response

When a client sends headers but fails to send the body within the timeout period, the server responds:

POST /upload HTTP/1.1 Host: example.com Content-Length: 1048576 [client pauses for 10 seconds, server times out] HTTP/1.1 408 Request Timeout Content-Length: 0 Connection: close

How to Fix 408 Errors

  • If you're a client developer: Ensure your application sends the request body promptly after the headers. Use streaming or chunked transfer encoding for large uploads. Increase the client's socket timeout if the server is known to be slow.
  • If you're a server administrator: Increase the server's timeout settings. For Nginx, use client_body_timeout, send_timeout, and keepalive_timeout. For Apache, use Timeout and KeepAliveTimeout. For other servers, check the documentation.
  • If you're an end‑user: Retry the request after checking your network connection. If you're uploading a large file, consider compressing it or using a faster network.

Timeout Configuration Examples

Nginx:

client_body_timeout 30s; # Wait for client body send_timeout 30s; # Wait for client ACK keepalive_timeout 75s; # Keep idle connections alive

Apache (httpd.conf):

Timeout 30 KeepAliveTimeout 5

408 vs. 504 Gateway Timeout

  • 408 Request Timeout – the client is too slow to send the request to the server.
  • 504 Gateway Timeout – a proxy or gateway timed out waiting for the upstream server to respond.

408 is a client‑side issue, while 504 is a server‑side or network issue.

Frequently Asked Questions

Is 408 a client error or a server error?

It's a client error (4xx) because the client didn't send the request in time. However, the server's timeout configuration also plays a role.

Can I retry a request that received a 408?

Yes, you can retry the request, but you should check if the request was idempotent. For GET, HEAD, and OPTIONS, retries are safe. For POST, PUT, DELETE, you may need to ensure idempotency or use a unique idempotency key.

How do I increase the timeout in my browser?

Most browsers don't expose timeout settings directly. You can use browser extensions or developer tools to adjust network throttling, but the timeout is usually controlled by the server.