Skip to content
Decoding OTF Data
Decoding OTF Data

icon picker
Ep 1: Exploring OTLive

Entry Date:


Explore and see what data’s being returned.


💡 OTF provides us a lot of detailed workout data that we can explore.
🟢 You can obtain your workout summary history starting on/around mid-2019 by logging on to , and click on Your Workout Summary.
🟡 You can count the number of classes you’ve taken with your heart rate monitor on by running the following in Javascript/Chrome debugger.
🔴 You can count the number of classes you’ve taken by inspecting JSON payload returned by the API (XHR) call made to via Chrome Debugger’s Network tab.


💡 = Insight 🟢 = Do-able by anyone 🟡 = Hack by running Javascript via Chrome Debugger 🔴 = Hack that requires some level of Web coding experience

What’s next?

Dig deeper into the class summary data.

Raw Notes

💡 Looks like OTF uses Amazon’s Cognito for authentication.
There is Your Workout Summary tab at the top.
💡 I can see my entire workout history - Basically a copy of everything I got from the email.
The page isn’t paginated. 😏
Open up Chrome Debugger.
Each entry in the workout history is structured like this:
Looks like part of the class name is code-generated.
💡 I can get class count by running...
🤔 Not sure if a class would show up here if I didn’t wear my HRM — I suspect that it wouldn’t
Head over to the Network tab and reload the page.
💡 Looks like the page made a call to to fetch all the workout data.
😈 Interesting... the payload... doesn’t appear to be compressed...? (Lack of GZip on the header)
💡 The call returns a JSON array, and it looks like we can get the full class count by looking at the # of data points returned here.
💡 Each entry contains a lot of details about the data collected - Even the minute-by-minute heart-rate.
Lots of data - Going to dig deeper into the JSON blob next time.

Feedback? Got ideas? Found a bug?

Let me know on this .
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
) instead.