GoPro Data Driven Onboards with Overlays

Most things we do comes from some sort of a “need”. It’s either to fill the existing gap which was missing or to create something new for a newly established purposes. What I am referring here to? You heard countless stories when business appeared on the map for the reasons of spotted opportunity in an existing niche, or because there was no alternatives at all.

It’s since GoPro introduced GPS data sync with the video footage I had been dreaming of creating videos with speed on-screen, and other telemetry tweaks to enhance video footage quality based on happened metrics. Actually, looking even further back in time, the initial background was laid watching Formula 1 races - onboards from cockpits with speed, G forces and breaking power visuals were things which always fascinated me a lot.

What’s the problem, you ask? Why I never created such videos on my own in the past, straight from the GoPro? Lack of flexibility to manipulate the outcome was the main reason I shall say. Everyone is doing the same thing - capturing the footage, taking the same pre-baked telemetry designs and just using it out of the box. Zero originality. For a generalist as myself that was not enough to even begin with. Pressured by doubts how to approach the problem and pushing forward by my drive for data visualization, I began creating my MTB races onboard videos driven with data… Straight from the Garmin wearables.

Started with Fenix 5x and Garmin Edge 830 - any could have worked as long as it had more than just .gpx track of the course. Heart rate, moving speed, landscape elevation and watts generated into the cranks was just what I needed to begin this journey. Ohh, and GoPro camera on chesty mount, to make it look like an actual 1st person onboard! As I am Adobe After Effects specialist, no surprise solution was created mostly around Adobe’s software.

The first tries making custom data visualizations for onboards.

OK, now I must admit it - the first designs were a bit of a nightmare, from both: aesthetic point of view and the time it took to create. While the goal was to make “working” automated solution, it turned out to be that automation can’t go on one leg itself without thoughtful design. It always looked like design could be updated in the future, as soon as I finally figure out everything, but one task or a fix was chasing the other and that was a never ending manual hassle. Can you guess what was the main visual inspiration initially? Hint - riding indoors :)

How automated this solution turned out to be to-date? To the degree where everything is perfectly timed and created without any manual labor involved. As soon as the footage is imported into the local storage and activity from Garmin navigation device is downloaded - its all build up automatically. To be honest - I still check every project before rendering happens, because you never know what the new data sets could have brought to you. Trial and error all the way. The journey of moving from something you have no idea how to create, to the moment where it takes ages to do, in the end landing to the solution executed in moments blows my mind what could be done by the help of automation in the proper hands. Will it eliminate manual labor completely? Never. It just moves the boundaries where you could focus on more interesting aspects of creativity and not tweaking data entries by hand.

The main onboards look.

What I have figured out about GoPro and Garmin .TCX data files in the process, the HARD way:

  1. GoPro footage timestamps in metadata are incorrect if not synced with a phone after camera turned on.
  2. GoPro quick capture camera on/off feature makes the timestamps to be incorrect, again. Offset slightly every single time you turn the camera off - makes it a terrible job to sync the data afterwards. The only option - not to turn off the camera.
  3. You can’t rely 100% on Garmin .TCX files and the data exported - every field must be checked to avoid timing mismatches, missing data or corrupt outcomes. Think like here and there some entries were not captured by device - a blank gap which spoils off the data.

Last but not least, there is a saying that “hunger raises at the time you start eating”. The same applies when you are developing something - as soon as you begin and keep on going for a period of time, new ideas pops out. That’s why it turned into further enhancements with Strava API and Segments, as well as Google Maps Earth Zooms fully integrated into onboards. You can find more about them here:

Strava Segments:

Google Maps Earth Zoom:

All onboard videos I captured and recorded are available on my personal channel Tomas B. aka Tom10.

I also do MTB races highlights videos with english commentary most often. Thus if you are into sports, #mtbxcm, #mtbxc or #mtbxco racing - feel free to subscribe to the channel to get to know how racing happens in Lithuania, Latvia and not only there! (To date, Austria, Norway, Estonia)

That is how my strive to create something what was already there, but lagged quality I was looking for turned out to be - a never ending development path with ups and downs. No one said its going to be an easy one - but its worth it!

have questions?

Do you want to know more?

Drop your message and I'll get back to you as soon as possible.

Fill the form or get in touch at

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
No tags added.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.