Measuring running cadence with a phone
Short answer
Cadence is a step count divided by time, so it comes from the same hardware pedometer your phone already uses to count daily steps rather than from satellites. That is why a phone can report cadence with no watch involved. The figure you see is an average over a short rolling window rather than an instantaneous reading, which is why it lags a deliberate change in your stride by a few seconds.
Cadence is a rate: steps per minute. Your phone already counts steps for its daily activity total, and that counter is what a running app reads. No satellite fix is involved, which is why cadence keeps working in a tunnel, on a treadmill and in a basement car park, none of which a satellite signal reaches. If you are working out what a phone records on its own, running with only your phone covers the other metrics.
Where a cadence number comes from
From a step sensor, not from GPS.
Both mobile platforms expose a step count as first class system data. Motion hardware produces it continuously. Your running app only reads it.
On iPhone the interface is Core Motion's pedometer. Apple describes CMPedometer as an object for fetching the system-generated live walking data, and its live updates carry currentCadence, the rate at which steps are taken, measured in steps per second. That page also states the value is nil on devices that do not support gathering cadence data, and nil for historical queries. So a blank where cadence should be is a documented state, not a bug in the app you are using.
Android's equivalent is a sensor type. The platform documentation says the step counter sensor provides the number of steps taken by the user since the last reboot while the sensor was activated, and that an app must declare the activity recognition permission to use it on Android 10 or higher. Because the value is cumulative since boot, an app reads it repeatedly and subtracts, and treats a value that went down as a reboot, not as a negative result.
Why it is an average and not an instant reading
Steps do not arrive one at a time. Android's own documentation states that the step counter has more latency, up to 10 seconds, but more accuracy than the step detector sensor, whose latency is expected to be below 2 seconds. A counter that can hand over ten seconds of steps in one delivery, as a cumulative total with no timing inside it, cannot produce an instantaneous rate. So an app computes cadence over a window: steps in the window, divided by the length of the window, scaled to a minute.
The window is what makes the number readable. It is also what makes it lag.
Runflake computes indoor cadence from the steps in a rolling 10 second window, and a batched delivery covering a longer span is normalised by its own duration so no steps are lost. The same step window computation produces the cadence figure on an outdoor run.
- A window smooths. One heavy step, or one step the sensor missed, moves the number very little.
- A window lags. Change your stride deliberately and the reading walks toward the new value across the length of the window instead of jumping to it. To feel a rate change, count it, do not stare at the screen.
- It cannot show one step.
This matters most when you are trying to change something. Shorten your stride at a lamp post, glance down two seconds later, and the number you read is still mostly about the stride you just abandoned.
What a pocket, a hand and an armband change
Less than you would guess. The sensor is inside the phone, so what it registers is the phone's own motion, not your foot hitting the ground, and a pocket, a waist belt and an armband all ride your body and all rise and fall once per step, which is why the count survives all three. A hand is the case worth thinking about, because an arm can swing at its own rate, and a hand holding a phone out in front of you often does not swing at all.
Neither Apple's pedometer documentation nor Android's motion sensor documentation states where the phone has to be carried, and neither publishes an accuracy figure by position. So the working rule is consistency, not correctness: a figure from a hand held phone and a figure from a waist belt are two measurements of the same run, and nothing on the screen tells you which is closer to the truth. Compare your runs to your own earlier runs carried the same way, rather than to somebody else's number.
You can settle that for your own phone in a single run.
- Count one foot for 30 secondsPick a stretch where you are not starting or stopping, and not turning. Count left foot strikes, then multiply by four.
- Read the app straight awayCheck the cadence figure while the app's window still covers the stretch you counted. Wait a minute and you are comparing different pieces of running.
- Repeat with the phone somewhere elseSame stretch, same effort, phone in a different place. Now you know whether carry position moves the number on your own hardware.
If the two carry positions land within a couple of steps per minute of each other, and both sit near the figure you counted, position is not your problem. If they do not, you have learned something specific about your phone, which is more than any general article can give you.
Cadence indoors and outdoors
Indoors the step count is the measurement. It is not a supporting metric, because with no satellite fix there is nothing else producing distance. A step based indoor distance is a step count multiplied by an estimated stride length, and cadence becomes an input to that estimate, not a readout beside it. Treadmill tracking without a watch works through what such an estimate can and cannot do.
Outdoors the roles swap.
Distance and pace come from satellite fixes, and the step count sits alongside them. Permissions follow that split. Runflake is phone only, and a watch is not required for distance, pace, splits, cadence, or elevation. An outdoor run never pops the motion prompt on its own, because outdoors steps only drive the cadence and step-count display, and a run without them is still a complete run. Indoors it has to be asked, because without steps there is no distance at all. Either way, if the sensor or permission is missing the step feed emits nothing rather than zeros, and on an indoor run the app says so plainly: "This phone has no step sensor, so distance is not measured. Time is still recording."
Nothing instead of zero is worth checking in whatever app you use. A missing sensor that reports 0 spm looks exactly like standing still, while one that reports nothing can be drawn as unknown, which is what it is.
What cadence does not tell you
Speed.
Cadence multiplied by how far each step carries you is speed, and cadence pins down only one of those two terms. The arithmetic is fixed: at 170 steps per minute, a step of 1.00 metre is 170 metres per minute, or 5:53 per kilometre, while a step of 1.20 metres is 204 metres per minute, or 4:54 per kilometre. Same cadence. Nearly a minute per kilometre apart. The phone measures only the first of the two terms.
It also moves with effort. Testing experienced runners across seven treadmill speeds, Leacox and colleagues reported that mean cadence increased from 169.2 steps per minute at 2.68 metres per second to 177.9 steps per minute at 3.83 metres per second, while a subgroup of eight runners changed by no more than four steps per minute across that whole range. A cadence figure quoted without the pace it was run at is worth less than it looks.
And it varies between people. A systematic review of running cadence reports that typical cadence values in recreational runners range from 150 to 170 steps per minute, while elite runners often exceed 180 steps per minute. A population range is a description, not a target for one runner.
| Question | Can cadence answer it |
|---|---|
| How fast am I running | No. Speed also needs step length, which the phone does not measure directly |
| How far have I run | Only through a stride estimate, which is what step based indoor modes use |
| Am I running more efficiently | No. Efficiency is a physiological measurement, not a step rate |
| Has my step rate changed since last month | Yes, if the carry position and the effort were comparable |
Heart rate is the clearest example of a number a phone cannot produce on its own, because phones carry no heart rate sensor, and apps differ in how much they build on top of that absence, which is what running apps that need a watch goes through in detail.
Using it without turning it into a target
Start from your own average. Not from a round number. Record a few easy runs, note the cadence on each, and treat that as your baseline.
It is the only figure in this article that describes you.
The published case for changing it is a case for small moves. A systematic review of running cadence found that a moderate increase in cadence, typically 5 to 10 percent, led to consistent biomechanical improvements including reduced vertical ground reaction forces, lower loading rates, shorter stride length and improved lower limb alignment. Note the shape of that: a proportion of your own cadence, not a jump to somebody else's.
- Get a baseline. Three or four easy runs at your normal effort, phone carried the same way each time.
- Change one thing. Aim a few steps per minute above your own average on one easy run a week.
- Use a beat, not the screen. A metronome or a track at the right tempo gives feedback on every step, which a windowed number cannot.
- Give it weeks, and stop if it feels worse. A step rate you have used for years does not move in a session, and a metric that makes running unpleasant has failed at its only job.
Common questions
- Can a phone measure running cadence without a watch?
- Yes. Cadence comes from the phone's step sensor rather than from GPS, so any phone that has a step counter and the matching permission can report it, with no wrist device involved.
- Why does the cadence reading lag when I change my stride?
- Because it is an average over a short window of steps, not an instant reading. The number walks toward your new step rate across the length of that window instead of jumping to it.
- Is 180 steps per minute the correct cadence?
- It is a rule of thumb, not a threshold. The published ranges are wider than that single figure, and cadence rises with speed, so your own average on an easy run is a more useful reference point.