← Glossary / HTTP 408 Request Timeout

What is HTTP 408 Request Timeout?

HTTP 408 Request Timeout occurs when a client opens a TCP connection but fails to transmit the complete HTTP request within the server's allotted time window. In scraping pipelines, this rarely means your scraper code is slow. It almost always indicates a degraded proxy node dropping packets, a connection pool exhaustion, or an anti-bot tarpit deliberately stalling the handshake to bleed your concurrency.

Scraping ErrorsNetwork LayerProxy LatencyTarpittingTCP/IP
// 02 — definitions

When the server
stops waiting.

A 408 isn't a response to your request. It is a response to your failure to finish sending it.

Ask a DataFlirt engineer →

TL;DR

Unlike a 504 Gateway Timeout where the upstream server is slow, a 408 means the target server thinks your client is too slow. For data pipelines, a sudden spike in 408s points directly to proxy infrastructure degradation or a WAF silently dropping inbound packets to starve your worker threads.

01Definition & structure
A 408 Request Timeout is an HTTP status code returned by a server when it decides to close a connection because the client did not finish sending the request within the server's configured timeout period. It means the TCP handshake succeeded, but the HTTP payload transmission stalled.
02The proxy degradation factor
In web scraping, 408s are almost exclusively a proxy problem. Residential proxies route traffic through consumer devices (phones, smart TVs, home routers). If that device loses signal or its upstream bandwidth is saturated, your request packets are delayed. The target server waits, eventually gives up, and returns a 408.
03Anti-bot tarpitting
Sophisticated WAFs use 408s offensively. Instead of returning a 403 (which tells you immediately that you are blocked), a tarpit accepts your connection and then silently drops your packets. Your scraper hangs, waiting to send data, until the server finally issues a 408. This ties up your worker threads and drastically reduces your pipeline throughput.
04How DataFlirt handles it
We do not wait for 408s. Our network layer enforces strict client-side timeouts based on byte transmission rates. If a proxy node cannot sustain a minimum throughput, we kill the socket locally, quarantine the IP, and retry the request on a healthy node. This keeps our worker concurrency high and prevents tarpits from degrading pipeline performance.
05408 vs 504
It is critical to distinguish between timeout directions. A 408 means the server was waiting on you. A 504 means you were waiting on the server. If your logs show 408s, you need to fix your proxy pool or payload size. If your logs show 504s, you need to lower your concurrency because you are overwhelming the target.
// 03 — timeout math

Calculating the
drop threshold.

Servers do not wait forever. Here is how timeout thresholds are calculated and how DataFlirt preempts them to avoid wasted worker cycles.

Server-side timeout = Tdrop = Header_Timeout + Body_Timeout
Standard Nginx/Apache defaults range from 30 to 60 seconds. RFC 7231
Effective transmission time = Ttx = Payload_Size / Proxy_Bandwidth + TCP_Overhead
If T_tx exceeds T_drop, the server returns a 408. Network Layer Model
DataFlirt preemptive kill = If Ttx > 0.8 × Tdrop  →  ABORT
We sever the socket locally before the server can issue a 408. DataFlirt network scheduler
// 04 — the wire trace

A slow death
via residential proxy.

Trace of a POST request routed through a congested residential IP. The headers arrive, but the body stalls, triggering the target's 408 threshold.

TCP dumpPOST requestNginx target
edge.dataflirt.io — live
CAPTURED
// connection established
tcp.handshake: ok // 142ms
tls.negotiation: ok // 310ms

// transmitting headers
> POST /api/v1/search HTTP/2
> Host: target.com
> Content-Length: 8420

// transmitting body
tcp.window: full // proxy node congested
tx.bytes: 1420 / 8420
tx.bytes: 2840 / 8420 // stalled for 45s

// server intervention
< HTTP/2 408 Request Timeout
< Connection: close
worker.status: retrying on new proxy
// 05 — root causes

Why your requests
are timing out.

Ranked by frequency across DataFlirt's pipeline telemetry. Proxy issues dominate, but anti-bot countermeasures are a growing source of artificial 408s.

SAMPLE SIZE ·  ·  ·  ·    1.2M 408s
WINDOW ·  ·  ·  ·  ·  ·   90d trailing
UPDATED ·  ·  ·  ·  ·  ·  2026-05-19
01

Degraded residential proxy

88% of cases · Node bandwidth drops to bytes per second
02

WAF tarpitting

62% of cases · Server deliberately drops packets
03

Massive POST payloads

45% of cases · Large JSON uploads over slow links
04

Connection pool exhaustion

31% of cases · Client-side socket starvation
05

TCP fragmentation

14% of cases · MTU mismatches causing silent drops
// 06 — our stack

Kill it early,

don't wait for the server to hang up.

A 408 is a massive waste of pipeline concurrency. If a proxy node takes 15 seconds to transmit a 2KB header block, waiting for the target server's 60-second timeout to trigger is an operational failure. DataFlirt's network layer monitors byte-level transmission rates. If a connection drops below our minimum throughput threshold, we sever the TCP socket locally, mark the proxy as degraded, and retry instantly. We never let the target server dictate our timeout schedule.

Connection Health Monitor

Live telemetry of a request being preemptively killed by DataFlirt.

req.id req-408-alpha
proxy.node res_IN_7721
tx.rate 12 bytes/sec
threshold.min 500 bytes/sec
action socket_kill
proxy.status quarantined
retry.status success on res_IN_8892

Stay ahead of the pipeline

Data engineering
intel, weekly.

Anti-bot shifts, scraping infrastructure updates, dataset delivery patterns, and business outcomes from our pipelines. Short, technical, no fluff.

// 07 — FAQ

Common
questions.

Common questions about 408 errors, proxy tuning, and how to differentiate between client-side failures and server-side tarpits.

Ask us directly →
What is the difference between a 408 and a 504 error? +
A 408 Request Timeout means the client was too slow to send the request. A 504 Gateway Timeout means the client sent the request fine, but the upstream server was too slow to generate a response. If you see a 408, fix your proxies. If you see a 504, the target site is struggling.
Why do I only get 408s on POST requests? +
GET requests are tiny. They consist only of headers and usually fit into a single TCP packet. POST requests have bodies. If your proxy is heavily congested, it might manage to send the headers but choke on the body upload, triggering the server's timeout.
Can a WAF intentionally cause a 408? +
Yes. This is called tarpitting. Advanced anti-bot systems will accept your TCP connection but deliberately drop your inbound HTTP packets. Your client keeps trying to retransmit until the server's timeout window closes, resulting in a 408. It is designed to tie up your scraper's concurrency.
How should I configure my scraper's timeout settings? +
Set your client-side timeouts lower than the server's expected 408 threshold. If the server times out at 60 seconds, set your client to abort at 30 seconds. Fail fast and retry on a fresh IP rather than waiting for a doomed connection to officially die.
How does DataFlirt handle proxy-induced 408s? +
We score proxies continuously on Time to First Byte (TTFB) and transmission rate. Nodes that exhibit high latency or packet loss are rotated out of the active pool before they can trigger a 408. If a request stalls mid-flight, our network layer kills it preemptively.
Is a 408 a sign that my IP is blocked? +
Not necessarily. A hard block usually results in a 403 Forbidden or a TCP connection reset. A 408 is typically an infrastructure issue. However, if you see 408s consistently across multiple fresh IPs on a specific target, you are likely hitting a tarpit.
$ dataflirt scope --new-project --target=http-408-request-timeout READY

Tell us what
to extract.
We do the rest.

20-minute scoping call. Pilot dataset within the week. Production within two. Whether you need a one-off catalogue dump or a continuous feed across millions of records — we scope, build, and operate the pipeline.

hello@dataflirt.com  ·  Bengaluru  ·  IST  ·  typical reply < 4h