NetPulse is a browser-based internet speed tester. It runs entirely as a static web page and shows download speed, upload speed, ping, and jitter through an animated gauge and live charts.
Visit: https://devspirehub.com/netpulse/netpulse
- Download speed display
- Upload speed display
- Ping measurement display
- Jitter display
- Packet loss display (currently always shown as 0%)
- Live animated speedometer and Chart.js graphs during a test
- Server selection: nearby servers (sorted by your browser's geolocation) or a full global list
- Network info panel showing your public IP, ISP, city, country, and timezone
- Speed rating label (Excellent / Good / Fair / Poor) based on the download result
- Test history list shown on the page for the current session
When the page loads, it looks up your public IP and ISP info by calling a few IP lookup APIs (falling back to the next one if the first fails or is blocked).
It then asks for location permission. If you allow it, it sorts a built-in list of servers (spread across many cities worldwide) by distance from you and shows the nearest ones. If you deny it, it falls back to a fixed set of global cities.
When you hit "Start Test," it runs through three phases: a short ping phase, a 15-second download phase, and a 15-second upload phase. Each phase animates the gauge, bars, and charts toward a result value, then the run is added to the on-page history.
One thing worth being upfront about: NetPulse doesn't actually transfer test data over the network to measure real throughput. Each server in the list has a realistic speed/ping range attached to it, and a test run picks a value from that range (with some random jitter) and animates toward it. So it behaves and looks like a real speed test, but the download/upload/ping/jitter numbers are generated, not measured.
- HTML, CSS, JavaScript (no framework, no build step)
- Chart.js (loaded from a CDN) for the live charts
- Tabler Icons and Font Awesome (CDN) for icons
- Google Fonts (Saira, Poppins)
- Browser Geolocation API for nearby-server sorting
fetch()calls to ip-api.com, ipapi.co, and api.ipify.org for IP/ISP info, in that fallback order
- Clone the repository.
- Open
netpulse.htmldirectly in a browser, or serve the folder with a local web server. - Allow or deny the location prompt (either way, a server list will load).
- Click "Start Test."
A local server isn't required, but if you want to run one:
python -m http.server 8000Then open http://localhost:8000/netpulse.html.
netpulse/
├── netpulse.html
├── style.css
├── script.js
├── images/
│ ├── net-pulse.webp
│ ├── netpulse-logo.webp
│ └── netpulse.webp
├── netpulse.webp
└── readme.md
netpulse.html— page markup, meta tags, and the speed test UIstyle.css— all stylingscript.js— server list, IP lookup, geolocation sorting, the test animation logic, and the speedometer/chart renderingimages/— logo and preview images used by the site
https://devspirehub.com/netpulse/
- The speed, ping, and jitter numbers are generated within a preset range per server, not measured from a real data transfer. Treat it as a demo/UI project rather than a real diagnostic tool.
- Test history only lives in memory for the current page load — refreshing the page clears it.
- The IP/ISP lookup depends on three external APIs and needs internet access to work; if all three are unreachable, that panel shows "Unavailable."
- One of the IP lookup calls uses plain
http://, which some browsers may block as mixed content if the page itself is loaded overhttps://.
No license file is included in this repository.