Skip to main content

Diagnose why your network connection is slow

Project description

yslow

A command-line tool that diagnoses why your network connection is slow (or feels slow).

Instead of just reporting numbers, yslow isolates where the problem is — your local network (wifi/router), your ISP, or the broader internet — and tells you in plain language.

╻ ╻┏━┓╻  ┏━┓╻ ╻┏━┓
┗┳┛┗━┓┃  ┃ ┃┃╻┃ ╺┛
 ╹ ┗━┛┗━╸┗━┛┗┻┛ ╹

Is it slow?
● YES!

Why?
  ⚠ network no targets reachable (internet may be down) (1x, ongoing)
  ⚠ LAN     gateway unreachable (unusual routing setup) (1x, ongoing)
  ⚠ WiFi    very weak signal (too far from access point) (1x, ongoing)

Details
  WiFi:         -82 dBm (2.4 GHz), 6 Mbps TX, 6 Mbps RX
  LAN:          gateway 192.168.1.1 unreachable
  ISP/internet: all targets unreachable
  10.0.0.1:       3.0 ms cached,  45.0 ms uncached ✱
  Google DNS:    25.0 ms cached,  60.0 ms uncached
  OpenDNS:       35.0 ms cached,  42.0 ms uncached
  Cloudflare DNS:  9.0 ms cached,  40.0 ms uncached

What it checks

  • Gateway latency — how fast your machine can talk to your router. High latency or jitter here points to wifi congestion, a bad cable, or an overloaded router.
  • Internet latency — TCP handshake time to multiple well-known servers (Cloudflare, Google, OpenDNS).
  • DNS resolution — cached and uncached lookup times for your configured resolver and public resolvers (Google, Cloudflare, OpenDNS). Flags slow resolvers and compares your configured resolver against public alternatives.
  • Packet loss — at both the local and internet level.
  • Jitter — variance in latency, which causes buffering, choppy calls, and inconsistent page loads.
  • Wifi Signal Strength — how strong your wifi signal is.

Usage

uvx yslow              # one-shot check
uvx yslow -w           # continuous monitoring (every 30s)

Requires Python 3.10+. Works on Linux and macOS.

How it works

See docs/

Development

uv sync                  # install deps
./check.sh               # run all checks (format, lint, typecheck, tests)
uv run ruff check --fix  # lint
uv run ruff format       # format

Documentation

See docs/metrics.md for details on what yslow measures (RTT, packet loss, jitter, DNS), how each metric is calculated, and the thresholds used for diagnosis.

Planned

See TODO.md

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yslow-0.4.0.tar.gz (48.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yslow-0.4.0-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

File details

Details for the file yslow-0.4.0.tar.gz.

File metadata

  • Download URL: yslow-0.4.0.tar.gz
  • Upload date:
  • Size: 48.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"25.10","id":"questing","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for yslow-0.4.0.tar.gz
Algorithm Hash digest
SHA256 4ac59bd90451ff86554fe7d62bf4234e624f1f75e251a9c2881703bb92dd14f9
MD5 84186c52c4df21618f7f3f3e17bce603
BLAKE2b-256 edfde33c5f0559c5b668d50e6d6217d4587f02332b4797521f9ae5ef682294b9

See more details on using hashes here.

File details

Details for the file yslow-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: yslow-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 18.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"25.10","id":"questing","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for yslow-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 61ece9a3c3eac110cdffc17b66bfe8698843562b53eab4eb899aae80092c1648
MD5 68ed4bd000166ebd7e84d8518a5d4cc1
BLAKE2b-256 30971882f32e7ab537efe6a73b2904905ce2d84b20df8553538460f5d6ade9a6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page