{"id":1064,"date":"2025-08-18T21:02:26","date_gmt":"2025-08-18T21:02:26","guid":{"rendered":"https:\/\/www.woodcentral.com\/-\/peter\/?p=1064"},"modified":"2026-05-24T11:28:10","modified_gmt":"2026-05-24T11:28:10","slug":"fast-internet-slow-web-a-guide-to-spotting-bottlenecks","status":"publish","type":"post","link":"https:\/\/www.woodcentral.com\/-\/peter\/fast-internet-slow-web-a-guide-to-spotting-bottlenecks\/","title":{"rendered":"Fast internet, slow web: a guide to spotting bottlenecks"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Perceived speed<\/em> is often about many small bottlenecks stacked together, not just raw bandwidth. When things \u201cfeel slower\u201d after upgrading hardware, it\u2019s usually due to <em>latency<\/em>, connection setup delays, or routing quirks rather than throughput.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here are some practical ways you can pinpoint where the delays are occurring:<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">1. Break down the journey of a request<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Every web page load has several stages, and each can introduce delay:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DNS resolution<\/strong> (finding the server\u2019s IP)<\/li>\n\n\n\n<li><strong>TCP\/TLS handshake<\/strong> (establishing the secure connection)<\/li>\n\n\n\n<li><strong>Server response time<\/strong> (TTFB \u2013 time to first byte)<\/li>\n\n\n\n<li><strong>Content download speed<\/strong> (affected by bandwidth)<\/li>\n\n\n\n<li><strong>Rendering<\/strong> (browser processing, caching, JS execution)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">You want to isolate which stage feels \u201csticky.\u201d<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">2. Tools you can run locally<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Ping &amp; Traceroute<\/strong><br><code>ping example.com<\/code> \u2192 shows latency &amp; packet loss.<br><code>traceroute example.com<\/code> (Linux\/macOS) \u2192 shows where hops slow down.<\/li>\n\n\n\n<li><strong>MTR (<code>mtr example.com<\/code>)<\/strong> \u2192 combines ping + traceroute over time to pinpoint unstable hops (great for ISP vs. upstream issues).<\/li>\n\n\n\n<li><strong>nslookup \/ dig<\/strong><br><code>dig example.com<\/code> \u2192 shows DNS lookup time.<\/li>\n\n\n\n<li><strong>curl -w<\/strong><br><code>curl -o \/dev\/null -s -w \\ \"DNS: %{time_namelookup} Connect: %{time_connect} TLS: %{time_appconnect} TTFB: %{time_starttransfer} Total: %{time_total}\\n\" \\ https:\/\/example.com<\/code><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">3. Browser-based diagnostics<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Chrome DevTools \u2192 Network tab<\/strong>\n<ul class=\"wp-block-list\">\n<li>Hover over a request \u2192 waterfall shows <strong>DNS, connection, SSL handshake, waiting (TTFB), download<\/strong> separately.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Lighthouse \/ WebPageTest<\/strong>\n<ul class=\"wp-block-list\">\n<li>WebPageTest (webpagetest.org) lets you test from multiple locations and see detailed connection breakdowns.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Chrome \u2192 chrome:\/\/net-export<\/strong>\n<ul class=\"wp-block-list\">\n<li>Can log all network activity for deeper debugging.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">4. Router-level checks<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Check DNS resolver<\/strong>: many routers default to the ISP\u2019s DNS, which may be slower than Cloudflare (1.1.1.1) or Google (8.8.8.8).<\/li>\n\n\n\n<li><strong>Look at latency to first hop<\/strong>: If your router introduces more processing delay (cheap routers sometimes do with NAT\/firewalling), you\u2019ll see higher ping times even to your ISP gateway.<\/li>\n\n\n\n<li><strong>Bufferbloat tests<\/strong>: Run <a href=\"https:\/\/www.waveform.com\/tools\/bufferbloat\">https:\/\/www.waveform.com\/tools\/bufferbloat<\/a>. Bad queue management makes connections <em>feel<\/em> sluggish even with fast bandwidth.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">5. External monitoring<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Pingdom \/ UptimeRobot<\/strong>: measure your server\u2019s response from multiple global locations.<\/li>\n\n\n\n<li><strong>GTmetrix<\/strong>: useful for seeing TTFB + render times.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">6. Compare like-for-like<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To isolate your local vs. server issues:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Run <code>curl -w<\/code> directly from your server (SSH in).<br>\u2192 If server-to-server fetch is fast, delays are in your local ISP\/router path.<\/li>\n\n\n\n<li>Run the same from your desktop. Compare results.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udd0e <strong>Most common culprits:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Router\u2019s DNS resolver being slower than your old one.<\/li>\n\n\n\n<li>Router\u2019s CPU\/NAT introducing small delays on many simultaneous connections.<\/li>\n\n\n\n<li>Bufferbloat when background traffic (syncs, updates, cloud apps) competes.<\/li>\n\n\n\n<li>Your ISP\u2019s peering path to the hosting server changed.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Perceived speed is often about many small bottlenecks stacked together, not just raw bandwidth. When things \u201cfeel slower\u201d after upgrading hardware, it\u2019s usually due to latency, connection setup delays, or routing quirks rather than throughput. Here are some practical ways you can pinpoint where the delays are occurring: 1. Break down the journey of a &#8230; <a title=\"Fast internet, slow web: a guide to spotting bottlenecks\" class=\"read-more\" href=\"https:\/\/www.woodcentral.com\/-\/peter\/fast-internet-slow-web-a-guide-to-spotting-bottlenecks\/\" aria-label=\"Read more about Fast internet, slow web: a guide to spotting bottlenecks\">Read more<\/a><\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-1064","post","type-post","status-publish","format-standard","hentry","category-technology"],"_links":{"self":[{"href":"https:\/\/www.woodcentral.com\/-\/peter\/wp-json\/wp\/v2\/posts\/1064","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.woodcentral.com\/-\/peter\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.woodcentral.com\/-\/peter\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.woodcentral.com\/-\/peter\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.woodcentral.com\/-\/peter\/wp-json\/wp\/v2\/comments?post=1064"}],"version-history":[{"count":0,"href":"https:\/\/www.woodcentral.com\/-\/peter\/wp-json\/wp\/v2\/posts\/1064\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.woodcentral.com\/-\/peter\/wp-json\/wp\/v2\/media?parent=1064"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.woodcentral.com\/-\/peter\/wp-json\/wp\/v2\/categories?post=1064"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.woodcentral.com\/-\/peter\/wp-json\/wp\/v2\/tags?post=1064"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}