Because "speed" doesn't explain the lag.
Netprobe runs a comprehensive connection test in your browser — no app, no server, no account. It measures what actually matters for a real internet connection: not just raw speed, but latency, jitter, and buffer bloat.
Test it live now: https://rajeshsub.github.io/netprobe/
| Metric | What it tells you |
|---|---|
| Download speed | How fast data arrives at your device |
| Upload speed | How fast your device sends data |
| Latency | Round-trip time to your nearest server |
| Jitter | How consistent your latency is |
| Buffer bloat | How much does your connection struggle under load |
Buffer bloat is graded A–F. An A means your latency barely changes during a download. An F means your connection is unusable for calls, gaming, or anything interactive while someone else is downloading.
- Finds your nearest M-Lab server via the NDT7 locate API
- Runs a full download + upload test against that server (your headline speed)
- Simultaneously fires HTTP pings during the download to measure buffer bloat in real time
- Runs the same download + upload test in parallel against 5 fixed global regions (US East, US West, EU West, Asia East, Oceania)
- Shows per-region results and an averaged headline
Everything runs in the browser. No data is collected, stored or shared by netprobe!
When a test completes, the URL updates automatically. The results are encoded directly in the hash fragment of the URL, so no server storage is involved. The recipient's browser reads the hash and renders the results locally.
npm install
npm run dev # local dev server
npm test # run tests
npm run build # production buildCopy .env.example to .env before running locally. All configuration is via environment variables — no hardcoded URLs.
- Svelte 5 + Vite — compiled, no runtime framework overhead
- M-Lab NDT7 — open measurement infrastructure
- uPlot — lightweight real-time charting
- Vitest — unit tests for all core logic modules
