Skip to main content

Exercise Library

OpenSet includes a canonical exercise library (openset-default) with 50 broadly recognized exercises under the MIT license. Exercise libraries are separate JSON documents that workouts and programs reference by ID.

Library Document​

Exercise libraries are validated against exercise-library.schema.json. A library document has these top-level fields:

FieldRequiredDescription
openset_versionYesSpec version (e.g. "1.0")
typeYesMust be "exercise_library"
idYesUnique library identifier (e.g. "openset-default")
nameYesHuman-readable name
versionYesLibrary version string (e.g. "1.0.0")
providerYesLibrary author or organization
licenseYesLicense identifier (e.g. "MIT")
exercisesYesArray of exercise definitions

Exercise Definition​

Each exercise in the exercises array is an object with the following fields:

Required Fields​

FieldDescription
idSnake_case identifier, unique within the library (e.g. back_squat)
nameDisplay name (e.g. "Back Squat")
common_dimensionsArray of typical dimension combinations (see below)

Classification Fields​

FieldValuesDescription
body_partupper_body, lower_body, core, full_body, cardioPrimary body region
body_partsstring[]Optional finer taxonomy; use the recommended vocabulary below for consistency. Secondary to body_part for apps that need muscle-group or region detail.
categorypush, pull, hinge, squat, carry, rotation, gaitMovement pattern
mechaniccompound, isolationJoint involvement
lateralitybilateral, unilateral, alternatingSide symmetry
levelbeginner, intermediate, advanced, eliteSkill/strength prerequisite

Descriptive Fields​

FieldTypeDescription
aliasesstring[]Alternative names (e.g. ["RDL"] for Romanian Deadlift)
descriptionstringBrief description of the movement
equipmentstring[]Required equipment (e.g. ["barbell", "squat_rack"])
target_musclesstring[]Primary muscles worked
synergist_musclesstring[]Secondary muscles involved
sport_relevancestring[]Sports where this exercise is commonly used
default_tempostringDefault tempo (e.g. "3-1-2-0") when a set does not specify tempo
notestringCoaching cues or additional notes

Relationship Fields​

Exercises can reference other exercises in the same library by id:

FieldTypeDescription
progressionsstring[]Harder variations (e.g. pull-up → weighted pull-up)
regressionsstring[]Easier variations (e.g. pull-up → chin-up)
variationsstring[]Lateral alternatives at similar difficulty

Media​

The optional media field provides instructional content:

{
"media": {
"videos": [
{ "url": "https://example.com/squat.mp4", "label": "Form Guide", "language": "en" }
],
"photos": [
{ "url": "https://example.com/squat.jpg", "label": "Setup Position" }
]
}
}

For body_parts, the following snake_case values are recommended so libraries and apps can filter and categorize consistently:

TermDescription
chestPectorals, chest
backLats, rhomboids, traps, spinal erectors
shouldersDeltoids
bicepsBiceps brachii
tricepsTriceps brachii
coreAbs, obliques, transverse abdominis
glutesGluteals
quadsQuadriceps
hamstringsHamstrings
calvesGastrocnemius, soleus
full_bodyWhole body / general

These are optional; libraries may use other values. Keeping to this vocabulary improves interoperability.

Common Dimensions​

The common_dimensions field is an array of arrays. Each inner array lists a typical combination of dimensions for the exercise:

{
"id": "back_squat",
"common_dimensions": [
["reps", "load"],
["reps"]
]
}

This tells tooling that a back squat is commonly prescribed as reps + load, or reps only. It's guidance for validators and code generators — not a constraint. Any valid dimension combination can be used.

Example Exercise​

A complete exercise definition from the canonical library:

{
"id": "back_squat",
"name": "Back Squat",
"aliases": ["Squat", "High Bar Squat"],
"description": "A compound lower body movement where the barbell rests on the upper back.",
"body_part": "lower_body",
"category": "squat",
"mechanic": "compound",
"laterality": "bilateral",
"level": "intermediate",
"equipment": ["barbell", "squat_rack"],
"target_muscles": ["quadriceps", "glutes"],
"synergist_muscles": ["hamstrings", "adductors", "spinal_erectors", "core"],
"progressions": ["front_squat"],
"regressions": ["goblet_squat", "bodyweight_squat"],
"variations": ["front_squat", "goblet_squat", "leg_press"],
"sport_relevance": ["strength", "powerlifting", "football", "rugby"],
"common_dimensions": [["reps", "load"], ["reps"]],
"note": "Keep chest tall and knees tracking over toes throughout the movement."
}

Referencing Libraries​

Workouts and programs reference a library via the library field. Exercises then use exercise_id to look up definitions:

{
"openset_version": "1.0",
"type": "workout",
"library": {
"id": "openset-default",
"version": "1.0.0"
},
"blocks": [
{
"series": [
{
"execution_mode": "SEQUENTIAL",
"exercises": [
{
"exercise_id": "back_squat",
"sets": [{ "dimensions": ["reps", "load"], "reps": { "type": "fixed", "value": 5 }, "load": { "type": "fixed", "value": 100, "unit": "kg" } }]
}
]
}
]
}
]
}

When no library is referenced, exercises use the name field instead of exercise_id.

Canonical Library​

The openset-default library ships with 50 exercises covering strength, conditioning, endurance, and general fitness:

IDNameBody PartCategory
back_squatBack Squatlower_bodysquat
front_squatFront Squatlower_bodysquat
goblet_squatGoblet Squatlower_bodysquat
bodyweight_squatBodyweight Squatlower_bodysquat
leg_pressLeg Presslower_bodysquat
wall_sitWall Sitlower_bodysquat
deadliftDeadliftlower_bodyhinge
romanian_deadliftRomanian Deadliftlower_bodyhinge
hip_thrustHip Thrustlower_bodyhinge
kettlebell_swingKettlebell Swingfull_bodyhinge
lungeLungelower_bodysquat
bulgarian_split_squatBulgarian Split Squatlower_bodysquat
step_upStep Uplower_bodysquat
calf_raiseCalf Raiselower_bodypush
bench_pressBench Pressupper_bodypush
incline_bench_pressIncline Bench Pressupper_bodypush
dumbbell_bench_pressDumbbell Bench Pressupper_bodypush
push_upPush Upupper_bodypush
dipDipupper_bodypush
overhead_pressOverhead Pressupper_bodypush
lateral_raiseLateral Raiseupper_bodypush
pull_upPull Upupper_bodypull
chin_upChin Upupper_bodypull
lat_pulldownLat Pulldownupper_bodypull
barbell_rowBarbell Rowupper_bodypull
dumbbell_rowDumbbell Rowupper_bodypull
seated_rowSeated Rowupper_bodypull
inverted_rowInverted Rowupper_bodypull
bicep_curlBicep Curlupper_bodypull
tricep_pushdownTricep Pushdownupper_bodypush
tricep_extensionTricep Extensionupper_bodypush
leg_curlLeg Curllower_bodyhinge
leg_extensionLeg Extensionlower_bodysquat
plankPlankcorecarry
side_plankSide Plankcorerotation
crunchCrunchcorerotation
sit_upSit Upcorerotation
leg_raiseLeg Raisecorerotation
farmer_carryFarmer Carryfull_bodycarry
sled_pushSled Pushfull_bodycarry
box_jumpBox Jumplower_bodygait
burpeeBurpeefull_bodygait
runRuncardiogait
sprintSprintcardiogait
treadmillTreadmillcardiogait
rowing_machineRowing Machinecardiopull
stationary_bikeStationary Bikecardiogait
jump_ropeJump Ropecardiogait
swimmingSwimmingcardiopull
ellipticalEllipticalcardiogait

Third-Party Libraries​

Anyone can create a custom exercise library. To claim OpenSet compatibility, it must validate against exercise-library.schema.json. Use a unique id and provider to avoid conflicts with other libraries.