Separate layers
Users say “slow internet” for DNS stalls, high RTT, low throughput, or jittery video calls—different causes. Work top-down: resolver → first hop → path → remote service → Wi-Fi vs wired.
Command playbook
| Symptom hint | Try | Reads |
|---|---|---|
| Pages hang before loading | dig +stats example.com @resolver | Query time vs server RTT |
| Everything feels laggy | mtr --report -c 100 target | Loss + latency shape |
| HTTPS feels slow | curl -o /dev/null -s -w '%{time_namelookup} %{time_connect} %{time_starttransfer} %{time_total}\n' URL | Where time accumulates |
| Throughput only | iperf3 -c server -R | Single vs multi stream limits |
Bufferbloat signal
If latency spikes only while uploading, suspect saturated uplink queues—run the same ping during an iperf3 upload. Smart queue management (CAKE, fq_codel) on the router often fixes it.
Related: DNS troubleshooting commands, packet loss commands, QoS at home, curl vs wget.