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
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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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 logRelease 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 logSecurity 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
Both files in this release have been uploaded with provenance metadata.
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 logA 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.