The muscle balance score in Zyra Workouts is a 0–100 number that says how *evenly* your weekly training is spread across the 11 muscle groups: it is 100 × (1 − CV), where CV is the coefficient of variation of each group's coverage (weekly sets ÷ landmark, capped at 1). Even coverage scores 100; a week that trains six groups and skips five scores single digits. This page gives the formula, several worked scores, how the body map colours it, and why the fix is to add rather than remove.

Zyra Workouts is in development and not yet on the App Store; the screens described here may change before release.

02468101214Chest12Shoulders14Triceps10Back14Biceps10Forearms6Quads14Hamstrings10Glutes10Calves10Core10working sets per week (primary ×1 · secondary ×0.5)
Fig. The weekly working-set landmarks the Zyra Workouts dashboard measures coverage against, one bar per muscle group on a shared 0–14 axis. A set counts 1 toward the exercise's primary muscle and 0.5 toward each secondary muscle; warm-ups do not count. These are the app's defaults for its coverage bars — a tracking target, not a law and not a health claim.

Coverage per muscle

The score starts from the same counting rule as the weekly landmarks: each working set (anything not typed warm-up) adds 1 to the exercise's primary muscle and 0.5 to each secondary. For each group the app then computes

coverage = min(sets / landmark, 1)

so a group at or above its landmark has coverage 1, a group at half its landmark has 0.5, and a group with no sets has 0. The cap matters: sets above the landmark do not raise coverage past 1 and therefore cannot compensate for another group's shortfall. Landmarks are 12 for chest, 14 for back, shoulders and quads, 10 for biceps, triceps, hamstrings, glutes, calves and core, and 6 for forearms.

The score formula

With the 11 coverages c₁…c₁₁:

  • mean = Σcᵢ / 11
  • variance = Σ(cᵢ − mean)² / 11
  • CV = √variance / mean (the standard deviation as a fraction of the mean)
  • balance = round(100 × clamp(1 − CV, 0, 1))

If the mean is zero — no working sets this week — the score is 0. Some values, computed with the app's own function:

WeekCoveragesBalance
Every group at its landmark11 × 1.0100
Every group at half its landmark11 × 0.5100
Ten groups at target, calves untouched10 × 1.0, 1 × 068
Six upper groups at target, five lower at half6 × 1.0, 5 × 0.568
Upper body only6 × 1.0, 5 × 09

The second row is the one to internalise: the score is blind to *how much* you trained. A light week and a full week score the same if their shape is the same. That is why the dashboard shows the score next to the bars rather than instead of them — the bars carry the amount, the score carries the evenness.

The third and fourth rows show the other property: one group at zero costs as much as five groups at half. A single hole in the week is expensive because the CV is dominated by the distance of the outlier from the mean.

A realistic example. A three-day barbell week of 9 sets each of back squat, bench press and barbell row, plus 6 each of overhead press, Romanian deadlift and plank, credits (with secondaries at 0.5) chest 9, back 15, shoulders 13.5, biceps 4.5, triceps 7.5, forearms 7.5, quads 9, hamstrings 7.5, glutes 7.5, calves 0, core 13.5. Coverages run from 1.0 (back, forearms, core) down to 0.45 (biceps) and 0 (calves), and the score comes out at 61. Add three sets of standing calf raises and a set or two of curls and it climbs, because the two lowest bars move.

In plain terms: the score is 100 when every bar is the same height, and it falls fastest when one bar is empty. This is arithmetic, not a trial result — no study defines "balanced"; the app defines evenness and measures it.

Reading the body map

The dashboard's Muscle Groups card leads with a front and back body map and the score above it. Each region is tinted from its group's sets against its landmark: under target in the warning colour, at or over target in the accent. There is no third tint for "far over"; past the landmark, the map stops distinguishing. Beneath the map the card lists the groups with the lowest coverage first, which is the list to act on.

Because the map is coloured relative to each group's own landmark, forearms at 6 of 6 and quads at 14 of 14 look the same, and quads at 9 of 14 looks under while forearms at 6 of 6 looks done, even though quads got more raw sets. The map answers "which groups are short of their target?", not "which groups got the most work?".

Add, don't remove

Two changes raise a low score: adding sets to the lowest groups, or removing sets from the highest. The arithmetic treats them alike; the training does not. Removing sets from a well-covered group raises evenness by lowering your total work, and the coverage cap already stops the high group from being "too high" in the score's eyes. Adding sets to the lowest group raises evenness and adds work.

The practical move is therefore one exercise whose *primary* muscle is the lowest group — a primary set is a full set toward that bar, where a secondary is half. In a generated program, naming the group as a focus muscle does this automatically; in a self-built one, it is one row on a day whose roster fits. The program guide covers both routes, and the weekly sets calculator shows the score for a planned week before you train it.

The short version

Balance = round(100 × (1 − CV)) over the 11 coverages, each min(sets/landmark, 1). It measures evenness only: all-at-half scores 100, one group at zero scores 68, upper-only scores 9. Read it with the bars, act on the lowest groups, and add sets rather than removing them.

Educational overview only — training guidance, not medical advice.