At last, I decided to declare version 1 of walkpadspeed, my app to drive my Bluetooth walking pad. Two months after the first working version, it is now mature and feature-complete enough to be released as "version one".
The pitch: a single web page that connects to a "smart" walking pad or treadmill over Bluetooth and drives it through a workout you design yourself. No app store, no install, no account, no ads. Open it in Google Chrome on your phone, connect, walk. The walkpad app for geeks!

What?🔗
A walking pad is a bare treadmill: a belt, a motor, and a speed. The "smart" ones (the kind sold with a companion phone app, without a console full of buttons) speak the standard FTMS Bluetooth protocol, which is all you need to control them. So walkpadspeed lives entirely in your browser, uses the Web Bluetooth API, and needs nothing else.
You design your routines as simple text files — each line a step of speed, optional incline, and duration:
HIIT Sprints
3 60 Warmup
6 30 sprint #1
3 30
6 30 sprint #2
3 2m CooldownLoad the file, pick a routine, start walking. The app handles the timer and the speed changes for you, beeping one second before every change so you are never caught off guard.
Why?🔗
I bought a simple, entry level walking pad (a Fousae ZX-390, many brands sell similar ones: Urevo, Sperax, DeerRun, Costway...), favoring mechanical qualities over sophisticated features. I wanted an app where it was easy to program various routines, as I wanted to experiment a lot.
The existing apps either required expensive subscriptions, or were super complex to program, or had bugs because they tried to cater to very complex treadmills or full health tracking plans. MyHomeFit was the closest to satisfying my needs, but writing programs in their XML format or built-in editor was horrible — you cannot even duplicate a routine or a step — and speeds drifted because it relied on device data and accumulated rounding errors.
So I designed walkpadspeed to "scratch my own itch". And I think all the people like me, wanting freedom to control simply their simple walking pads, will like it too.
What is distinctive🔗
- Routines as text files. An open format, terse and editable in any editor — not an XML abomination. Comments, blanks between routines, speeds in km/h or mph, durations in seconds or minutes, optional incline percentages.
- Driven by your heart rate. Wear any device using the standard BLE Heart Rate Service (Coros, Coospo, Garmin, Polar, Wahoo...) and the pad speed is auto-adjusted to keep your heart in a chosen zone. There are the usual Z1–Z5 zones, plus a "digestive" Z0 for the optimal effort to reduce glycemic peaks after meals.
- Speed that adapts to the day. Nudge the whole routine faster or slower on the fly (
+,-,+++...) without losing your place. Feeling great? Tap up. Tired? Tap down. - Test mode. No walkpad on hand? The whole app runs simulated, so you can design and rehearse routines anywhere.
- Logs of your sessions. Kept as simple text files, in the same format as the routines, tracking speed, zone, incline and heart rate step by step.
- Routines that are shareable. Each routine is a unique URL with everything baked in — bookmark it, share it, or keep your file in a GitHub Gist and import it by URL.
Why a single HTML file?🔗
Because I am a fan of the single self-contained artifact — I ranted about it for Go binaries, and this is the same idea for the web. The whole app is one walkpadspeed.html file embedding modern vanilla JavaScript: no build step, no dependencies, no server. Host it anywhere, open it in a browser on a Bluetooth-enabled device, done. I even host a copy at walkpad.fr so you do not have to type a long URL on your phone.
Everything happens inside your browser. Your routines, your Bluetooth connection, your history never leave your device — no server, no account, no tracking.
Installation, Usage, and more info🔗
github.com/ColasNahaboo/walkpadspeed
AI co-written: don't like, don't use.