Network / 07

DNS race.

Issues a HEAD request to 5 major hosts (Cloudflare, Google, Wikipedia, GitHub, OpenStreetMap). Records first-byte latency for each — surfaces a misbehaving DNS resolver or a single slow CDN.

Notes

HEAD requests include DNS + TCP + TLS + first byte. The number is full connection establishment time, not pure DNS — but DNS is the only path-dependent variable across hosts on the same network.

How it works

For each host we issue a no-store HEAD request and time it end-to-end via performance.now(). Failures count as 'failed' in the per-host breakdown.

We test 5 geographically and operationally diverse hosts so a single slow CDN doesn't dominate the result. If all hosts time similarly high, your DNS resolver or local network is the bottleneck. If only one host is slow, that CDN's edge near you is the issue.

Frequently asked

Why test against multiple hosts?

Different hosts resolve via different authoritative servers + transit through different CDNs. If your DNS resolver is slow, every host suffers. If just one host is slow, that CDN is the issue. The race surfaces which case applies.

How is this different from a speed test?

Speed test measures bulk throughput once a connection is established. DNS race measures the cost of establishing the connection — name lookup + TCP handshake + TLS handshake + first byte. A slow connection establishment but fast bulk transfer points squarely at DNS / handshake latency.

What does a 'good' result look like?

Under 100 ms mean = excellent (likely DoH or a fast local resolver). 100-200 ms = typical home connection. 200-500 ms = slow ISP resolver, consider switching to 1.1.1.1 or 8.8.8.8. Over 500 ms = something is genuinely wrong.

Should I change my DNS resolver?

If your numbers are 200+ ms here, yes — switch to Cloudflare (1.1.1.1) or Google (8.8.8.8). The change takes 30 seconds in network settings and typically cuts resolution time in half. Both also offer DoH (DNS over HTTPS) for privacy.

Are the timings consistent?

Roughly. DNS caching means a re-run will be faster — the resolver remembers recent answers. To measure cold lookup, wait 5+ minutes between runs, or test from a different network.