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.