Skip to main content

isitthewifi

Is it the Wi-Fi? One command grades your connection A–F and tells you, in plain English, whether the problem is your Wi-Fi, your router, your ISP, or DNS.

uvx isitthewifi

isitthewifi demo

Demo recorded on a simulated home network with 300 ms of upload bufferbloat, so the problem is reproducible. A real run tests your actual router and Cloudflare.

Speed tests answer "how fast?", but that's rarely why a video call freezes. What usually breaks is latency under load: your connection is fine until someone uploads a photo library, and then every packet waits in a queue for 300 ms. isitthewifi measures that, and then works out where the queue is.

How it figures out whose fault it is

It runs a ~30 second test while probing two legs at the same time, ten times a second:

Leg What it tells us
You → router The Wi-Fi hop. Healthy Wi-Fi answers in 1–5 ms with no loss.
You → internet (1.1.1.1) Everything past your house: modem, ISP, the route.

Then it saturates your download, then your upload (using Cloudflare's speed test servers), and watches what happens to each leg:

  • The router leg is slow, jittery, or dropping packets → it's the Wi-Fi. Weak signal, interference, 2.4 GHz congestion.
  • The internet leg balloons under load but the router leg stays flat → it's not the Wi-Fi. The traffic jam is in your router's connection to the ISP (bufferbloat). Fix: turn on SQM / Smart Queue.
  • Both legs balloon together → the backlog is building up on the Wi-Fi hop itself.
  • The internet leg is slow or lossy even when idle, router leg clean → it's your ISP.
  • New lookups take 150 ms+ through your resolver but 15 ms through 1.1.1.1 → it's your DNS.

It also reads your Wi-Fi signal strength, band and link rate from the OS (system_profiler on macOS, iw on Linux, netsh on Windows).

The grades

Test A B C D
Wi-Fi signal ≥ -55 dBm ≥ -65 ≥ -72 ≥ -80
Wi-Fi hop < 3 ms < 6 ms < 15 ms < 40 ms
Latency (idle) < 20 ms < 40 ms < 70 ms < 120 ms
Stability (jitter / loss) < 3 ms / 0.5% < 8 ms / 2% < 20 ms / 5% < 50 ms / 10%
Lag while downloading / uploading < 30 ms (A+ < 5) < 60 ms < 200 ms < 400 ms
DNS (uncached lookup) < 25 ms < 60 ms < 120 ms < 300 ms
Download / Upload 200 / 50 Mbps 100 / 20 25 / 5 10 / 2

The bufferbloat thresholds match the ones used by the Waveform bufferbloat test. Lag under load counts 1.5× toward the overall grade; raw speed counts 0.5×, because past a point it isn't what you feel.

Options

isitthewifi              # full test, ~30 s
isitthewifi --quick      # ~15 s
isitthewifi --no-upload  # skip the upload test
isitthewifi --no-load    # latency + DNS only, uses almost no data
isitthewifi --json       # machine-readable results
isitthewifi --router 192.168.1.1 --target 8.8.8.8

A full run transfers a few hundred MB on a fast connection. Use --no-load on metered connections.

No admin rights needed

ping needs raw sockets, which means root on Linux. isitthewifi doesn't use ICMP at all: it times tiny DNS queries over UDP (to 1.1.1.1) and TCP handshakes (to your router, whose kernel answers them instantly, or refuses them, which takes exactly one round trip too). Everything runs as a normal user on macOS, Linux and Windows.

Install

uvx isitthewifi          # run without installing
pipx install isitthewifi # or install it

Requires Python 3.9+. The only dependency is rich.

License

MIT

Metadata

Release files for isitthewifi 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for isitthewifi 0.1.0
File Size Uploaded Provenance Actions
isitthewifi-0.1.0.tar.gz 22.3 kB With provenance Details for isitthewifi-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for isitthewifi 0.1.0
File Interpreter ABI Platform Actions
isitthewifi-0.1.0-py3-none-any.whl Python 3 none any Details for isitthewifi-0.1.0-py3-none-any.whl

Total release size: 43.4 kB

Release files / isitthewifi-0.1.0.tar.gz

Download URL isitthewifi-0.1.0.tar.gz
Size 22.3 kB
Tags Source
SHA-256 checksum
How to use checksums
2aab94fac142e05e376d9cbe7349a85f7f723688953f8421aaa3fb1f94678b75
BLAKE2b-256 checksum
How to use checksums
14ee62eccda63c078eab905043811ca8603ffcc4a1e04a0b9f26b1ac2094b301
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

Release files / isitthewifi-0.1.0-py3-none-any.whl

Download URL isitthewifi-0.1.0-py3-none-any.whl
Size 21.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
39000642d5638f419d101469c2207b6ad4752bb9bb083f3cbd3bcf407d3f0f99
BLAKE2b-256 checksum
How to use checksums
4e43510c04296c2c4c6782b4533504fb3b3be8bc9a208102c0e6f0ec85398b0d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

Security for isitthewifi 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for isitthewifi-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page