A real athlete on our roster ran 15.0 km on 16 August wearing a Garmin Forerunner 265 with running power on. Garmin Connect recorded 1,333 kcal. Strava, receiving the same file, showed 1,333 kcal in its calorie field and, in the same activity, an Energy Output of 2,176 kJ. Our importer took the kilojoule figure, wrote it into his training record as 2,176 kcal, and the coach reading that record credited him with a burn 63% larger than his watch had measured.
He never noticed, because a Garmin record of the same run sat beside it and won the tie. Fourteen runs by another athlete, who wears no Garmin, had no such protection. This article is about what that kilojoule number actually is, why it turns up on runs when Strava's own documentation says it cannot, and the months our own importer spent reading it as food.
The short answer
Strava's Energy Output is mechanical work in kilojoules, not energy burned in kilocalories. For a bike with a power meter the two happen to be close, because roughly a quarter of the food you burn reaches the pedals and a kilocalorie is 4.184 kilojoules, so the numbers almost cancel. That coincidence does not carry to running power, where the same field appears on any run recorded with a watts stream and sits anywhere from 6% to 82% above the calorie figure the watch itself reported. Trust the calorie field, which Strava passes through from your device; treat Energy Output as a load number.
What the field says it is, and where it actually turns up
Strava's API reference defines the field in one line: kilojoules, "the total work done in kilojoules during this activity. Rides only". Beside it, average_watts is "average power output in watts during this activity. Rides only", and device_watts is "whether the watts are from a power meter, false if estimated". A separate field, calories, is "the number of kilocalories consumed during this activity", and it exists only on the detailed activity endpoint, never on the list.
We pulled the last 90 days of activities from the ten Strava accounts connected to our app: 376 activities. The kilojoule field was present on 107 of them. Here is where.
| Sport | Activities | With kilojoules | Of which device_watts true |
|---|---|---|---|
| Run | 152 | 72 | 72 |
| Ride | 51 | 34 | 8 |
| Mountain bike ride | 1 | 1 | 0 |
| Weight training | 93 | 0 | 0 |
| Swim | 25 | 0 | 0 |
| Walk, hike, padel, pilates, other | 54 | 0 | 0 |
"Rides only" is not what the API does. Nearly half the runs carry the field, and every one of those 72 runs has device_watts set to true, which in the ride vocabulary means "a power meter". On a run it means the watch recorded a running-power stream: the Garmin Forerunner 170, 255, 265 and 965 and the COROS PACE 4 on this roster all do, out of the box. No run on this roster carried an estimated watts figure, so as far as our data shows, a run recorded with the phone app, or on a watch with running power off, arrives without the field.
Rides split the other way. Only 8 of the 35 kilojoule-carrying rides came from a power meter. The other 27 are Strava's estimate: it takes your weight, your bike weight, speed and gradient, models the watts that would produce that ride, and reports the integral as work done. That estimate is what the athlete sees as Energy Output, and it looks identical to a measurement.
Why a kilojoule looks like a calorie on a bike
The 1:1 folk rule is real, and it is a coincidence of two constants. A kilocalorie is 4.184 kilojoules. A cyclist's gross efficiency, the fraction of metabolic energy that becomes force at the pedals, is around 22 to 25 percent. Divide the work by the efficiency to get the energy burned, then divide by 4.184 to get kilocalories: at 23.9% the two cancel exactly and one kilojoule of work costs one kilocalorie of food. Strava's own writing leans on this. A piece on its Stories site walks through a 1,640 kJ ride and says the figure "translates almost 1:1 with calories burned, 1584 kcals", and puts power-meter calorie estimates "within about 5%", against 10 to 20% for heart rate and 20 to 60% for time, distance, age and weight.
Strava's help centre describes the calculation the same way: "to calculate calories for rides, Strava uses your power output and a human efficiency coefficient." It does not publish the coefficient. We can see it from the outside, though, because on rides where Strava computed the calories itself the ratio of its calorie field to its kilojoule field is the coefficient in disguise.
| Ride, and where the watts came from | Calories / kilojoules | Rides |
|---|---|---|
| Power meter, COROS PACE 4 | 1.08, 1.09 | 2 |
| Estimated, recorded with the Strava app | 1.11, 1.12 | 2 |
| Estimated, recorded on a Garmin watch | 0.90, 0.92, 1.04, 1.40, 1.59, 1.60, 2.03 | 7 |
The first two rows are Strava's arithmetic and land at 1.08 to 1.12, which implies an efficiency assumption near 21 to 22 percent rather than the 23.9 that gives exactly 1:1. Four rides is a small sample and we are not claiming the constant; we are saying the rule of thumb holds to within about a tenth on those rides.
The third row is a different thing, and the spread gives it away. Those seven rides came from Garmin watches, and Strava's help centre says plainly that it "shows Calories as they were provided by our upload partners. If no value is sent, or you record with the Strava mobile app, we use our own calculations." So the calorie field on those rides is Garmin's heart-rate-based number, and the kilojoule field is Strava's speed-and-gradient estimate of the watts, and the two were never computed from the same thing. On a 70 km ride the estimate came in at 937 kJ against a device figure of 1,904 kcal. The rule of thumb is not wrong there; it just has nothing to hold onto.
That pass-through is worth pinning down, because it is the whole reason the calorie field is the one to trust. In every Garmin-uploaded activity where we had both the Strava calorie field and the Garmin Connect figure, 12 of 12 across 7 runs and 5 rides, they matched to the unit: 3,325 and 3,325, 646 and 646, 275 and 275. Strava does not recalculate a Garmin calorie figure. It repeats it.
Why the coincidence dies on a run
Running power is not cycling power with a different shoe. A cycling power meter measures torque at a crank or pedal, and as Alex Hutchinson put it in a 2018 piece on running power, the saving grace of cycling power is that "your efficiency stays roughly constant under all conditions, because pedaling a bike requires essentially the same motion on hills and flats, gravel and asphalt, in headwinds, and so on." Running has no crank. Every stride includes a landing the muscles absorb rather than produce, which Hutchinson notes has "a negative efficiency of about -120 percent", and a tendon rebound that returns energy for free. The watts a running-power algorithm reports are a model of that mess, and each vendor's model is its own.
You can see the vendor fingerprint in our data. On the eight runs where we had the Strava kilojoules, the Strava calories and the device figure, the calories-to-kilojoules ratio was:
| Watch | Calories / kilojoules | Runs |
|---|---|---|
| Garmin Forerunner 265 | 0.55, 0.61, 0.63 | 3 |
| Garmin Forerunner 965 | 0.69, 0.80 | 2 |
| Garmin Forerunner 170 | 0.76, 0.85 | 2 |
| COROS PACE 4 | 0.94 | 1 |
The ratio is not a constant; it is a property of the watch. That is what you would expect if each running-power algorithm defines watts differently, and it is the opposite of the cycling table, where a power meter is a power meter. Four watches and eight runs is not a study, so treat the pattern as an observation rather than a finding. What it establishes is narrower and enough: on a run, dividing kilojoules by four and a bit does not give you the calories, and neither does reading the number straight.
Inverted, those ratios are the size of the error for anyone treating running-power kilojoules as a burn: 6% high on the COROS, 25 to 45% on the Forerunner 965 and 170, 59 to 82% on the Forerunner 265. That anyone was us.
How we read it as calories, for as long as we have had Strava
Our Strava importer maps each activity from the list endpoint into a training record, and the line that sets the calorie figure reads kcal: kilojoules != null ? round(kilojoules) : undefined. The comment above it says "work done (power meter rides), approximately kcal expended". It was written for rides and for the coincidence, and it is true of neither the estimated rides from a Garmin nor any run.
The second half of the mistake was structural. Because the list endpoint never carries calories, we built a fallback that fetches the detailed activity, one rate-limited call at a time, for any session that "arrived without a burn". A run with running power arrived with kilojoules, so it counted as having a burn, so the fallback never asked for its real calories. The activities most likely to carry a wrong number were exactly the ones the correction was designed to skip.
Measured against the 133 Strava activities currently stored for our athletes, 65 hold the kilojoule figure as their calorie value. For three athletes with a Garmin connected as well, the duplicate-session logic keeps the Garmin record and discards the Strava one, so the wrong number was written and then outvoted. For the athlete with 14 running-power runs and no Garmin, nothing outvoted it.
We also have to correct something we published. Our earlier piece on Apple Health showing workouts twice reported that Strava "recalculates run and ride calories" and gave ranges, runs 3% to 33% above Garmin and rides 4% below to 11% above. Those numbers were real, but the mechanism was not Strava's. They were our kilojoule read set against Garmin's calorie figure. Strava had carried Garmin's number through unchanged the whole time, in the field we were not reading. That article now says so.
What to do with the numbers
- For fuelling, read the calorie field. On a Garmin or COROS upload it is your watch's figure, unchanged. On a Strava-app recording it is Strava's estimate, and for a ride that estimate is power-based and reasonable.
- Treat Energy Output as load, not food. Kilojoules of work are a fine way to compare this week's rides with last week's. They are not what you ate back.
- On a ride, check
device_watts. True means a power meter and a kilojoule figure you can convert at roughly 1.08 to 1.12 kcal per kJ. False means Strava modelled the watts from speed, weight and gradient, and on our data that estimate landed anywhere from half to double the device's calorie figure. - On a run, ignore the kilojoules for energy entirely. The ratio to real calories depended on the watch, from 0.55 to 0.94 on our eight runs, and no single conversion recovers it.
- If an app shows a run's kilojoules as calories, it is over-crediting you. We know because the app was ours.
The fix on our side is small: use kilojoules as the calorie figure only when device_watts is true and the sport is a ride, and let every other activity fall through to the detailed-endpoint calorie read, where Strava is repeating what your watch said. It carries one trap of its own, which is why it is not in this article's past tense: our stored activity ids include the calorie figure, so a corrected number re-imported beside the old row would count the run twice. The 65 rows have to be repaired in place, not replaced.
Kipp reads your Strava activities alongside your Garmin, Apple Health or WHOOP data and keeps one record per session. When two sources describe the same run, it keeps the measured burn and says which device it came from, and when a number is an estimate it says that too, so the coach's fuelling advice is built on what your watch recorded rather than a field that happened to be present.
Sources
- Strava's API field definitions, read from the model reference:
kilojoules"The total work done in kilojoules during this activity. Rides only";average_watts"Average power output in watts during this activity. Rides only";device_watts"Whether the watts are from a power meter, false if estimated";calories"The number of kilocalories consumed during this activity". Strava API Reference: DetailedActivity and SummaryActivity - Strava's calorie method for rides ("your power output and a human efficiency coefficient") and runs ("speed (grade adjusted), weight, and moving time"), and the pass-through rule: "Strava shows Calories as they were provided by our upload partners. If no value is sent, or you record with the Strava mobile app, we use our own calculations." Strava Help Center: Calorie Calculation
- The 1:1 rule of thumb and the accuracy ladder (power ~5%, heart rate 10-20%, time/distance/age/weight 20-60%), from Nikalas Cook on Strava Stories. Power Meter Guide: Fueling, Cramping and Understanding the Metrics
- Why running power is not cycling power: constant efficiency on a bike, eccentric landings at "about -120 percent" efficiency on foot. Alex Hutchinson, Outside, 29 January 2018. What Is "Running Power," Anyway?
- Our earlier piece that misattributed the gap, now corrected. Two apps are double-logging your workouts to Apple Health
- The 376-activity field census, the 12 of 12 pass-through matches, the calorie-to-kilojoule ratios by watch and the 65 of 133 stored rows are from the Strava accounts connected to our app and our own database, measured in September 2026. Ten accounts and eight comparable runs is a small sample; none of it is a population claim.
