URL: https://www.npmjs.com/package/howsmywifi

This was one of those late-evening-after-the-kids-are-asleep project. Followed by some next-morning-sober-readme-fixes-and-npmjs-paperwork.

It's a little Node script that will open https://fast.com with puppeteer, and record, using document.querySelector('#speed-value') what my current Internet speed is according to that app. It currently only works on OSX but it should be easy to fix for someone handy on Linux or Windows.

You can either run it just once and get a readout. That's basically as useful as opening fast.com in a new browser tab.
The other way is to run it in a loop howsmywifi --loop and sit and watch as it tries to figure out what your Internet speed is after multiple measurements.

Screenshot

That's it!

The whole point of this was for me to get an understanding of what my Internet speed is and if I'm being screwed by Comcast. The measurements are very erratic and they might sporadically depend on channel noise on the WiFi or just packet crowding when other devices is overcrowding the pipes with heavy downloads such as video chatting or watching movies or whatever.

I've seen 98 Mbps with my iPhone on this network. Not so much today.

And Screenshots!

As a bonus, it will take a screenshot (if you pass the --screenshots flag) of the fast.com page each time it has successfully measured. Not sure what to do with this. If you have ideas, let me know.

Comments

Peter Bengtsson

Thanks! That's neat.

However, there's just something about the speedtest Flash banner ads that makes me trust Fast.com better :)

Your email will never ever be published.

Previous:
Really simple Django view function timer decorator December 8, 2017 Python, Django
Next:
Another win for Tracking Protection in Firefox December 13, 2017 Web development, Mozilla
Related by category:
Always run biome migrate after upgrading biome August 16, 2025 JavaScript, Node
gg2 - a new CLI for helping me manage git branches August 6, 2025 JavaScript, macOS
gg shell completion August 13, 2025 JavaScript, macOS
Switching from Next.js to Vite + wouter July 28, 2023 JavaScript, Node
Related by keyword:
NodeJS fs walk() or glob or fast-glob August 31, 2019 JavaScript
How to submit a form with Playwright August 3, 2021 JavaScript
How to use minimalcss without a server April 24, 2020 Web development, Node, JavaScript
How I stopped worrying about IO blocking Tornado September 18, 2012 Tornado