A fitness exercise dataset of 1,324 exercises with step-by-step instructions in 10 languages, a strength/stretch/cardio/olympic category on every record, a 22-muscle vocabulary for querying, a three-level movement hierarchy, and per-muscle training-volume data (direct/indirect involvement across those 22 muscles) for 1,115 exercises — ready to drop into workout apps, training-volume calculators, and research projects.
- What's inside
- Record format
- Field reference
- Muscle labels vs. volume
- The movement hierarchy
- Instructions
- Stats
- Provenance & license
| File | Description |
|---|---|
data/exercises.json |
The main dataset: 1,324 exercise records |
data/exercises.schema.json |
JSON Schema (draft 2020-12) the dataset validates against |
{
"id": "0025",
"name": "barbell bench press",
"equipment": "barbell",
"category": "strength",
"primary_muscle": "Chest",
"secondary_muscle": ["Front Delts", "Triceps"],
"body_region": "Upper body",
"movement_group": "Chest",
"volume_profile": "Barbell bench press",
"volume": {
"Chest": 1.0,
"Front Delts": 1.0,
"Triceps": 1.0
},
"instructions": { "en": "…", "es": "…", "…": "…" },
"instruction_steps": { "en": ["…", "…"], "…": ["…"] },
"created_at": "2026-03-18T12:31:32.870252+00:00"
}Every record validates against data/exercises.schema.json. Fields marked optional are simply absent when not applicable — never null, never empty.
Unique identifier, zero-padded to 4 digits: "0001" … "5201". IDs are unique but not contiguous.
Full lowercase exercise name, e.g. "barbell bench press", "3/4 sit-up".
One of 28 values:
assisted · band · barbell · body weight · bosu ball · cable · dumbbell · elliptical machine · ez barbell · hammer · kettlebell · leverage machine · medicine ball · olympic barbell · resistance band · roller · rope · skierg machine · sled machine · smith machine · stability ball · stationary bike · stepmill machine · tire · trap bar · upper body ergometer · weighted · wheel roller
The kind of training the exercise is. One of 4 values, mutually exclusive, present on every record:
| Value | Count | What it covers |
|---|---|---|
strength |
1,201 | Resistance training — the bulk of the dataset |
stretch |
69 | Static and dynamic stretching, mobility work |
cardio |
34 | Conditioning: machines, running, jump rope, locomotion drills |
olympic |
20 | Explosive full-body lifts — cleans, snatches, jerks, swings |
category is an axis of its own, not a restatement of whether volume is present: 86 strength records carry no volume_profile (a dumbbell raise or barbell rack pull is plainly strength, it just doesn't map onto one of the 37 movement patterns). Filter on category to pick the kind of work; use volume_profile to know whether set-volume math is available.
Plyometrics get no category of their own on purpose — a jump squat is a squat, and most plyo variants already sit on strength profiles, so splitting them out would drop them from strength queries.
The single muscle the exercise mainly trains. One of 22 values — the same vocabulary used by secondary_muscle and by the keys of volume:
| Upper body (15) | Lower body (7) |
|---|---|
Chest · Lats · Upper Back · Upper Traps · Lower Back |
Quads · Hamstrings · Glutes |
Front Delts · Side Delts · Rear Delts |
Calves · Tibialis |
Biceps · Triceps · Forearms |
Abductors · Adductors |
Abs · Obliques · Serratus · Neck |
Absent on the 29 movements that aren't muscle-targeted in a training sense (running, jump rope, burpees, …).
NeckandTibialisare valid values but currently unused by anyvolumemap — the dataset's only neck and tibialis entries are stretches, which carry no volume. They're kept so records added later have somewhere to go.
Additional muscles meaningfully involved. Same 22-value vocabulary as primary_muscle; always deduplicated against it, unique, and non-empty when present. Every muscle the exercise's volume map marks direct appears here (or as primary_muscle), so filtering on these fields never misses a directly-trained muscle.
Top level of the movement hierarchy. One of 2 values: Upper body · Lower body.
The movement family, grouping one or more volume profiles. One of 20 values:
| Upper body | Lower body |
|---|---|
Biceps curls |
Calf raises/jumps |
Chest |
Hip adduction & abduction |
Core |
Hip hinges |
Forearm exercises |
Hip thrusts & kickbacks |
Front raises |
Leg curls |
Lateral raises |
Leg extensions |
Overhead presses |
Squat movements |
Pull-overs |
|
Pulls |
|
Rear delt flys |
|
Scapular work |
|
Shrugs |
|
Triceps extensions |
The movement-pattern profile the exercise was classified into — the key that determines its volume map. All exercises sharing a volume_profile carry identical volume data. One of 37 values (see the movement hierarchy for how they nest):
Ab crunches · Back extensions · Barbell bench press · Barbell overhead press · Barbell squats · Biceps curls · Cable rows · Chest flys · Chin-ups & pulldowns · Deadlifts · Dumbbell bench press · Dumbbell overhead press · Front raises · Good mornings · Grip work · Hip abduction · Hip adduction · Hip extensions & pull-throughs · Hip thrusts & glute kickbacks · Lateral raises · Leg curls · Leg extensions · Leg presses, hack & belt squats · Lunges & step-ups · Oblique twists & side bends · Pull-overs · Pull-ups & wide pulldowns · Rear delt flys · Romanian deadlifts · Scapular depression · Scapular protraction · Seated calf raises · Shrugs · Standing calf raises · Triceps extensions · Wrist curls · Wrist extensions
Absent (together with volume, body_region, movement_group) on 209 exercises that don't fit a hypertrophy-volume model. By category: 86 strength (isometric holds, carries, one-off movements that match no pattern), 69 stretch, 34 cardio, 20 olympic.
Muscle involvement for the movement pattern, keyed by the same 22-muscle vocabulary as primary_muscle. Uninvolved muscles are absent, so every key carries one of exactly two values:
| Value | Meaning |
|---|---|
1.0 |
Direct — the muscle is a prime mover of the exercise |
0.5 |
Indirect — a meaningful synergist, but not a prime mover |
"volume": { "Chest": 1.0, "Front Delts": 1.0, "Triceps": 1.0 }To compute weekly volume per muscle: for each set performed, add the exercise's volume map to your per-muscle totals. Three sets of barbell bench press count as 3 direct sets for chest, front delts and triceps alike.
Same vocabulary, different jobs. primary_muscle is hand-curated and forces a single winner — useful for browsing and for "which muscle is this exercise for". volume is derived from the movement pattern and freely marks several muscles direct at once: a bench press is genuinely a direct chest, front-delt and triceps movement. Use the labels to filter, use volume to count sets.
The direct/indirect split follows the fractional-set convention described in Schoenfeld BJ, Grgic J, Haun C, Itagaki T, Helms ER (2019), Calculating Set-Volume for the Limb Muscles with the Performance of Multi-Joint Exercises: Implications for Resistance Training Prescription, Sports 7(7):177 (CC BY 4.0). Exercises are first binned into movement-pattern profiles; each profile then carries one involvement map, so classification is auditable and consistent across the ~1,100 exercises that share only 37 underlying patterns.
Full-text instructions keyed by ISO 639-1 language code. All 10 languages present on every record: en es it tr ru zh hi pl ko fr.
The same instructions split into an ordered array[string] of steps, same 10 language keys.
ISO 8601 timestamp of record creation.
All three muscle fields draw on one 22-muscle vocabulary, but they answer different questions:
primary_muscle+secondary_muscle— hand-maintained labels for querying and grouping ("show me all Lats exercises"). One primary per exercise.volume— derived from the movement pattern, marks every prime mover as direct. Use it to compute training volume per muscle.
They stay consistent in one direction: anything volume calls direct is also present in primary_muscle/secondary_muscle. Beyond that they're independent — the labels are curated for browsing, the volume maps are fixed per movement pattern.
Volumed exercises carry a 3-level hierarchy: body_region → movement_group → volume_profile.
Upper body
├── Pulls ──────────────── Chin-ups & pulldowns · Pull-ups & wide pulldowns · Cable rows
├── Chest ──────────────── Barbell bench press · Dumbbell bench press · Chest flys
├── Overhead presses ───── Barbell overhead press · Dumbbell overhead press
├── Core ───────────────── Ab crunches · Oblique twists & side bends
├── Scapular work ──────── Scapular protraction · Scapular depression
├── Rear delt flys · Pull-overs
├── Lateral raises · Front raises · Shrugs
├── Biceps curls · Triceps extensions
└── Forearm exercises ──── Wrist curls · Wrist extensions · Grip work
Lower body
├── Hip hinges ─────────── Deadlifts · Romanian deadlifts · Good mornings ·
│ Hip extensions & pull-throughs · Back extensions
├── Squat movements ────── Barbell squats · Leg presses, hack & belt squats ·
│ Lunges & step-ups
├── Hip thrusts & kickbacks ── Hip thrusts & glute kickbacks
├── Hip adduction & abduction ── Hip adduction · Hip abduction
├── Calf raises/jumps ──── Standing calf raises · Seated calf raises
└── Leg curls · Leg extensions
Use movement_group for workout-builder menus ("pick a hip hinge"), volume_profile for exact volume lookups.
Every exercise has full-text instructions and split instruction_steps in: English, Spanish, Italian, Turkish, Russian, Chinese, Hindi, Polish, Korean, French (keyed by ISO 639-1 code).
| category | count | share |
|---|---|---|
strength |
1,201 | 91% |
stretch |
69 | 5% |
cardio |
34 | 3% |
olympic |
20 | 2% |
| primary_muscle | count | primary_muscle | count | |
|---|---|---|---|---|
| Chest | 161 | Obliques | 42 | |
| Lats | 153 | Forearms | 40 | |
| Biceps | 148 | Rear Delts | 36 | |
| Glutes | 144 | Side Delts | 29 | |
| Triceps | 141 | Hamstrings | 28 | |
| Abs | 115 | Lower Back | 22 | |
| Front Delts | 80 | Upper Back / Upper Traps | 13 each | |
| Calves | 59 | Adductors / Abductors | 6 / 5 | |
| Obliques | 54 | Serratus / Neck | 2 each | |
| Quads | 44 | (none — cardio) | 29 |
| Equipment | Count | Equipment | Count | |
|---|---|---|---|---|
| Body weight | 325 | Kettlebell | 41 | |
| Dumbbell | 294 | Weighted | 36 | |
| Cable | 157 | Stability ball | 28 | |
| Barbell | 154 | EZ barbell | 23 | |
| Leverage machine | 81 | Assisted / Sled machine | 15 each | |
| Band | 54 | Medicine ball | 13 | |
| Smith machine | 48 | Other (13 types) | 40 |
~25% of exercises need no equipment at all — great for at-home workout apps.
| Metric | Count |
|---|---|
| Exercises with volume data | 1,115 (84%) |
Movement-pattern profiles (volume_profile) |
37 |
| Movement groups | 20 |
| Muscles in the vocabulary | 22 (20 currently used) |
| Intentionally without volume (stretches, cardio, Olympic hybrids, isometrics) | 209 |
Top movement patterns by exercise count:
| volume_profile | count | volume_profile | count | |
|---|---|---|---|---|
| Biceps curls | 143 | Oblique twists & side bends | 54 | |
| Triceps extensions | 137 | Dumbbell overhead press | 43 | |
| Ab crunches | 113 | Standing calf raises | 39 | |
| Dumbbell bench press | 96 | Chin-ups & pulldowns | 35 | |
| Cable rows | 72 | Rear delt flys | 32 | |
| Barbell squats | 56 | Lunges & step-ups | 30 |
involved counts any appearance in a volume map; direct counts only 1.0 entries.
| Muscle | involved | direct | Muscle | involved | direct | |
|---|---|---|---|---|---|---|
| Triceps | 383 | 172 | Calves | 169 | 61 | |
| Abs | 326 | 113 | Hamstrings | 126 | 43 | |
| Chest | 297 | 135 | Quads | 119 | 99 | |
| Biceps | 274 | 202 | Upper Traps | 103 | 30 | |
| Upper Back | 238 | 165 | Side Delts | 84 | 73 | |
| Glutes | 220 | 148 | Obliques | 42 | 42 | |
| Front Delts | 219 | 219 | Abductors | 35 | 5 | |
| Lower Back | 211 | 91 | Forearms | 31 | 31 | |
| Rear Delts | 182 | 158 | Obliques | 54 | 54 | |
| Lats | 170 | 150 | Adductors / Serratus | 4 / 2 | 4 / 2 |
- Exercise names, equipment data, and multilingual instructions derive from hasaneyldrm/exercises-dataset (MIT). The media files (images/GIFs) of that project are not included here — they are separately licensed (© Gym visual) and were removed along with their reference fields.
- The muscle-volume system (movement-pattern profiles, direct/indirect involvement maps, the movement hierarchy, and the 22-muscle vocabulary) is added by this project.
Released under the MIT License.