All fields from Garmin activity

I have been creating some activity custom fields using the powerful “Fit file field” option on custom fields. I’ve been able to extract all this information from my Garmin sessions (F7 + HRM-Pro):

They are public and I wonder if you have discovered some more.

(2023-01-19) Edit to add field codes and descriptions.
(2023-01-19bis) Edit to add some more fields (LTGR, LTP and Performance condition).
(2023-01-31) Edit to add possible value to the Training Effect / Primary Benefit selector.
(2023-02-08) Edit to add Flight Time.

  • Run Cadence (Runcadence): Running Cadence as double of cycling cadence. Script activity.average_cadence*2
  • Stride (Stride): Average stride from activity. Filed already in the activity header, but is nice to have it next to run cadence. Script activity.average_stride
  • Recovery HR (RecoveryHR): Recovery Heart Rate from Garmin activity (Measured at the end of the session). FIT file field 202
  • Vertical Ratio (VerticalRatio): Vertical Ratio from Garmin Running Dynamics. FIT file field avg_vertical_ratio
  • Vertical Oscillation (VerticalOscillation): Vertical Oscillation from Garmin Running Dynamics. FIT file field avg_vertical_oscillation and Script activity.isNew ? activity.VerticalOscillation/10 : activity.VerticalOscillation
  • GCT (GCT): Ground Contact Time from Garmin Running Dynamics. FIT file field avg_stance_time
  • GCT Balance Percent (GCTBalance): Ground Contact Time Balance (Left percentage). Only needed to show GCTBalanceText. FIT file field avg_stance_time_balance
  • GCT Balance (GCTBalanceText): Ground Contact Time Balance (Left/Right) from Garmin Running Dynamics. It needs the “GCT Balance Percent” (GCTBalance) field created. Script:
left = activity.GCTBalance
right = 100-activity.GCTBalance
balance = left.toFixed(1) + '% L / ' + right.toFixed(1) + '% R'
  • Aerobic Effect (AerobicEffect): Aerobic effect from Garmin activity. FIT file field total_training_effect
  • Anaerobic Effect (AnaerobicEffect): Anaerobic effect from Garmin activity. FIT file field total_anaerobic_training_effect
  • Training Effect (TrainingEffectSelect): Training effect / Primary benefit from Garmin activity. Selector field (1=Recovery, 2=Base, 3=Tempo, 4=Threshold, 5=VO2 Max, 6=Anaerobic, 7=Sprint). FIT file field 188
  • Training Load (TrainingLoad): Training load from Garmin activity. It is Exercise Load based on estimated EPOC. It is a Garmin approach and totally different from TP TSS. FIT file field training_load_peak
  • VO2 Max (VO2MaxGarmin): VO2 Max with 2 decimals extracted from the Garmin activity. FIT file field 140.7 and Script activity.isNew ? activity.VO2MaxGarmin * 3.5 / 65536 : activity.VO2MaxGarmin
  • Recovery Time (RecoveryTime): Recovery Time from Garmin watches. Works for watches that don’t report this via Garmin Connect. FIT file field 140.9 and Script activity.isNew ? activity.RecoveryTime / 60 : activity.RecoveryTime
  • LTHR Detected (LTHRdetected): Lactate Threshold Heart Rate when detected during Garmin activity. FIT file field 140.14 and Script (Optional) activity.LTHRdetected == 0 ? NaN : activity.LTHRdetected
  • LTP Detected (LTPaceDetected): Lactate Threshold Pace when detected during Garmin activity. FIT file field 140.16 and Script activity.isNew ? (activity.LTPaceDetected == 0 ? NaN : activity.LTPaceDetected / 36) : (activity.LTPaceDetected == 0 ? NaN : activity.LTPaceDetected)
  • Performance Condition (PerformanceCondition): Performance Condition at the end of the Gamin activity. FIT file field 140.17
  • Flight Time (FlightTime): Flight Time is the amount of time you spend off the ground between strides when running. It needs Ground Contact Time (GCT) custom activity field created. Script activity.GCT > 0 ? (60 / (activity.average_cadence * 2) * 1000) - activity.GCT : NaN

This is insanely helpful, thanks for building all these!

Thanks to @Chris_Counsell, I have added the VO2 Max with 2 decimals extracted from the activity (custom field code is VO2MaxGarmin):


I’ve added Total_Training_Effect for those devices that don’t have Aerobic Effect and Anaerobic Effect as metrics.

1 Like

Wow thanks very much for adding all of these with nice icons and all! I need to try get the custom plots stuff live now!

Info on how to make these:


Neat, I bloody wish Zwift recorded everything the turbo outputs (and it didn’t have to go via strava)

1 Like

Thanks Povedano! I saw what you did earlier but I didn’t comment. I tried to find it on custom field but couldn’t find everything. I “created” my “AVG Temperature” field and step length, but I couldn’t get Run Cadence from Garmin. Did you create a custom field that includes all all this fields?

Here are my print screen:


Recovery Time is 140.9 :slight_smile:
Now I have icon envy and I’ll have to change mine.

1 Like

Looks like your FIT file is very different from mine. :slight_smile:

Looks like there needs to be a set of garmin fields for every watch!! And some will take some sleuthing to figure out where they are. The runalyze people figured out where some of them are for watches that don’t record them in the session message. I wonder how they did that??

For instance, it’s possible that my watch records training load but since I don’t know what that number would be I can’t find it. The only reason I was able to find the training effect and recovery time numbers was that runalyze told me what they were.

I might see if I can find some more info in one of my husband’s FIT files from his fancy forerunner.

1 Like

Hi, where about can we find these custom fields please? I’d like to look at Aerobic effect, Anaerobic effect Garmin fields for example

  • This is done at Activity level.
  • At the bottom of your activity, click on Custom.
  • Add a field and complete the details, or search for a field someone has already created.
  • Then Actions, reprocess file
  • Refresh page

Thank you Gerald I’ll do that now

1 Like

Wonder if these runnin dynamics couild be mined also from 3rd party hardware/software solutions i.e. garmin via stryd pod?

Where did you get the “AVG Temperature”?

I also have included the Step length / Stride like you, however I have it hidden because is something that already exists on the activity header fields (Stride). But it could be useful to show it where you have it, near the Run Cadence… I think I’m going to get it back :sweat_smile:

I found it with the name “avg_temperature”. There’s something interesting: My fit file didn’t show the fields 202 (HR Recovery) and 140.7 (VO2Max), but I used your templates and it seems it worked. Maybe they are so hide that I couldn’t find them :rofl:. I’m using garmin 945. Maybe it can happen to you too. You don’t have avg_temperature in your fit file but when you import this “name” it can works.

I just saw that you updated the main post and shared all the fields! Thanks again.

1 Like

Question: The Training Load returned by this field is Garmin’s Training Load or is it TSS?
There’s a difference between the Garmin Training Load number and the more widely used TSS. Garmin has its own calculation mode.
On Garmin Connect, you can see both.

The one I have posted is Gamin Training Load, that is Exercise Load based on estimated EPOC.

Could you point me where to find TSS on Garmin Connect?

It’s in the Statistics under the Power section:

1 Like

Interesting. I think TSS is only for rides, not for runs.

1 Like

Hi everybody, when we are adding these fields, I need to reprocess the file to get the numbers. How can I do to update all previously recorded activities without to do it manually (would be a huge amount of work)?