Pinging.net - a new quick way to monitor your internet connection

What do you do if you wonder if your internet connection is working?

I built Pinging.net to be a fast and convenient way to monitor your internet connection.

Visiting Pinging will automatically run a few tests. Firstly, caching for the site is disabled so when the page loads you have a good indication that your internet is working. The site then does a DNS and HTTP POST test, these are repeated every 30 seconds. It also starts sending “Web Pings”.

What are web pings? A ping is sending a single packet and waiting for a single response. This is normally done using ICMP ping packets but since a website can’t send actual ICMP ping packets, I had to make do with the best I can, UDP packets. The only way I know of to send/receive UDP as a website is through WebRTC so that is what the site does. By using UDP we avoid TCP retries so we can see and monitor packet loss and get more accurate round trip latency metrics. So Pinging sends a web ping every second and graphs the latency of the ping in a custom built chart and dropped packets show up as red squares. The graph view makes certain kinds of periodic issues a lot more apparent.

Pinging is DNS load balanced using Cloudflare to route people to the closest server. I currently have 3 virtual servers running and will add more as traffic demands. Cloudflare will also remove origin servers that have failed. I currently have pinging running in two clouds (Google Compute and Vultr) so it should be pretty high availability.

So back to the original question, what do you do when you wonder if your internet connection is working? I used to mostly use example(.com) since it was fast and always up. I would then pull up a terminal and do a combination of pings to various IP addresses or hostnames. Pinging is a convenient and fast alternative. But seriously let me know what you do when you are testing your internet? I would love to hear any feedback too. Thanks!

The frontend is written in TypeScript and the backend is written in Rust.
It is all open source and available on GitHub at benhansenslc/pinging

5 Likes

Thanks for sharing. I like this. Love the visuals.

Any chance for a command-line version that functions the same; powered by Pinging?

1 Like

I’ve been using ping.pe for years. Enter my IP or any IP/website.

Thanks for this, bookmarked!

1 Like

That’s pretty cool. I agree with @hydn about the visuals.

1 Like

Thanks everyone!

@hydn I have thought a bit about a CLI. Without the restrictions of the browser there is even more you could do. For example the CLI could attempt to determine the boundary between your internet and intranet (i.e. your router) and send actual ping packets to both your router and a host on the internet and show any packet loss differences (which could help people determine WiFi vs ISP issues).

Right now I am going to focus on the website. There are still some additional features I want to add and I like how easy it is for non-technical users and low friction it is for technical users. The first users were my family members who aren’t technical or use terminal apps. I’ll keep thinking about a CLI. If anyone is interested in building one, I am happy to collaborate too.

3 Likes

Cool interface, what about proxy support like SelekTor or Squid does it show those too?

1 Like

@tmick I am not sure I understand your question but let me try to answer. The connections to pinging.net should proxy the same as other sites you visit in your browser. If you have a proxy or VPN it will add latency but otherwise should not change anything. It is possible that some proxies or VPNs will block WebRTC so the Web Pings won’t work. All of the pages/apis are explicitly marked as not cachable so any proxy that respects the headers shouldn’t be caching the pages (and affecting the latency).

You sort of did answer the question without being sure you did. I was asking (kind of poorly, I could have worded that much better) if it would show all connections from that computer. So if you had a Proxy configured and wanted to see if it was doing what it should be doing or if it did that or per interface eth0, eth1 etc.
But your explanation answered that by explaining what it does. Either way I like the interface :grin: