HTTP 408 Request Timeout: What It Means and How to Fix It
DIRECT ANSWER
HTTP 408 Request Timeout means the server or an intermediary did not receive the complete HTTP request within the time it was prepared to wait. It can result from a slow or interrupted connection, an incomplete request body, an idle keep-alive connection, or a server, proxy, CDN, or WAF timeout rule. Confirm the exact method, URL, request headers, response headers, and component that generated the response before changing configuration.
Key takeaways
- HTTP 408 concerns completion of the HTTP request; it does not by itself prove that DNS or TLS failed.
- A 408 may be produced by the origin server, reverse proxy, CDN, load balancer, or WAF rather than the application.
- Slow uploads, interrupted connections, idle persistent connections, and request-timeout settings are more directly relevant than unrelated permission changes.
- Reproduce the exact method, URL, headers, and request body conditions before troubleshooting.
- Use timestamps, response headers, and logs from each network layer to locate the component that timed out.
- Retry carefully: repeated requests can worsen load or rate limiting, and non-idempotent requests require particular caution.
Site Administrator
Last reviewed: September 25, 2026
What this error means & how to recognize it
- A browser, API client, upload tool, synthetic monitor, or health checker receives
408 Request Timeout. - The error may occur only for one URL, HTTP method, client, upload, or network path rather than across the entire site.
- A request that sends a body, such as an upload or form submission, may fail after the connection remains open without completing.
- Response headers may reveal whether a proxy, CDN, load balancer, WAF, or origin server generated the response.
- DNS resolution and TLS negotiation can succeed even when the subsequent HTTP request receives a 408.
- Logs may show an incomplete request, an idle connection, a request-read timeout, or a timeout generated before the request reached the application.
Root causes, ordered by likelihood
- The client did not finish sending the request. A slow upload, stalled connection, interrupted browser request, or incomplete request body can exceed the server's waiting period.
- An idle persistent connection expired. A server or intermediary may close a keep-alive connection when the next request does not arrive or complete within its configured idle period.
- A proxy, CDN, load balancer, or WAF timed out first. Different layers can apply different request-header, request-body, connection-idle, or total-duration limits.
- Network instability delayed request delivery. Packet loss, a broken connection, or a problematic path can prevent the endpoint from receiving the complete request.
- Request details trigger a layer-specific rule. A large body, unusual headers, an unsupported transfer pattern, or a method-specific policy may cause an intermediary to stop waiting or reject the request path.
- The response was misclassified or generated by custom infrastructure. Some systems use 408 for a timeout condition that is not the standard client-request scenario, so the producing component and its logs must be checked.
How to fix it
If you are visiting the site
- Retry the exact URL once after confirming that the address is correct.
- If you were uploading a file or submitting a form, check whether the connection remained stable and whether the operation can be resumed safely.
- If the request requires an account, sign in through the site's normal flow and try again; do not repeatedly resend a form or payment request without confirming whether the first request completed.
- If the error persists, record the URL, HTTP method if known, approximate time, network type, and the visible 408 response. Send those details to the site owner without sharing passwords, cookies, payment data, or API keys.
If you develop or operate the service
- Capture the exact request. Record the method, URL path, request-size characteristics, relevant headers, whether a body was sent, response status, response headers, and a timestamp. Redact credentials, cookies, authorization values, and personal data.
- Reproduce the same conditions. Compare a normal request with the failing method, client, upload size, connection type, and request-body behavior. A simple
GETsucceeding does not rule out a timeout on aPOST, upload, streaming request, or other method. - Locate the response-producing layer. Check the response headers and request or trace identifiers, then correlate the timestamp across the CDN, WAF, load balancer, reverse proxy, web server, and application logs. The first layer that records the timeout is usually the best starting point.
- Inspect request-read and idle-timeout settings. Review the relevant server and intermediary settings for incomplete headers, slow request bodies, keep-alive connections, and total request duration. Compare them with the application's expected upload and client behavior.
- Check the network path and client behavior. Look for connection resets, packet loss, stalled uploads, proxy changes, or a client that opens a connection but does not finish sending the request.
- Compare recent changes. Review deployments and changes to routing, proxy/CDN settings, WAF rules, request-size limits, authentication middleware, and connection handling. Treat authentication or authorization as a secondary investigation unless logs show that the request reached that logic.
- Apply the narrowest authorized correction. Adjust only the responsible timeout or request-handling rule, or correct the client behavior. Do not broadly disable security controls or raise every timeout without understanding capacity and abuse implications.
- Retest and monitor. Repeat the original request safely, verify that the expected status is returned, and check adjacent routes and methods. For non-idempotent requests, use an approved test case or confirm the operation's outcome before retrying.
Prevention & how to verify the fix
- Monitor HTTP status rates by route, method, client type, and deployment so a request-specific timeout is not hidden in an aggregate metric.
- Keep CDN, WAF, load-balancer, reverse-proxy, web-server, and application timeout settings documented and version controlled where supported.
- Test slow uploads, incomplete requests, keep-alive behavior, and important API methods in a controlled environment.
- Set request and connection timeouts deliberately, balancing legitimate client behavior against resource consumption and abuse risk.
- Preserve synchronized timestamps and request or trace identifiers across network layers.
- Make retry behavior explicit for clients, especially for non-idempotent requests such as form submissions, orders, or payments.
- Keep enough sanitized logs and metrics to correlate a 408 with the component that emitted it.
When to get outside help
Escalate to the service owner, hosting provider, CDN or proxy provider, or network team when 408 responses affect an important public route, many clients, large uploads, or multiple layers; when logs disagree about the generating component; or when the fix requires changing shared timeout, WAF, authentication, or capacity settings. Provide the exact request shape, timestamps with time zone, response headers, request or trace IDs, client and network conditions, and sanitized logs. Do not share passwords, session cookies, authorization tokens, payment information, or API secrets.
Frequently asked questions
Does HTTP 408 mean the website is completely down?
No. HTTP 408 describes a timeout for a particular HTTP exchange. A site may serve other URLs or methods normally while one request type, upload, client, or network path fails.
Is HTTP 408 the same as a browser timeout?
No. A browser or API client can stop waiting without receiving an HTTP response. A 408 is an HTTP status response, so capture the response and headers to distinguish it from a client-side timeout.
Can DNS and TLS be working when HTTP 408 appears?
Yes. DNS resolution and TLS negotiation happen before the HTTP request is processed. They can succeed even if the server or an intermediary does not receive the complete HTTP request in time.
Why does a POST or upload receive 408 while a GET works?
A POST or upload may send a request body that takes longer to arrive or may be interrupted. Compare request-body handling, size, client behavior, and request-read limits rather than assuming the whole site has the same problem.
Should I increase the server timeout immediately?
No. First identify which layer generated the 408 and whether the client actually completed the request. Increasing a timeout without checking capacity, intermediary settings, and slow-client behavior can consume resources without fixing the responsible layer.
Is it safe to retry a 408 request?
A single retry may be reasonable for a read-only or otherwise idempotent request after checking the connection. For form submissions, orders, payments, or other non-idempotent operations, confirm whether the first request was processed before sending it again.
Further documentation
- MDN Web Docs — HTTP 408 Request Timeout: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/408
- RFC 9110 — HTTP Semantics: https://www.rfc-editor.org/rfc/rfc9110
For implementation-specific timeout behavior, consult the documentation for the web server, reverse proxy, CDN, load balancer, WAF, and application framework that handled the request. Check each component's documentation for request-header, request-body, keep-alive, idle, and total-duration timeout settings; their names and defaults vary by product and deployment.