Rank system

How ranks work in Symmetry

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.

See how it works
The key idea

Your place in the community

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:

Platinum II
Percentile 60–65
Ahead of 62% of your cohort on that exercise

The bands are drawn to true scale: Iron covers the bottom 10% of the community, and Symmetric is just the top 1%.

25 levels. One path.

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.

Iron0–10%IIIIII
Bronze10–25%IIIIII
Silver25–40%IIIIII
Gold40–55%IIIIII
Platinum55–70%IIIIII
Emerald70–85%IIIIII
Diamond85–95%IIIIII
Champion95–99%IIIIII
The ceilingSymmetricTop 1%

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.

What types of rank are there in Symmetry?

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.

  1. 1/5

    You log a session

    Every session of an exercise becomes a score that measures your relative strength.

  2. 2/5

    Exercise rank

    Your recent sessions blend into a stable level, and that level becomes a league by comparing it against your cohort’s percentiles.

  3. 3/5

    Muscle rank

    The exercises that train a muscle are weighted by volume and by how recent they are.

  4. 4/5

    Muscle group rank

    The average of the group’s active muscles: arms, legs, core, shoulders, chest, and back.

  5. 5/5

    Global rank

    The weighted average of your muscle groups. Unlocks once 10 exercises have a rank.

Step 1 · The score

A fair score for different bodies

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.

score = estimated 1RM ÷ bodyweight^0.66
The system’s core formula, identical for every strength exercise.

Why 0.66 instead of just dividing by bodyweight?

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.

You never need to test your 1RM

Your one-rep max is estimated from the weight and reps of each set, using the most accurate formula for each rep range:

  • 1–5 repsLander
    1RM = 100 × weight ÷ (101.3 − 2.67123 × reps)
  • 6–12 repsBaechle
    1RM = weight × (1 + 0.033 × reps)
  • 13+ repsBrzycki
    1RM = weight ÷ (1.0278 − 0.0278 × reps)

Try it: who earns more credit?

Two people, two bodies. Move the controls and watch the score compare strength fairly.

Athlete Ahigher score
Estimated 1RMBaechle95.8 kg
Score6.29
Athlete B
Estimated 1RMLander125.1 kg
Score6.07

Every exercise counts its real weight

The weight that enters the formula — the effective weight — depends on the exercise type:

Weighted

effective weight = logged load

Bench press, squat, rows… The weight you put on the bar is the weight that counts.

Bodyweight

effective weight = (bodyweight + added load) × fraction

Each movement lifts a different fraction of your body: a pull-up moves 100%, a push-up around 65%.

Assisted

effective weight = max(bodyweight − assistance, 0)

Assistance is subtracted. If the machine carries all your weight, that session doesn’t score.

Timed

score = seconds ÷ bodyweight^0.33

Planks and isometric holds score by duration, with their own exponent.

High volume: a different path, the same rigor

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.

score = reps × effective weight ÷ bodyweight^0.66

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.

Step 2 · Consistency

Neither your best day nor your worst

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.”

level = ⅓ × today’s score + ⅔ × previous level
On your first session, your level is simply your score.
0255075100123456789101112SessionsYour level
Each session’s scoreYour level (EWMA)

Pick a scenario and watch the level follow the real trend while ignoring single-day noise.

You have a rank from session one

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.

Demotion shield

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.

Step 3 · Inactivity

If you stop, your rank stays honest

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.

effective score = max(level × decay, protection floor)
Decay lowers the recent component; the floor protects what you already proved.
02550751000306090120150180Days without training the exerciseDay 60: decay beginsThe floor holds youEffective scoreWithout the floor
Effective scoreProtection floorWithout the floor

Example with a level of 100: two months of grace, a gentle decline, and a floor that settles at 50% of your best mark.

60 days of grace

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.

A floor that remembers your best self

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.

Step 4 · Aggregation

From each exercise to your global rank

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.

Exercise → muscle

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.

contribution weight = sets × e^(−days since last session ÷ 90)

Muscle → muscle group

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.

Muscle group → global rank

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.

Each muscle group’s weight in the global rank
Legs
×4
Back
×3
Arms
×2
Shoulders
×2
Chest
×2
Core
×2

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.

For auditors: the exact math

Everything above is a faithful simplification. What follows is not a simplification: these are the exact formulas and constants the system runs.

Score and 1RM estimation

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
EWMA, ramp-up, and demotion shield

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
Calendar decay and soft floor

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))
Aggregation: muscle, group, and global

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
Cohorts, percentiles, and recalibration

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
System constants
ConstantValueWhat it controls
k (strength)0.66Allometric bodyweight exponent
k (timed)0.33Exponent for isometric/duration exercises
k_sessions5EWMA window → α = ⅓
calendar_decay_threshold_days60Grace days with no penalty
tau_calendar120 daysExponential decay time constant
soft_floor_full_days28Days at maximum floor protection
soft_floor_decay_end_days56Day the floor reaches its minimum
floor_max_protection0.85Initial floor: 85% of peak
floor_min0.50Minimum floor: 50% of peak
demotion_shield3 sessionsProtection after every rank-up
tau_muscular90 daysFreshness of the exercise → muscle contribution
min. exercises for global10Ranked exercises needed to unlock global
group weights4·3·2·2·2·2Legs · back · arms · shoulders · chest · core
cohortexercise × genderEach user’s best-ever mark, one entry per person
cutoff recalibrationweeklySunday 03:00 UTC; the client can cache them for up to 7 days

What we don’t publish (and why)

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.

Quick questions

Why did my rank go down?

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.

Can I improve my mark and still drop a league?

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.

Does the rank update in real time?

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.

What exactly goes into the comparison?

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.

Why don’t I see my global rank yet?

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.

I updated my bodyweight and my scores changed. Is that normal?

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.

I just ranked up. Can I rank down in the next session?

No. Every rank-up activates a 3-session shield during which you cannot go down, even if you perform worse. Promotions are never blocked.

If I hit a huge PR one day, do I jump up instantly?

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.

Is the system the same for men and women?

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.

Join the fitness revolution

Your transformation starts today

Join thousands of users who are already reaching their goals with Symmetry

Get it on Google Play
Download on the App Store
Free download
No commitments
Guaranteed results