Symmetry ranks help you understand your level from your performance in each exercise, follow your progress, and see how your global rank is built. This guide covers what every league means, the types of rank you can earn, and the math behind the system.
Every league represents a percentile band within your cohort: people of your gender compared on that exercise. Reaching Gold places you ahead of at least 40% of that group. Move the percentile and explore every rank:
The bands are drawn to true scale: Iron covers the bottom 10% of the community, and Symmetric is just the top 1%.
Eight leagues with three divisions each — from Iron III to Champion I — and, above them all, Symmetric. Each one is a fixed percentile band within your cohort.
The percentile bands are fixed; what gets recalculated every week is the score it takes to reach them. Within each league, division III is the entry point and division I is the doorstep of the next league.
Your progress is calculated across four levels: exercise, muscle, muscle group, and global. Each one builds on the previous level to create a complete view of your physique.
Every session of an exercise becomes a score that measures your relative strength.
Your recent sessions blend into a stable level, and that level becomes a league by comparing it against your cohort’s percentiles.
The exercises that train a muscle are weighted by volume and by how recent they are.
The average of the group’s active muscles: arms, legs, core, shoulders, chest, and back.
The weighted average of your muscle groups. Unlocks once 10 exercises have a rank.
Lifting 100 kg doesn’t mean the same at 60 kg of bodyweight as it does at 100. That’s why your score isn’t the weight you move — it’s your strength relative to your own body.
Strength doesn’t grow in direct proportion to bodyweight: heavier athletes move more absolute weight, but less per kilogram of body. The 0.66 exponent — allometric scaling, the same principle powerlifting uses to compare weight classes — corrects that curve so light and heavy bodies compete as equals. It’s fixed and universal: it doesn’t change per exercise and isn’t calibrated individually. Time-based exercises use 0.33.
Your one-rep max is estimated from the weight and reps of each set, using the most accurate formula for each rep range:
1RM = 100 × weight ÷ (101.3 − 2.67123 × reps)1RM = weight × (1 + 0.033 × reps)1RM = weight ÷ (1.0278 − 0.0278 × reps)Two people, two bodies. Move the controls and watch the score compare strength fairly.
The weight that enters the formula — the effective weight — depends on the exercise type:
effective weight = logged loadBench press, squat, rows… The weight you put on the bar is the weight that counts.
effective weight = (bodyweight + added load) × fractionEach movement lifts a different fraction of your body: a pull-up moves 100%, a push-up around 65%.
effective weight = max(bodyweight − assistance, 0)Assistance is subtracted. If the machine carries all your weight, that session doesn’t score.
score = seconds ÷ bodyweight^0.33Planks and isometric holds score by duration, with their own exponent.
Forcing push-ups through a 1RM estimate can’t tell 12 reps from 50. So high-volume bodyweight exercises — push-ups, sit-ups, leg raises, glute bridges — score directly by volume. Pull-ups, dips, and muscle-ups stay on the 1RM path, because they’re low-rep movements.
The score is only half the story: your league comes from comparing it against your cohort’s percentile cutoffs — your gender, that exercise. And your bodyweight is part of the calculation: if you update it, your sessions are recalculated with the new value.
Your exercise rank doesn’t jump on one heroic session or sink on one bad day. Each new session contributes one third of your level; your recent history contributes the other two thirds. It’s an exponentially weighted moving average (EWMA) — the mathematical equivalent of “prove it consistently.”
Pick a scenario and watch the level follow the real trend while ignoring single-day noise.
There is no hidden calibration period. For your first 4 sessions of an exercise, your rank comes from your best score and can only go up. From the fifth session on, the full system kicks in.
Every time you rank up, a 3-session shield activates during which you cannot rank down, even if you perform worse. It only blocks demotions: keep improving and you keep climbing, and every new promotion resets the shield.
Strength doesn’t vanish overnight, and neither does your rank. You get 60 days of grace with no penalty. After that, your recent level decays gradually — but the strength you already proved protects you with a floor that never drops below half of your best mark.
Example with a level of 100: two months of grace, a gentle decline, and a floor that settles at 50% of your best mark.
For the first 60 days without training an exercise, nothing happens. After that, the recent component decays exponentially with a 120-day time constant: gentle at first, never a cliff.
For the first 28 days the floor protects 85% of your historical best level. Between day 28 and 56 it slides linearly down to 50%, and there it stays: inactivity lowers your rank, but it never erases the strength you already proved.
An honest global rank can’t come from your favorite exercise alone. Symmetry aggregates exercise ranks into muscles, muscles into muscle groups, and groups into one global rank — rewarding the complete physique.
Each exercise influences the muscles it trains based on how much and how recently you train it: its contribution weight is the number of sets multiplied by a freshness factor that fades with a 90-day time constant. What you trained this week leads; what you trained months ago matters less and less.
Each group’s rank is the simple average of its active muscles. Six groups make up your physique: arms, legs, core, shoulders, chest, and back.
Your global rank is the weighted average of your active muscle groups. Legs and back weigh more — a symmetric physique isn’t built on bench press alone.
The global rank unlocks once you have at least 10 exercises with a rank.
At every aggregation level, the continuous index always rounds in favor of the rank you already earned, and your fractional progress toward the next level is preserved.
Everything above is a faithful simplification. What follows is not a simplification: these are the exact formulas and constants the system runs.
The strength score normalizes the estimated 1RM by bodyweight with a fixed allometric exponent k = 0.66 (k = 0.33 for time-based exercises). The 1RM is estimated piecewise based on the set’s reps.
Effective weight per type: weighted exercises use the logged load; bodyweight exercises use (bodyweight + added load) × the exercise’s biomechanical fraction (e.g. pull-up 1.0, push-up 0.65); assisted exercises use max(bodyweight − assistance, 0), and if the result is ≤ 0 the session scores 0 and doesn’t contribute to the rank; timed exercises use the duration in seconds as the magnitude.
High-volume path (push-ups, sit-ups, leg raises, glute bridges): instead of estimating a 1RM, the score is reps × effective weight ÷ bodyweight^0.66.
reps ≤ 5 (Lander): 1RM = 100 × w ÷ (101.3 − 2.67123 × reps) 6 ≤ reps ≤ 12 (Baechle): 1RM = w × (1 + 0.033 × reps) reps > 12 (Brzycki): 1RM = w ÷ (1.0278 − 0.0278 × reps) score = 1RM ÷ BW^0.66 · timed: score = seconds ÷ BW^0.33 high volume: score = reps × w_effective ÷ BW^0.66
Per exercise, an exponentially weighted moving average is maintained with k_sessions = 5, i.e. α = 2 ÷ (5 + 1) = ⅓. On the first session, EWMA = score. Although it’s often summarized as “the last 5 sessions,” mathematically there is no hard cutoff: the full history persists with exponentially decreasing weights.
Ramp-up: for sessions 1–4, the exercise rank comes from the best raw score in history (best_1rm_score) and can only go up. From session 5 on, the rank comes from the effective score with the full logic active.
Demotion shield: after every rank-up, 3 sessions activate during which the rank cannot go down. Every promotion resets the counter; promotions are never blocked.
Alongside the EWMA, the system tracks peak_score (historical maximum of the EWMA) and best_1rm_score (historical maximum raw score).
α = 2 ÷ (k_sessions + 1) = 2 ⁄ 6 = ⅓ EWMA_t = α × score_t + (1 − α) × EWMA_(t−1) EWMA_1 = score_1 peak_score = historical max of EWMA · best_1rm_score = max raw score
With d = days since the exercise’s last session: no penalty until day 60; afterwards, exponential decay with τ = 120 days.
The floor is computed on peak_score: 85% until day 28, a linear slide to 50% at day 56, and a constant 50% from then on.
The effective score that determines the rank is the maximum of the decayed EWMA and the floor.
decay(d) = 1 if d ≤ 60 decay(d) = e^(−(d − 60) ÷ 120) if d > 60 floor(d) = 0.85 × peak if d ≤ 28 floor(d) = linear from 0.85 to 0.50 × peak if 28 < d ≤ 56 floor(d) = 0.50 × peak if d > 56 effective_score = max(EWMA × decay(d), floor(d))
Muscle: weighted average of the rank indices of the exercises that train it, with weight = sets × e^(−days ÷ 90) (muscular τ = 90 days). Internally, index 0 is the best rank (Symmetric) and 24 the worst (Iron III).
Muscle group: simple average of the group’s active muscles. The six groups are arms, legs, core (abs, no neck), shoulders, chest, and back.
Global: weighted average of the active groups with weights legs 4, back 3, arms 2, shoulders 2, chest 2, core 2. Requires at least 10 exercises with a rank.
At all three levels, the continuous index converts to a discrete rank with floor (in favor of the earned rank) and the fractional remainder is preserved as progress toward the next level.
w_exercise = sets × e^(−days_since_last_session ÷ 90) muscle_index = Σ(exercise_index × w) ÷ Σ(w) group_index = simple average of active muscles global_index = Σ(group_index × group_weight) ÷ Σ(group_weight) rank = floor(continuous index) · progress = fractional part
An exercise’s cohort is built per gender — men and women are processed independently — from each user’s best-ever mark on that exercise: one entry per person, all-time, no time window. Outliers are filtered before percentiles are computed, and an exercise’s ranks are only published once the sample is large enough.
Score cutoffs are derived from that distribution by applying the fixed percentile bands in the table below. The band is fixed; the score that delimits it moves with the community.
Recalibration is weekly — Sunday, 03:00 UTC — and the client can cache the cutoffs for up to 7 days. The rank is not a set-by-set real-time leaderboard: it is your position against the latest snapshot of the community.
Iron III 0–3 · II 3–5 · I 5–10 Bronze III 10–15 · II 15–20 · I 20–25 Silver III 25–30 · II 30–35 · I 35–40 Gold III 40–45 · II 45–50 · I 50–55 Platinum III 55–60 · II 60–65 · I 65–70 Emerald III 70–75 · II 75–80 · I 80–85 Diamond III 85–89 · II 89–92 · I 92–95 Champion III 95–97 · II 97–98 · I 98–99 Symmetric 99–100 (top 1%) cutoff(band) = percentile of the cohort’s best-marks distribution
| Constant | Value | What it controls |
|---|---|---|
| k (strength) | 0.66 | Allometric bodyweight exponent |
| k (timed) | 0.33 | Exponent for isometric/duration exercises |
| k_sessions | 5 | EWMA window → α = ⅓ |
| calendar_decay_threshold_days | 60 | Grace days with no penalty |
| tau_calendar | 120 days | Exponential decay time constant |
| soft_floor_full_days | 28 | Days at maximum floor protection |
| soft_floor_decay_end_days | 56 | Day the floor reaches its minimum |
| floor_max_protection | 0.85 | Initial floor: 85% of peak |
| floor_min | 0.50 | Minimum floor: 50% of peak |
| demotion_shield | 3 sessions | Protection after every rank-up |
| tau_muscular | 90 days | Freshness of the exercise → muscle contribution |
| min. exercises for global | 10 | Ranked exercises needed to unlock global |
| group weights | 4·3·2·2·2·2 | Legs · back · arms · shoulders · chest · core |
| cohort | exercise × gender | Each user’s best-ever mark, one entry per person |
| cutoff recalibration | weekly | Sunday 03:00 UTC; the client can cache them for up to 7 days |
Each league’s percentile bands are public and fixed: they’re in the table above. What we don’t publish are the specific scores that delimit each band on each exercise and cohort: they live in our backend, come from the community’s real distribution, and change with every weekly recalibration — so any table printed here would stop being true within days. Everything else — formulas, constants, and transitions — is exactly what the system runs.
Almost always for one of three reasons: your recent level (EWMA) dropped consistently over several sessions; you haven’t trained that exercise for more than 60 days and decay kicked in; or the weekly recalibration raised your cohort’s cutoffs because the community improved. A single bad day cannot sink your rank, and the protection floor never lets inactivity drop your score below 50% of your best mark.
Yes, and it isn’t a bug: it’s the consequence of a relative measure. Your league is a percentile band within your cohort. If your score goes up 3% but the community goes up 5%, your relative position slips, and the recalculated cutoffs can leave you in the band below. Your absolute progress is still there — in your marks and your history — but the rank measures something else: where you stand among everyone else.
Your score does: it’s recalculated with every session you log. Your cohort’s cutoffs don’t: they’re recalculated once a week — Sunday, 03:00 UTC — and your app can keep them for up to 7 days. That’s why a league change can show up days after the session that caused it, or even without a new session, if the community has moved.
The cohort is built from each user’s best-ever mark on that exercise: one entry per person, no summing of volume or sets. Your side of the comparison is your effective score — the stable level that comes from your consistency, with its protections and its decay. So the cutoffs reflect the best the community has proven, and your position reflects what you’re proving now.
The global rank activates once you have at least 10 exercises with a rank. Until then you can already see your exercise, muscle, and muscle group ranks.
Yes. Bodyweight is part of the score formula, so updating it recalculates your sessions with the new value. That’s what keeps the measure honest: your relative strength depends on your real body.
No. Every rank-up activates a 3-session shield during which you cannot go down, even if you perform worse. Promotions are never blocked.
It depends on when. In your first 4 sessions of an exercise, yes: the rank comes from your best score. From the fifth on, that session contributes one third of your level — a single heroic mark gets you closer, but the rank is earned by sustaining it.
The mechanics are identical: same formulas, same constants, same percentile bands. What changes is the cohort: percentiles are computed separately for men and for women, exercise by exercise, so every rank measures your position among comparable bodies.