Moving Network Speed Test
For background, I have a bit of an interest in cellular networks, how they perform etc. Standard speed test tools require you to sit there and press a button each time, which is fine for a single data point but useless for understanding coverage across a journey.
That annoyed me.
What It Does
Moving Network Speed Test runs continuous speed tests in the background while you travel. You start it, put your phone on the seat, in a mount (just don't touch it, that's illegal in most places) and it tests every 30 (configurable) seconds — tagging each result with your GPS coordinates. When you're done, you have a map showing speed tiers along your route.
I wrote a small tool a few months back that i've been trying out to measure some of this, and it mostly works, so sharing here.
How It Works
Each test runs a sequential pipeline: network quality check -> latency -> download-> upload. The speed measurement uses Cloudflare's speedtest library, running in a Web Worker so it doesn't freeze the UI (and makes killing it if you lose network connection half-way through easier...)
The test sizes adapt based on recent results — there are 6 quality tiers, and the payload sizes scale accordingly, with indication as it goes. GPS tagging uses the browser's Geolocation API.
The results appear on a map, colour-coded by speed tier with pins by area. You can export to CSV or JSON if you want to do something with the data yourself, the data lives only in Local Storage (and, isn't sent off anywhere by me).
Caveats
This was written mostly by Kiro and Claude Code, because i'm totally lacking in any ability to do frontend/web dev.
More importantly: this will consume a lot of data. Running every 30 seconds across a long journey adds up fast. Do not run this on a limited data plan unless you know what you're doing, and check whether your carrier has anything to say about automated testing. I'm genuinely not sure where it lands with most terms of service — that's your call to make. On a gigabit connection (which many 5G connections easily can be), this can easily chew through 1GB every ~10 seconds.
iOS Safari has some extra handling built in (stricter timeouts, worker teardown on backgrounding), i've tried to work around most of the oddities i've run into, but do open an issue (or a PR) if you find any others.
What I'd Like to Add
The obvious next step is crowdsourcing — something like CellMapper where results can be (volountarily) contributed to a shared dataset. That would make the tool genuinely useful for coverage mapping rather than just personal curiosity. It's on the list, but it's not something I've built or even thought through properly yet.
For now it's a useful personal tool. If you're the kind of person who finds themselves wondering how realistic hose coverage maps are for real world data throughput, give it a go.