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.

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).
  • Packet loss — at both the local and internet level.
  • Jitter — variance in latency, which causes buffering, choppy calls, and inconsistent page loads.

By comparing gateway vs internet results, yslow isolates the problem:

Gateway Internet Diagnosis
Fast Fast Connection is healthy
Slow Slow Local network is the bottleneck (router/wifi)
Fast Slow ISP or internet routing issue
Unreachable Slow Unusual setup, but internet works

Usage

uv run yslow

Requires Python 3.10+ and Linux. No dependencies beyond the standard library.

How it works

yslow uses TCP handshake timing rather than ICMP ping. A TCP connect to port 443 measures the same network round-trip as ping, but works without root privileges and inside containers where ICMP is often blocked.

For the gateway, it tries common TCP ports (80, 443, 53) and falls back to ICMP ping if needed.

Development

uv sync                  # install deps
./check.sh               # run all checks (format, lint, typecheck, tests)
uv run pytest            # run tests only
uv run ty check          # type check only
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), how each metric is calculated, and the thresholds used for diagnosis.

Planned

  • DNS resolution timing
  • Bandwidth / throughput estimation
  • Bufferbloat detection (latency under load)
  • Route analysis (where along the path is the bottleneck)

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.3.0.tar.gz (44.4 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.3.0-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: yslow-0.3.0.tar.gz
  • Upload date:
  • Size: 44.4 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.3.0.tar.gz
Algorithm Hash digest
SHA256 4affdf36512a2032bf48543da102753a7ec4bcda8c12a7be9245eb51c70d3bc1
MD5 9ffb6c82168b7e047c14a7d15104726f
BLAKE2b-256 1e089431f2a59bcc05646f25325b80050d9a47838876d4da34a7a41209319563

See more details on using hashes here.

File details

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

File metadata

  • Download URL: yslow-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 16.5 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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 719c7c3f743d27736223a8bd8ba8cc6115addc733b914955820edd13d761b14d
MD5 7a7f7d7cddb05bc42465a652c37b10a2
BLAKE2b-256 d8a3ed4c1e07ab92653f0148ec96791c3df79ab604e03a66e3ec13c28c785b24

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