Asking ClaudeCode to decode Suunto Guide files
-
Being a bit frustrated with not being able to upload FIT files without partner access to the API I downloaded a “.gui” file from the watch, originally uploaded by intervals.icu.
Here is Claudes take on the file, enjoy

Next step will be to see if I can extract this information to my own app on the watch.
Claude:
Interesting — this is a Suunto workout guide called “Aerobic Threshold 50” from Intervals.icu. Let me read the step files.The picture is now clear. This is a Suunto workout guide exported from Intervals.icu — a 50-minute aerobic threshold run at 135–145 bpm. A few interesting things:
HR is stored in Hz, not bpm —
step1.jsshows:value: 2.333...Hz = 140 bpmlow: 2.25Hz = 135 bpmhigh: 2.4166...Hz = 145 bpm
That’s exactly why
main.jshas60 * input.HeartRate— converting from Hz to bpm before doing anything with it.step2.js is in Swedish — “SuuntoPlus
-guiden avslutades” = “The SuuntoPlus
guide ended”. Makes sense for your locale.The file structure:
File Purpose manifest.jsnWorkout metadata, sensor subscriptions main.jsRuntime engine (what we were formatting) step0.jsIntro screen (50:00, 135–145bpm) step1.jsMain interval — 50 min HR target step step2.jsEnd screen icon.pxbWatch face icon (300×300, proprietary format) So the
main.jsyou were cleaning up is Suunto’s guide runtime — it dynamically loads eachstep{n}.jsviaevalFile()as the workout progresses. -
You can use Quantified Self for uploading Fit files
-
@Dimitrios-Kanellopoulos
Thank you for the tip. I signed up for a Pro subscription and will try that out. Currently uploading years of training history.
-
@matram Feel free to ping me if you need help. or you want another service connected for autosync, but try the official channels of the app. I made this for me convenience as well and managed to upload history from Strava Garmin and all the stuff I had in the past
-
@Dimitrios-Kanellopoulos
Dimitrios, maybe we are mis-communicating? To clarify, I want to upload a FIT workout file (not activity) and secondly I do not have API access.I am not sure what you mean by “official channel of the app”. Are you referring to apizone - how-to-workout-upload (not allowed to include a link)? This seems to be what I need, but I am not allowed to use that.

quantified-self which you suggested, only seems to upload activities not workouts.

intervals.icu uploads workouts but only packaged as a Guide in the format they have selected. Hence my idea about reverse engineering the guide file.
I have developed an App for interval training, intended for my personal use. But without any mechanism to change settings, it would require me to create different versions of the app for different sessions. I might do that for now but it does not seem like a good long-term approach.
As a suggestion…
I have an Apple Developer license which I am paying a nominal fee for. That gives me access to all Apple tools and infrastructure. I can download my apps directly to my phone and keep them there for a year, and I do not have to put my apps on the AppStore.
I would very much like Suunto to do something similar and I would be willing to pay for a service like that.
-
@matram ok right. I was confused. Workouts != activities. I can try to implement a workout upload but I see that ideally you need api access to suunto. for that I suppose you should mail them unfortunately.