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.5.0.tar.gz (49.6 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.5.0-py3-none-any.whl (18.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: yslow-0.5.0.tar.gz
  • Upload date:
  • Size: 49.6 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.5.0.tar.gz
Algorithm Hash digest
SHA256 a076fa8ca10c0dcd2f29715fbcea791dd01a611d7224c8bc66c1e6ea6acde8a2
MD5 4e4b7a516c67f71c1e33d1108a645300
BLAKE2b-256 3d10fdbad21511a09887a780241f642e8050131ccd2657b9a8fdf245a6898adb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: yslow-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 18.6 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.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c726c09bf251008a56f231ae6c565c55bdfd1f9ac123dfcd304ee9e3d4be0b71
MD5 38c224ef4ccb6eeda6e1b95439b67207
BLAKE2b-256 112c1772e439cd9ea96a8886595b91331df502c6ca7f4bba069e94af7b6afa7e

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