Website Errors

How to Fix 408 Request Timeout Error

408 Request TimeoutPlain English: the website's server started receiving your request, got tired of waiting for the rest of it, and closed the connection — usually a slow or stalled network, not a broken site.
Quick answer: The server gave up waiting for your request to finish arriving. Retry the action exactly once on a steady connection, shrink or split any large upload, and stay on the page until the transfer completes. If you run the website, raise the header and body timeouts on your server. The full steps are below.

What 408 Request Timeout means

The 408 status is the server saying "I waited, but you never finished." When you load a page, submit a form, or upload a file, your browser sends the request to the server in pieces. The server holds the connection open while those pieces arrive — but only for a limited time. If the full request does not show up before that timer runs out, the server closes the connection and answers with a 408, freeing the slot for someone else. It is a deliberate housekeeping mechanism, not a crash: idle or half-sent connections cost the server memory, and without a cutoff a few stalled clients could tie up the whole service.

What makes 408 confusing is that it feels like the site is down, when the site is usually fine. The delay is almost always in the journey your request takes: a weak Wi-Fi signal, a mobile network that stalls mid-transfer, a VPN routing you through a slow exit node, or a file so large that sending it simply takes longer than the server allows. Because the natural reaction to any error is to hammer the refresh button, people often make it worse — every retry restarts a fresh request on the same slow connection, and each one can time out again. One calm retry on a steadier connection fixes most 408s in under a minute.

Common causes

How to fix 408 Request Timeout — step by step

The whole fix takes about fifteen minutes: retry once, steady the connection, handle the upload properly, and rule out anything in between.

  1. Retry the action once, calmly. A 408 is often a one-off stall: a packet hiccup while your request was in flight, and the server closed the connection before the rest arrived. Click the button or reload the page exactly once and give it a full, patient wait. If it works this time, there is nothing more to fix — resist the urge to hammer retry, because every half-sent request can trip the timeout again.
  2. Get on a steadier connection and try again. The most common real-world cause is a connection that drips data too slowly — weak Wi-Fi, a crowded mobile network, or a flaky hotel hotspot. Move closer to the router, switch from Wi-Fi to a wired connection or from mobile data to Wi-Fi (or the reverse), and avoid doing the action while your connection is saturated by a download, a video call, or an update. Then retry the exact same request.
  3. Shrink or split a large upload. Big file uploads and huge form submissions are the classic 408 trigger: the longer the transfer takes, the likelier it is to outlast the server's patience. Compress the file before uploading, lower the resolution of images or video, or split one giant upload into several smaller ones. Do not navigate away, minimize, or let the device sleep mid-upload — pausing the stream is exactly what the timeout is waiting to punish.
  4. Clear the browser slate and test once more. A stale session can stall a request before it even leaves properly. In Chrome, open Settings, then Privacy and security, then Delete browsing data, and clear "Cookies and other site data" plus "Cached images and files" for the last 24 hours. Restart the browser, go straight to the page, and perform the action exactly once while every other bandwidth-hungry tab stays closed.
  5. Turn off the VPN or proxy for this site. VPNs and proxies add extra hops between you and the server, and a slow exit node can stretch your request past the timeout while the server waits on the far end. Turn the VPN off and retry on the direct connection. If the 408 disappears, the detour was the problem — reconnect to a closer, faster server, or leave the VPN off while you use this particular site.
  6. If you run the site, raise the request timeouts. When real users on decent connections keep hitting 408, your limits are tighter than your traffic. In nginx, raise client_header_timeout and client_body_timeout from their 60-second defaults in the http, server, or location block, then reload with nginx -s reload. In Apache, raise Timeout and add RequestReadTimeout header=30,MinRate=500 body=30,MinRate=500. In PHP, raise max_input_time alongside max_execution_time. Increase in steps, measure, and stop when legitimate users stop timing out — timeouts exist to shed abusive connections, so do not remove them.

Did this fix it? Quick checklist

One more spot to check if it still fails: try the same action from a completely different network, like your phone's mobile data with Wi-Fi off. If it works there but never on your home connection, your ISP or router is stalling outbound traffic — a router reboot and a speed test that includes an upload check will usually confirm it. And if the 408 appears only at certain hours, you may be fighting peak-time congestion on your connection or the site's; trying the upload during off-peak hours is a legitimate workaround while the underlying cause gets sorted.

Frequently asked questions

What does 408 Request Timeout mean?

It means the server started receiving your request but the rest of it never arrived in time, so the server gave up waiting and closed the connection. Think of it as the server holding the door open for you and eventually closing it because you took too long to walk through. It usually points to a slow connection, an interrupted upload, or a server timeout set too aggressively.

Is a 408 error my fault or the website's?

It can be either. If your connection is slow or dropped mid-request — weak Wi-Fi, a flaky mobile signal, or a VPN adding lag — the delay is on your side. If you have a fast, stable connection and the 408 still appears on a form or upload, the website's timeout is probably set too low for what it asks visitors to send, and the site owner needs to raise it.

How is 408 different from 504 Gateway Timeout?

They fail on opposite sides of the conversation. A 408 means your request never finished reaching the server — the server waited on you. A 504 means your request reached the server fine, but the server's own upstream (a database, an API, a PHP worker) took too long to answer, so the gateway gave up on it. Fix 408 by steadying your connection or upload; fix 504 by speeding up whatever runs behind the site.

I run the website — how do I stop 408s for my visitors?

Raise the timeouts that govern incoming requests: in nginx that is client_header_timeout and client_body_timeout; in Apache it is Timeout and RequestReadTimeout; in PHP it is max_input_time. Also check why requests are slow to arrive — a page that forces huge multipart uploads over slow mobile links will keep timing out no matter the limit, so accept chunked uploads or smaller files where you can. Raise in steps and watch real-user 408 rates fall before locking the values in.