2026-08-07 · 5 min read
Strap a GPS watch to your wrist, step on a treadmill, and start running. The distance number that comes out the other end is close to fiction. Not because the watch is broken, GPS simply doesn't work indoors, and a tracker that pretends otherwise is guessing. Outdoor and treadmill running aren't the same tracking problem wearing different shoes. They need different pipelines, and the honest version of a tracking app treats them that way instead of quietly reusing the outdoor one.
Why GPS can't do the job on a treadmill
GPS distance and pace come from watching your position change outdoors, satellite fix to satellite fix, second to second. On a treadmill you aren't going anywhere. Your position doesn't change, so there's nothing for GPS to measure, and a phone or watch still trying to get a fix indoors is chasing a signal that mostly isn't there: weak, bouncing between walls, sometimes returning a fake "position" as if you'd wandered off across the gym floor.
Zirv treats treadmill and outdoor as separate activity types from the moment you start a session (Indoor Running and Indoor Cycling, distinct from Running and Cycling), and it skips CoreLocation entirely for indoor sessions. That's not a limitation dressed up as a feature: it's the correct call, because there's no GPS signal worth reading on a treadmill, only battery to burn and a permission prompt to avoid asking for. If a tracker is quietly still polling GPS during your treadmill run, that's the app doing extra work for a number it can't get right.
Where the distance number actually comes from indoors
With GPS out of the picture, an indoor session needs another source of truth for distance, and the honest one is the number already on the treadmill's own console: the speed you set it to. Zirv's indoor mode asks for that speed directly, adjustable mid-run with a stepper (half and full km/h steps) or a numeric keypad, and integrates it once per second to build up distance for as long as that speed stays set. Bump the incline and pick up the pace, dial in the new number, and the app keeps counting from there. It also remembers the speed you used last time for that activity, so the next treadmill session starts pre-filled instead of at zero.
This is a fundamentally different measurement than outdoor GPS distance: it's arithmetic on a number you told the app, not a location-based observation. The accuracy of the whole session rests on how closely you keep that number matched to the belt, which is also why treadmill distance is only ever as good as your attention to the console, not a property of the tracking itself.
Pace, speed, and the metrics that go quiet indoors
Outdoor running leads with pace as its headline number, the minutes-per-kilometer figure runners are used to checking mid-run. Indoor running leads with speed instead, the same km/h number the treadmill console shows, with pace demoted to a secondary stat below it. That's a deliberate match to what's actually on the machine in front of you: you dial in speed on a treadmill, you don't dial in pace, so the hero number tracks what you're actually controlling.
Cadence and elevation gain go quiet indoors too. Outdoor running and hiking can read elevation change from GPS and step cadence from motion sensors that make sense against real-world movement; neither reading is reliable on a treadmill or spin bike, where your body moves but your surroundings don't, so Zirv leaves that slot blank for indoor sessions rather than showing a number it can't stand behind. If a tracking app is showing you a confident cadence or elevation figure for a treadmill run, ask where that number is actually coming from.
Auto-pause has to lean on a different signal indoors
Auto-pause on an outdoor run watches your GPS-derived speed drop toward zero to detect a real stop, at a red light, a water fountain, tying your shoe. Indoors, that signal isn't available in the same way: your session's speed is the number you dialed in on the console, and it doesn't fall on its own just because you've quietly stepped off the belt or slowed to a walk without touching the display. Heart rate is the signal that keeps working regardless of what the console says, since effort shows up in your pulse whether or not you remembered to update the speed, which is why it carries the auto-pause decision indoors in a way it only backs up outdoors.
The practical implication: if you slow down or stop on a treadmill without adjusting the displayed speed, don't expect the session to notice as quickly as it would outdoors. Update the speed when you change it, the same way you'd naturally let your GPS pace catch up outside, and the session data stays honest.
Reading a treadmill session for what it actually is
None of this makes treadmill data worse than outdoor data, it makes it a different kind of measurement, and reading it correctly means knowing which parts to trust. Duration, heart rate, and calories come from the same sensors either way and hold up the same. Distance and pace are only as accurate as the speed number you kept current on the console. Cadence and elevation simply aren't part of the indoor picture, not a bug, just outside what a treadmill session can honestly report.
Comparing a treadmill week to an outdoor week on distance alone glosses over that difference. If you want an apples-to-apples read on effort across both, heart rate zones and duration are the more honest comparison than distance, since one is a direct physiological measurement and the other is a manual number on a good day. Treat treadmill distance as a reasonable estimate you're actively responsible for keeping accurate, not a passive reading the way outdoor GPS distance is, and the number will actually mean something when you look back at it.
The takeaway
Treadmill and outdoor running need different tracking pipelines because they're solving different measurement problems: one has a real position to track, the other doesn't. Indoor distance comes from integrating a speed you set and keep current, not from GPS, which is also why cadence and elevation drop out of the picture entirely indoors. Auto-pause leans on heart rate instead of speed for the same reason. None of that is a downgrade, it's tracking that matches what a treadmill can actually tell you, instead of faking a GPS number that was never real to begin with.
