What is GoldenCheetah?
GoldenCheetah is a desktop application, not a website. You download an installer for Windows, macOS or Linux, and your activities live in an athlete folder on your own disk. There is no account to create, no subscription, no server that has to stay funded for your history to survive. Sean Rhea wrote the first graphical version in September 2006 to get data off a PowerTap without a PC; Mark Liversedge took over the project in 2010 and it has been maintained by a global group of contributors ever since, under the GPL v2 with the full source on GitHub.
What you get for that download is the analysis layer most Strava-connected web apps are simplified versions of: critical power and W' modelling, W'bal you can compute with either the Skiba integral or the Clarke differential formula, Performance Management and Banister charts built on any metric you choose rather than a fixed TSS, over 300 tracked metrics, and Aerolab — an implementation of Robert Chung's virtual elevation method for deriving CdA and rolling resistance from a power file. If none of the built-in charts asks your question, you can write an R or Python chart against your own data through a documented API.
Strava is one of about a dozen cloud services you can attach, and it works in both directions. You add it through Share > Add Cloud Account..., pick Activities, pick Strava, and authorise over OAuth2 in a Strava-hosted window. After that, Share > Synchronize Activities opens a dialog that downloads Strava activities into GoldenCheetah and uploads local ones back, with options for how to handle each side; Share > Upload Activity pushes the single ride you have open. Both can run automatically at startup and on file import if you tick those boxes when adding the account. Downloading from Strava arrived in v3.5 (January 2020); uploading to Strava is far older, going back to the standalone Strava dialog in 2013, and v3.6 extended it to manually entered activities.
The honest caveat: this is a dense, unapologetically technical program with a real learning curve, and its interface will not remind you of a 2026 web app.
Key Features
Critical power and W'bal
A CP and W' estimator under Tools, a Critical Power chart, and W'bal tracked second by second so you can see the reserve draining above CP and refilling below it. You pick the formula — integral (Skiba) or differential (Clarke) — in preferences, and tune tau per athlete. Fatigue zones then break an activity down by how long you spent above 75% of W', between 50 and 75%, 25 to 50%, and under 25%.
Performance Management on any metric
There is no separate Performance Manager view any more; PMC lives as a Trends chart, which turned out to be the more useful arrangement. Long-term stress, short-term stress, stress balance and ramp rate can be computed from any metric you like, not just BikeStress — TriScore, a heart-rate-based load, or a custom metric you defined yourself. Banister impulse-response modelling sits alongside it, and because you can hold future-dated planned activities, both charts extend past today.
Aerolab
Chung's virtual elevation method, applied to a power file from a suitable test protocol, to estimate CdA and Crr without a wind tunnel. It is not in the default layout — you add it to the Activities view from the + menu — and Dr Chung's own paper on the theory and test protocols ships with the source.
R and Python charts over your own data
The R chart landed in v3.4 and needs a separately installed R whose version matches your build. Python charts arrived in v3.5, and since v3.6 the binaries bundle their own Python (3.7, upgraded to 3.11 in the v3.8 builds) with the common modules pre-installed, so you can run community Python charts without setting up a runtime. Both expose the same kind of API: activity series, W'bal, mean maximals, season metrics, PMC data, intervals, athlete zones.
Two-way Strava sync — with a real limitation
Sync pulls activities from Strava as well as pushing to it, maps a GoldenCheetah metadata field to the Strava activity name, syncs the trainer and commute flags, and sets your Equipment from Strava Gear on downloads. But it goes through Strava's stream API, which does not carry left/right power balance, running power or length-by-length swim data. For those, import the original FIT file instead. v3.7 also added downloading Strava routes as workouts.
It works with nothing connected
Cloud accounts are optional. GoldenCheetah imports FIT, TCX, GPX, PWX, WKO, SRM, HRM, CSV and a long tail of other formats, auto-imports from a watched folder, and downloads directly over USB or serial from SRM PowerControl, PowerTap, Joule, O_Synce and Moxy hardware. Anonymised data sharing for research is opt-in and off unless you say yes.
Indoor training built in
Train mode drives ANT+ power meters and FE-C smart trainers, Computrainer, Monark ergometers and the Tacx Fortius, with virtual power for dumb trainers, pre-programmed erg and course workouts, real-time W'bal, and video or Street View playback.
Who It's For
- Riders who have outgrown a web dashboard and want the model itself — CP, W', tau, the formula choice — rather than someone's tuned-up presentation of it
- Time triallists and triathletes chasing CdA who have the test data and want Chung's method without paying for a service
- Anyone who can write a bit of R or Python and would rather build the chart than request it
- People who want their training history to outlive a startup — local files, open source, no account, no renewal
