Open-source project
jonasoreland/runnerup avatar
jonasoreland/runnerup

RunnerUp: an open source Android run tracker with wearable heart rate support

A open source run tracker

963 stars317 forksJavaGPL-3.0

At a glance

What is it?
RunnerUp is a Java Android application that tracks runs with the phone GPS, pairs with BLE and ANT+ heart rate monitors, and ships in three different builds with different feature sets. The F-Droid build is the one to watch, because licensing takes features out of it.
Who is it for?
RunnerUp fits runners who want a trackable activity log without a proprietary account and who already own a BLE or ANT+ chest strap, and it does not fit people who need the full feature set from an app store install. Verify first which build you can install, because the F-Droid build omits features for licensing reasons and the Froyo variant drops graphs, maps and elevation GeoId correction.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 6 days ago.
What is it written in?
Mainly Java, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 7, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • jonasoreland/runnerup963 ★ · +3
Star history
Repository2026-10-212026-11-07
jonasoreland/runnerup960963

3 Stars in the last 17 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

A phone GPS run log that does not require a vendor account

RunnerUp is an open source run tracker for Android that records sport activities using the GPS in the phone. The README positions it as a complete application: detailed statistics around pace, distance and time, configurable audio cues that report stats and progress during a run, free runs with a target pace or a target heart rate zone, and interval workouts modeled after Garmin.

That last point explains a lot of the design. The application is aimed at runners who want interval training and live feedback without being locked into a watch ecosystem, and the audio cues are the mechanism that makes a phone usable as a coaching device while running.

The rest of the feature set covers the sensor and social side. Heart rate monitoring works over Bluetooth SMART (BLE) and ANT+, including PolarWearLink and Zephyr hardware, and heart rate zones can be configured and used. The phone's own step sensor and barometer are used as well, and there is a WearOS app. Activities can be uploaded automatically to external applications such as Strava and Runalyze, some of which also support download and feed updates, and favorite workouts can be shared with friends over email.

The target user is a runner with an Android phone, and for many of them the deciding factor is that the data stays in an application they can build and inspect themselves.

Three release channels that are not the same application

The project distributes in three places, and the differences between them matter more than the version numbers do.

The Play Store build is the full application and is where the beta group lives for early access. GitHub carries all releases including alpha releases, which is the channel to watch if you want a build that has not gone through store review. F-Droid carries a separate variant, and the README states plainly that this version does not contain some features due to licensing, pointing at the F-Droid description for the specifics.

That third point is the one to read twice before installing. A F-Droid install is a differently featured build of the same project, not a slower release of the same one, and the missing pieces are removed for licensing reasons rather than for technical ones. The repository also keeps a CREDITS.md page listing components that are licensed differently from the project itself, which is where the boundary between the standard build and the reduced one is documented.

The code itself is under GNU GPL v3 unless otherwise stated, with the LICENSE file holding the full text. That is a copyleft licence, so if you intend to modify and redistribute the application, read the licence text rather than relying on a summary.

Android 2.x support and the Froyo feature cut

The current 2.x release supports Android 4.0 and later. The Play release also supports Android 2.2 and 2.3, but the README is direct about the limits of that: due to a lack of test devices, RunnerUp cannot support Android 2.x.

So the old Android build exists, but nobody is verifying it against real hardware. For a project whose entire purpose depends on GPS accuracy, heart rate pairing and audio cues during movement, an untested platform is a genuine risk rather than a footnote, and that is presumably why the Play variant is the one described as carrying the legacy support.

The same legacy track has a feature cut. The Froyo version does not include graphs, maps, and elevation GeoId correction. Elevation GeoId correction in particular changes the numbers a runner sees, since it adjusts recorded altitude for the geoid rather than raw barometric pressure, so a Froyo user and a modern user can read different elevation values for the same run.

Taken together, the version matrix is the honest summary of the project's support policy: Android 4.0 and up on the current line, a best effort 2.2 and 2.3 build on the Play Store side, and a reduced feature set on the oldest devices.

Heart rate over BLE and ANT+, with PolarWearLink and Zephyr

The heart rate story is what separates RunnerUp from a plain GPS track logger, and it is worth reading closely because the hardware support is specific rather than generic.

Bluetooth SMART (BLE) and ANT+ are both supported. So are PolarWearLink and Zephyr, which the README lists separately from the BLE and ANT+ entries. In practice this means the application can talk to BLE and ANT+ straps as well as to Polar and Zephyr units.

Heart rate zones are configurable and can be used during a run, and the free run mode supports a target heart rate zone, so a run can be driven by a heart rate target rather than only by pace. Interval workouts modeled after Garmin sit alongside that, and audio cues provide the in-run feedback.

The barometer and the step sensor are used as well, both being phone internal sensors. Neither replaces the heart rate belt, but they add data that does not depend on extra hardware, which is why they are listed alongside the external sensor support rather than in a separate section.

The build environment pins Ubuntu 16.04, Oracle Java 8 and Gradle 4.4

There is no install script in the README because RunnerUp is an Android application, and the way to install it is to get a build from one of the three channels described above. For anyone building from source, the repository ships a Dockerfile that pins the whole toolchain, and it is worth reading before you start, because the pins are old.

The base image is Ubuntu 16.04:

dockerfile
FROM ubuntu:16.04

The Android SDK is fetched as a fixed archive and moved into /usr/local/android-sdk, then the SDK packages are installed with the android update sdk call:

bash
RUN wget https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz &&\
    tar xf android-sdk_r24.4.1-linux.tgz &&\
    mv android-sdk-linux /usr/local/android-sdk &&\
    rm android-sdk_r24.4.1-linux.tgz

Gradle is pinned the same way, version 4.4 from services.gradle.org, with the bin and lib directories moved into /usr/bin and /usr/lib:

bash
RUN wget https://services.gradle.org/distributions/gradle-4.4-bin.zip &&\
    unzip gradle-4.4-bin.zip &&\
    mv gradle-4.4/bin/* /usr/bin/ &&\
    mv gradle-4.4/lib/* /usr/lib/ &&\
    rm -rf gradle-4.4*

Java comes from the Oracle Java 8 installer with its licence accepted through debconf selections, and the SDK packages requested are platform-tools, android-27, build-tools-27.0.3, tools, and the extra m2, google m2 and google play services repositories. The Gradle wrapper and settings.gradle sit at the repository root next to app/, wear/, common/ and hrdevice/.

Practical consequence: this Dockerfile describes a 2016 era Android toolchain, so a modern build environment will not simply substitute newer pieces without expecting build breakage.

Where the project stops documenting and starts pointing at the wiki

The README is deliberately short and hands the rest to the wiki, in particular the Manual under the wiki Overview page. That is a reasonable structure for an application with this much surface area, but it means the repository itself is not where you will find answers about specific activities, provider synchronisation details, or zone configuration.

The synchronisation behaviour with Strava and Runalyze is the case worth noting. The README says some providers also support download and feed updates, and points to a wiki page on synchronisation with external providers for details, but it does not enumerate which providers do what. An adopter should treat the provider list as unverified until they read that wiki page.

Translations are managed on Transifex, so a fork that wants a different language pulls strings from that project rather than editing resources in place.

On maintenance, the last push was on 2026-10-18, and the release v2.12.0.0 was published the same day, which tells you the release trains close to the commits rather than lagging behind them. The earlier tags show a slower rhythm: v2.11.0.1_free from 2026-02-21 and v2.9.0.1 from 2025-06-01. The version string carries a _free suffix on one build, which lines up with the free and reduced variants described for the different channels.

Editorial conclusion

RunnerUp fits runners who want a trackable activity log without a proprietary account and who already own a BLE or ANT+ chest strap, and it does not fit people who need the full feature set from an app store install. Verify first which build you can install, because the F-Droid build omits features for licensing reasons and the Froyo variant drops graphs, maps and elevation GeoId correction. If you want to build from source, note that the Dockerfile pins Ubuntu 16.04, Oracle Java 8, Android SDK r24.4.1 and Gradle 4.4.

Frequently asked questions

Where can I download RunnerUp for Android?

The README lists three sources: the Play Store, the GitHub releases page which carries all releases including alpha releases, and F-Droid. Early access is available through the beta group on the Play Store.

Does the F-Droid version of RunnerUp have all the features?

No. The README states that the F-Droid version does not contain some features due to licensing, and points to the F-Droid description for the specifics. Components with a different licence than the project are listed on the CREDITS page.

Which Android versions does RunnerUp support?

The current 2.x release supports Android 4.0 and later. The Play release also supports Android 2.2 and 2.3, although the README notes that due to a lack of test devices RunnerUp cannot support Android 2.x, and the Froyo version does not include graphs, maps and elevation GeoId correction.

Which heart rate monitors can RunnerUp pair with?

The README lists Bluetooth SMART (BLE) and ANT+ support, along with PolarWearLink and Zephyr hardware. Heart rate zones can be configured and used, and free runs can be driven by a target heart rate zone.

Official sources

  1. Issues
  2. jonasoreland/runnerup on GitHub
  3. License: GPL-3.0
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/jonasoreland-runnerup.svg)](https://hysenlabs.com/projects/jonasoreland-runnerup)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/jonasoreland-runnerup.svg)](https://hysenlabs.com/projects/jonasoreland-runnerup)

Was this useful?