Creating and Merging Swim HR Data Into a regular Sports activity.

Get ready
Source: Mike Lewis

Back in April this year (2014) I wrote about how it was possible to get HR underwater using ANT+ and a MIO Link optical HR Wrist strap. Things have moved on a bit since then with more optical HR options and new sports watches from Garmin (920XT), Suunto (Ambit3) and Polar (V800).

As I write this towards the end of October 2014 there is still no easy way to properly and ubiquitously and freely get analysable underwater HR data. But there are several workarounds and near-solutions.

I’m writing this as I personally want to get reasonably accurate HR data for my swim sessions. And then to share it with anyone else who might also benefit.

Just to be clear for some: For a Garmin It **is** possible to get HR Data Underwater AND merge it with a Garmin Pool swim activity AND look at HR by length.

NOTE: This document is not yet complete and fully checked. It’s probably in a final draft version now. I need to clarify some of the details as it all get a bit complex at times! and add some bits that I know are currently missing need adding. However it’s good as a general guide for you now.

We need to first look at sensing and transmitting the HR Data.

1. Legacy Polar

Even the ancient Polar watches were able to record HR underwater. They used a signal that went MUCH further through water than ANT+ or Bluetooth (ie Bluetooth 4.0 aka Bluetooth Low Energy BTLE).

I’m not sure exactly why Polar moved away from this, probably: to use more standard protocols; to use protocols that can uniquely pair devices; and to use more energy efficient methods.

The problem with Polar (October 2014) is that they do not have proper pool metrics that go around the underwater HR that they CAN already record. These metrics have been released throughout 2015 and now work fine suing Polar’s proprietary non-ANT, non-Bluetooth signal underwater.

2. Chest Straps vs Optical HR Wrist Monitors

Chest straps are probably the best and most accurate way of sensing electrical impulses and then broadcasting the beats to whatever is listening. However, if the strap broadcasts using either Bluetooth or ANT+, then the signal will only travel a very few centimeters ie NEVER to the watch on your wrist.

But !! now we have devices like the MIO Link which record data optically and then transmit via ANT+, Bluetooth or both/either. If that wrist monitor is sufficiently close to your watch (on the same wrist) then your sports watch IS able to receive a HR signal.

MIO make their own technology which they sell to other companies, like TomTom, and there are also other companies like Epson who also make their own wrist technologies – so the accuracy and efficacy WILL vary from manufacturer-to-manufacturer.

TomTom Cardio
TomTom Cardio

Newer optical HR sensors on the wrist are great. Especially devices like the TomTom MultiSport Cardio where everything is on your wrist in one unit. They might want to enable HR recording from swimming…

However. Optical sensors shine a light onto your skin and measure it bouncing back. If water gets between your skin and wrist strap then the readings can be way out. Having said that, I’ve also had fairly good success with this method.

The Scosche RHYTHM+ is a similar product but is reported to be better suited as upper forearm-worn…this is too far away from the wrist for a Bluetooth or ANT signal to travel.

So. Wrist-based Optical HR is a reasonable way forwards but maybe not perfect.

In comes Suunto and Wahoo.

mzl.dsooyjwd[1]The Suunto Smart Strap (Bluetooth for the non-ANT+-supporting Ambit3, using Movescount)  and the Wahoo TICKR-X (for generic ANT+ and Bluetooth devices, using WAHOO FITNESS) both use a conventional chest strap BUT their HR pods have a memory that is able to store HR data. In the case of the TICKR-X a whopping 14 hours…more than enough for any of my water-based sessions.

At the end of your session, or during pauses in your session (Suunto) the strap synchronises with a smartphone app (2015, currently Ambit3 only). This could be at the end of your lane, the car park at the edge of a lake or at home. Sorted.

Surely then this ‘caching’ really is the way forwards?

Source: Unknown
Source: Unknown

Well, maybe. The catches are that, firstly, a HR strap doesn’t look great when you are in a pool. OK you might have it under a swimsuit or wetsuit. But many guys will not want to wear one in the pool. There are further problems as, secondly, even a half-strong push off from the end of your lane can dislodge even the tightest of chest straps and thirdly I also found problems with the TICKR-X having drop outs or too-low readings. Still women are OK in one-piece suits and everyone is fine in the sea or in a lake with their wetsuit on.


Fourthly you still have to get the darned data back to your sports data analysis tool of choice – be it Garmin Connect, Training Peaks or SportTracks AND be able to analyse it against your other swim metrics.

Edit: Of course Garmin now do this with the HRM-SWIM and HRM-TRI caching chest straps.

3. Getting the data where you want it.

This section talks about getting the data into the right app. The next section talks about combining it into 1 session.

Well I want it in SportTracks. You might well want it in Training Peaks. Newbie triathlete Jo Doe may well be happy to keep it in the Wahoo fitness app. Many Garmin devotees will go for the ever-improving Garmin Connect. The issue is that there are tens of thousands of us who want our data in different places compounded by manufacturers who want to ring-fence and monopolise their particular product set.

Well if you are a Suunto user then you are already sorted. You have the data in the Movescount environment. You’ve nothing more to do.


Similarly with the Polar V800, it records HR underwater. However the analytics are not yet there (edit: they are now)…

Let’s say you want the data in TrainingPeaks. Well if you have the pro edition then you could quite readily use to synchronise with dropbox, SportTracks and Garmin Connect – similarly

Oh hang on a minute!! none of those include WAHOO Fitness or Movescount (which is where your HR data would come from…doh!).

So there would need to be an extra step to put the data onto a platform that fitnesssyncer/tapiriik can sync with.  If you put the data in Strava (must contain some GPS data to work!) then you should be good to go. You can connect Strava to Movescount and then fitnesssyncer/Tapiriik will sync Strava with all the above. (I’ve not tested that)

And therefore if you are a Garmin Connect or SportTracks user then this method is also fine. ie using strava as a staging post. (eesh)

If you are a Garmin WATCH user then the situation is a bit more complex than I’ve alluded to so far.

For starters, in openwater swim mode, the 920XT records HR data from a wrist based Optical ANT+ strap. Sorted.

But if you have a 910XT or indeed any other Garmin model you are NOT sorted.

Neither are you sorted in pool mode on the 920XT, although it is possible this might be enabled in future firmware releases.

Garmin Forerunner 920XT - Same look and feel?
Garmin Forerunner 920XT

With the 910XT, or any other Garmin, you can only record HR data underwater if you set it to, say, run mode where it will record HR but then you will not get any of the swim metrics supported by your watch. Dilema.

So the solution here for the Garmin watches seems to be to use one of the chest straps that store data and upload the information in a second/parallel exercise file. And here is where the Suunto (2015) or WAHOO straps come in.

These are the ‘workflows’ of data from the chest straps:

  • Suunto strap-to-SuuntoMovesount-to-Strava-to-Tapiriik-to-GarminConnect OR SportTracks OR TrainingPeaks) Note: This does not seem to currently work for ipad/iPhone apps nor for Android (Spring 2015) and for the Strava bit to work you need a GPS track.
  • Wahoo TICKRX strap-to-WAHOO FITNESS-to-Garmin Connect-to-Tapiriik/SportTracks-to-TrainingPeaks (iOS only)
  • to Android now…nah ! Do it manually from Wahoo’s app by email 🙁 (that’s what I do)

However you are still left with two separate activities: a heart rate only track and a swim track without HR.

I believe you cannot merge them in any of: SportTracks MOBI, TrainingPeaks or Garmin Connect.

However there is a 3rd way. This is the only way I’ve found. Tell me please if there are other ways.

4. Combining The Data How You Want It

As I said previously, with the Suunto Ambit3 and Smart Belt and with the Garmin 920XT+optical wrist HR (eg the MIO Link) you are either OK now or probably will be soon in the case of the 920XT (if Garmin turns on HR during a pool session – edit : they have). Similarly with the Polar v800 you might be OK in November 2014 (edit: you are ).

My suggestion for the 910XT and 310XT (and currently for the 920XT in pool swim mode) is to use the WAHOO TICKR-X alongside using the watch – you would use the watch how you normally would in the pool (but obviously without the HR).

[You could equally use the Suunto BLUETOOTH strap+Movescount in 2015 but obviously you would not be able to use that same strap for bike/run with your ANT+ 910XT/310XT].

When you have finished your swim set; the WAHOO FITNESS app can trim the data to get rid of unwanted bits at the start and end of your session (this is important if you want the HR to match the lengths later and that functionality actually works well and simply). You can then export to, for example, a TCX file. If you manually import that TCX file into SportTracks (having first already imported your regular pool activity) then SportTracks will allow you to add/merge the HR track to that activity AND to synchronise the start times.

This definitely works (see the image below)

However. It’s a bit longwinded (understatement)

Furthermore, POST MERGE, you can automatically sync PC-based SportTracks (the only place where I found emerging to be possible) with SportTracks Mobi (requires a paid for account), then on to or tapiriik (requires an annual contribution for automation) and then to the paid-for version of Training Peaks and the free Garmin Connect.

You finally have that merged HR Swim data where you want it !

Eesh !

and, no, I haven’t tested every possible combinations of software and linking them !!

In the PC version of SportTracks with the POOL SWIM plugin (excellent, free trial period, a bank-breaking Eur12.00 thereafter) the developer, mechgt, has recently added HR by length. So you can see how it varies for the different components of your pool session.

This image clearly shows this (HR to the right) and this is the final solution that you want and need (well if you use sporttracks, it is, if you use another software package you will have to export the recently combined session from sporttracks!!):

Pool Plugin With HR Combined Files
Pool Plugin With HR Combined Files


Edit: Garmin’s caching HR straps introduced a new FIT format modification that many 3rd parties do not support. Only in Jan 2016 were sporttracks able to decipher it and support it. Products like the now-discontinued FIRSTBEAT ATHLETE do not support such Garmin FIT files from swimming.

6. Suunto & Legacy Suunto

Tobias Fahrig notes that the Ambit 2 supports ANT+ comms from a MIO link in POOL mode with ALL the necessary stats working. With the Ambit 3 Suunto moved to Bluetooth SMART and a caching-HR based solution which works fine.

In Summary

Think, why do you actually want HR data from swimming?

I use it to measure/validate the swim component of my overall training load. That’s all. So I only have to do it properly once every few months to make sure my estimate of TRIMPs per length/per 100m is up to date. I then apply that to my swim sessions..takes about 5 seconds. (Unlike the method above!).

If you want to look at HR data while you are physically swimming (you are mad, concentrate on your stroke).

If you want to look at average HR for your last set. That’s reasonable. You could just get out of the pool and check your HR or use one of the belts that cache your HR. A regular HR strap may well be fine to do this if you just ‘stand up

Would I go through that synchronisation malarkey 3 or 4 times a week. Err…no! But at least now you know how it can be done or ‘just’ go and buy a sub £200 Polar V800 or you can now buy a Garmin HRM-TRI for £100 and a Garmin 920XT for £250. Can’t quite work out which is best value for money 🙂

Reader-Powered Content

This content is not sponsored. It’s mostly me behind the labour of love which is this site and I appreciate everyone who follows, subscribes or Buys Me A Coffee ❤️ Alternatively please buy the reviewed product from my partners. Thank you! FTC: Affiliate Disclosure: Links pay commission. As an Amazon Associate, I earn from qualifying purchases.

11 thoughts on “Creating and Merging Swim HR Data Into a regular Sports activity.

  1. Maybe I’m mistaken, but the pool swim plugin for sporttracks is free but just for a period of time and so the solution you present here for combining the data here isn’t long term?

    1. Yes you are totally right. I had missed that. It is Eur12 or about GBP10. It’s still a longterm solution…just not a free one 🙁

  2. Will the mio link work with garmin fenix2? Also, you mention that garmin wathches doesnt have swim diagnostics or HRM in pool mode, but i understood that the fenix2 has swim diagnostics plus capacity for HR reading while swimming. Can you please confirm this?

    1. mio link should work with fenix2
      I don’t think you will get HR with the fenix in water in swim mode.
      you will only properly get hr with swimming from suunto and polar – with garmin there are workarounds mostly involving using non-Garmin stuff to cache the HR swim data

  3. With respect to the mio fuse. Do you know of a way to export activity data which has been stored on the Mio Go App please?
    If I am doing GYM work or spinning or swimming I do not “stream” live bluetooth LE to my android phone. When cycling I use Polar Beat which finds the Mio fuse OK via BLE and exports OK to Strava.

    1. it’s not yet possible. which is a pain I know. my understanding is that export functionality will come for MIO.
      The TICKR-X is the only strap that currently I know of that meets MY needs for caching data during the session. FUSE and SUUNTO and Epson may come up trumps in 2015. we’ll see.
      I appreciate you probably are looking for a wrist based solution 🙁
      could you not try to stream? Bluetooth should go over 5m…place that rucksack appropriately in the room?

  4. The Mio GO app now supports exporting heart rate data in a .csv file. Any idea how to merge that with a Garmin pool swim .FIT file (from my Fenix 3) of the same swim workout? If I want to follow the process you describe above, how can I convert the Mio .csv export into a format that SportTracks can import and merge with the Swim workout from my Fenix 3?

    1. sporttracks definatley lets you import one file over another and choose which metrics you want to import. sporttracks definitely has tools that let you re-export in tcx (maybe fit too)
      csv is NOT a format is such…not any more than .DOCX is a format for a document containing French or german text that I can’t read.
      BUT if sporttracks can read your particular version of CSV then all the above will work. it will be a complete faff and a hrm-tri is WAY easier
      let me know if it works pls. I ahev a similar ‘experiment’ i’m doing ain a few weeks with csv

  5. If I could obtain a sample of a .TCX file with only time and heart rate, I am confident I could convert it to .csv, edit in Excel to match the timestamp to my pool swim FIT file, replace the 1/sec heart rate data with my own, convert it back to .TCX, the manually upload it to sync in SportTracks. If I can demonstrate it works, I’ll ask if the function can be added to the ST pool swim plugin! By the time I get this figured out, Garmin might be allowing the Fenix to log HR during a pool swim.:-)

    1. tcx is basically a spreadsheet compatible format ie excel will open it.
      not so sure about fit format
      tcx only support per second time slots. fit is different
      omb might add it. but there is not much development going on with st3.1 desktop
      if you import your fit file with pool swim plugin you should then be able to simply overlay the hr onto it by importing the tcx. the pool swim plugin shoudlnt need changing I think,

Comments are closed.