A fitness metric that rewards what matters: consistency, aerobic volume, strength training, and movement variety. No games. No hacks. Just progress.
This week's training quality. How well you trained in the last 7 days—aerobic work, strength days, consistency, and variety. This is what you're contributing to your FitScore.
Your current personal fitness level. This is where you stand right now—built up over time through consistent training, with gradual decay when you stop.
High ActivityScore turns to high FitScore.
Your weekly training quality is built from four scientifically validated* components:
Based on weekly duration in hours. Diminishing returns—bigger gains from 0→5 hours than from 10→15. Caps around 15-20 hours/week. Zone 1 activities (walking) count at a reduced rate—a 3-hour walk isn't the same as a 3-hour Zone 2 ride.
Based on days per week with strength activity. Any duration counts—3 minutes of kettlebell swings counts. Multiple workouts on the same day count as 1 day. 2 days gets you 75%, 3 days 90%, and 4+ days maxes out at 100%.
How many days per week you train. Rewards showing up without punishing those who train daily.
Days 6 and 7 score the same as 5. No penalty for daily training if that works for you, but most people benefit from 1 or 2 rest days per week depending on how they train.
Count distinct sports done at least once per week. Running and cycling are separate. Swimming and lifting are separate. More variety means different muscles, joints, and movement patterns.
Long rides on Saturday and Sunday
Mix of cycling, strength, and movement
Short daily sessions, high consistency
TrainingPeaks and Andrew Coggan's Performance Management Chart—TSS, CTL, ATL—changed the industry. These concepts gave athletes and coaches a shared language for quantifying training load and managing fatigue. That was revolutionary.
But the PMC is trying to solve many problems at once: What is my fitness level? How much work should I be doing? Do I need recovery? It does most of those things reasonably well.
Except the worst one is fitness level.
The CTL model drives everyone toward the same approach: moderate-hard intensity with as many hours as possible. The number goes up, so it must be working. But this is rarely the best training approach for anyone.
Research over the past decade tells a different story. Zone 2 training. Polarized periodization. The 80/20 rule. Study after study shows that what CTL rewards is rarely optimal. What actually builds durable fitness is often smarter training, not more training.
Most of us intuitively know this: 10 hours of the right training beats 20 hours of sweetspot—even though CTL would tell you the 20 hours represents higher "fitness."
CTL doesn't promote balanced training. Full body strength is an important aspect of fitness and should be rewarded independently to recognize its importance. Look at an elite triathlete versus an elite cyclist. Most people would point to the triathlete as the picture of fitness—balanced, functional, durable. That's what fitness athletes aspire to. Not a single-sport specialist optimized for one output.
A new standard for a new understanding of fitness.
FitScore uses the same exponential decay model as CTL. The ~42-day time constant for fitness adaptation is well-established in exercise science. We're not reinventing this wheel—we're changing what goes into it.
Banister Model Research →More isn't always better. The relationship between training volume and fitness follows a logarithmic curve—going from 5 to 10 hours produces massive gains, but 15 to 20 hours adds little. Even pros cap out around 25 hours because beyond that, adaptation stalls or reverses. CTL ignores this ceiling. FitScore doesn't.
Overtraining Syndrome Research →Duration matters more than intensity. Polarized training research shows that 80% easy volume with 20% hard efforts outperforms intensity-focused approaches. More hours at lower intensity builds better aerobic engines than fewer hours at higher intensity—the opposite of what TSS rewards.
Frontiers in Physiology, 2014 →Intensity-based metrics don't predict performance. A 2025 study found that traditional fitness-fatigue models (CTL/TSS) have limited predictive validity for race performance. Training stress scores reward intensity over the volume that actually builds fitness.
Nature Scientific Reports, 2025 →Combined training beats cardio alone. Adding strength training twice weekly to aerobic exercise dropped mortality risk by 30%. This is why FitScore weights strength as 30% of your base score—it's independently important.
JAMA Internal Medicine, 2022 →Cross-training builds durability. Training multiple sports engages different muscle groups, reduces overuse injuries, and maintains fitness while allowing recovery. This is why FitScore rewards sport variety with up to a 7% bonus.
Sports Medicine, 2021 →ActivityScore = Aerobic + Strength + Consistency + Variety
FitScore = 42-day rolling weighted average of ActivityScore
import math def activity_score(aerobic_hours, strength_days, active_days, unique_sports): # Base scores (diminishing returns curves) aerobic = 100 * (1 - math.exp(-0.25 * aerobic_hours)) strength = [0, 50, 75, 90, 100, 100, 100, 100][min(strength_days, 7)] # Weighted base (70% aerobic, 30% strength) base = (aerobic * 0.70) + (strength * 0.30) # Bonuses based on days active and sport variety consistency = [0, 0, 0.02, 0.04, 0.06, 0.08][min(active_days, 5)] variety = [0, 0, 0.03, 0.05, 0.07][min(unique_sports, 4)] return min(100, base * (1 + consistency + variety)) def fit_score(prev_fitscore, activity_score, days_elapsed): # 42-day exponential moving average (same math as CTL) decay = (1 - 1/42) ** days_elapsed return activity_score + (prev_fitscore - activity_score) * decay