PackCal's calorie number is load-aware because Garmin's built-in activity profiles aren't. This page covers exactly how the math works, what the inputs are, and where the published research comes from. It's the same calorie engine as its full-app sibling, RuckTrack, the Pandolf path is a verbatim port, so the two products agree calorie-for-calorie.
Garmin's headline activity calorie is based on the Firstbeat heart-rate model: your HR response, body weight, age, and a VO2max estimate. It's a good general fitness number, but it doesn't take pack weight as an input. Published research on load carriage shows HR-only estimation under-credits a loaded carry by roughly 10 to 20 percent, because heart-rate-derived metabolic models don't directly account for the mechanical work of moving extra mass.
For carrying weight specifically, the U.S. Army Research Institute of Environmental Medicine spent decades validating a different approach: estimate metabolic cost from mechanical inputs (body weight, load, speed, grade, terrain) and read calories straight off the metabolic rate. That's the Pandolf equation.
The original 1977 form (Pandolf, Givoni & Goldman), as PackCal runs it:
Where:
M, metabolic rate in wattsW, body weight in kg. PackCal uses your manual body-weight override if you set one, otherwise your Garmin user-profile weight. If neither is available it shows SETUP NEEDED rather than guessing a default.L, pack weight in kgV, walking speed in m/s (clamped at 2.5 m/s; the equation was validated for walking only)G, terrain grade in percent (from a rolling altitude/distance window)η, terrain coefficient (see next section)The three terms are intuitive once you read them: 1.5W is the resting/maintenance term, 2(W+L)(L/W)² is the load-carriage penalty (note the squared L/W ratio, heavier loads on lighter people cost disproportionately more), and η(W+L)(1.5V² + 0.35VG) is the velocity-and-grade work term.
PackCal accumulates M/4184 kcal per second while you're moving above 0.3 m/s. The 4184 conversion is the standard joules-per-kcal factor (1 kcal = 4184 J).
An unloaded baseline runs in parallel, the same equation with L = 0. Subtracting unloaded calories from loaded calories gives the pack bonus: the calories that came purely from the weight. That's the number on the CAL FROM PACK pill on the single-field screen.
The terrain coefficient η scales the velocity-and-grade work term by how much energy the surface costs you. Values from the U.S. Army terrain-factor research (Soule & Goldman, 1972):
A 50 percent increase from Road to Sand, and 150 percent for soft snow, for the same speed and load: these are real numbers from the literature, not rough estimates. Pick the terrain in PackCal's on-watch settings; you can change it mid-activity and the next tick picks it up. The value at save time writes to the activity's FIT file as the terrain_factor field. (These coefficients match RuckTrack's exactly, by design, the two products share one terrain set.)
Vanilla Pandolf underestimates metabolic cost on negative grades, the equation goes mathematically silly when G is large and negative, sometimes returning a metabolic rate below resting. Santee et al. (2001) showed empirically that descent still costs at least the resting/maintenance term.
PackCal applies the Santee floor: on negative grades, M is floored at 1.5W. Calories don't dip below maintenance just because you're walking downhill.
The Pandolf equation needs speed and grade, both of which come from GPS. When GPS isn't usable (under tree cover, during the first minute before lock, or when you stop on a hill for a break), Pandolf would either freeze or produce garbage.
PackCal handles this by accumulating calories from Garmin's native HR-based estimate during any tick where Pandolf isn't reliable. Specifically:
The total calorie number shown in the cell is a hybrid: Pandolf when Pandolf is valid, native HR fallback when it isn't. Both streams accumulate into the same running total, so the number never resets or drops when conditions change. (The pack-bonus figure is computed only from the Pandolf-valid portion, since the native fallback is load-blind.)
Indoor steady-state activities (treadmill, indoor walk, elliptical, stair) have no GPS-derived speed or grade, so PackCal uses an Auto path:
The watch's HR-based estimate gets scaled up by a multiplier that grows with the load-to-body-weight ratio. The α = 0.4 coefficient was tuned to land between published HR-only estimates (which we know undercount loaded work) and Pandolf at typical indoor speeds. It's not as physically grounded as Pandolf, but it's the right shape for the use case: set the pack weight, walk, and let the watch's HR sensor do the per-second tracking. The subtitle shows the resulting multiplier as a "+N%" so you can see what the load added.
The big calorie number at the top of an activity in Garmin Connect comes from Garmin's heart-rate model. PackCal's number comes from the mechanical work your body did. Because those are two different methods, they rarely match exactly, and the gap runs in both directions depending on conditions.
On a treadmill or easy indoor walk, PackCal often reads higher than the headline. Heart-rate calorie models read low when your heart rate is low. A fit walker at an easy pace barely lifts their HR, so the watch infers a modest burn even though the work of walking that speed and load hasn't changed. PackCal bills that work directly, so its number comes in above the heart-rate one.
On flat outdoor ground, PackCal can read a little lower. With no grade and an easy pace the work term is small, and the heart-rate estimate can sit slightly above the work-based one.
Garmin doesn't let a Connect IQ data field overwrite that headline calorie field, so PackCal's number lives in its own cell while you move and in the activity's Stats → Connect IQ section after you save. The two numbers being different is the point, the headline answers "how hard did your body work?" while PackCal answers "how much of that came from the pack?"
On the watch, the single-field screen shows the live load-aware total as the hero, a CAL FROM PACK pill with the pack bonus, a live HR / pace / ascent rail, and a timer-and-distance footer. In a denser multi-field layout, PackCal degrades to a labelled calorie number.
In Garmin Connect, the load-aware fields live under Stats → Connect IQ: pack weight (in your chosen lb or kg), pack calories (the load-aware total), and terrain (on outdoor sessions). These are the same field IDs RuckTrack writes, so an activity detail page reads consistently whichever product recorded it.