One payment. No rate limits. Transparent WebP in two styles. Built-in alternatives and progressions.
Every classic-style image ships with a true transparent background. Drop it on white, dark mode, a brand color, a photo backdrop — no masks, no compositing, no "white square on my dark UI." We haven't found another exercise dataset that ships this.




Same file. No per-theme asset variants, no canvas tricks, no runtime compositing. images/classic/one-arm-kettlebell-floor-press-peak.webp.
Every exercise ships with regression_of and progression_of relations. Walk up and down a progression ladder with one lookup — no backend, no coach logic.





Filter by equipment, body part, or hand-pick a set — it's all in the JSON. No endpoint, no rate limit, no waiting on our CDN.






Every exercise is tagged for safety — knee_safe, shoulder_safe, lower_back_safe, no_axial_load. Build rehab-friendly UIs without a custom classifier.






JSON. SQLite. TypeScript types hand-written or generated. Same data, three shapes.
{
"id": "squat",
"name": "Barbell Back Squat",
"category": "strength",
"description": "A compound lower-body movement targeting the quadriceps, glutes, and hamstrings.",
"instructions": [
"Position the bar on your upper traps.",
"Unrack and step back, feet shoulder-width apart.",
"Brace your core and squat down until thighs are parallel.",
"Drive through your heels to stand back up.",
"Repeat."
],
"tips": [
"Keep your chest up throughout the movement.",
"Push your knees out in line with your toes."
],
"force_type": "push",
"mechanic": "compound",
"difficulty": "intermediate",
"equipment": "barbell",
"body_part": "upper_legs",
"primary_muscles": [
"gluteus_maximus",
"quadriceps"
],
"secondary_muscles": [
"erector_spinae",
"hamstrings"
],
"goals": [
"hypertrophy",
"strength",
"power"
],
"tags": [
"powerlifting",
"leg_day",
"big_three"
],
"variation_group": "squat",
"is_unilateral": false,
"is_bodyweight": false,
"is_placeholder": false,
"relations": [
{
"to": "banded-squat",
"type": "alternative"
},
{
"to": "banded-squat",
"type": "alternative"
},
{
"to": "db-squat",
"type": "alternative"
},
{
"to": "db-squat",
"type": "alternative"
},
{
"to": "heel-elevated-squat",
"type": "alternative"
},
{
"to": "heel-elevated-squat",
"type": "alternative"
},
{
"to": "smith-machine-squat",
"type": "alternative"
},
{
"to": "trx-squat",
"type": "alternative"
},
{
"to": "trx-squat",
"type": "alternative"
},
{
"to": "jump-squat",
"type": "progression"
},
{
"to": "front-squat",
"type": "progression_of"
},
{
"to": "pause-squat",
"type": "progression_of"
},
{
"to": "stability-ball-wall-squat",
"type": "regression"
},
{
"to": "goblet-squat",
"type": "regression_of"
},
{
"to": "smith-machine-squat",
"type": "regression_of"
}
],
"images": {
"classic": [
"start",
"peak"
],
"flat": [
"start",
"peak"
]
}
} INSERT INTO exercise (id, name, category, difficulty, equipment, body_part)
VALUES ('squat', 'Barbell Back Squat', 'strength', 'intermediate', 'barbell', 'upper_legs'); interface Exercise {
id: string;
name: string;
description?: string;
instructions?: string[];
tips?: string[];
category: "strength" | "cardio" | "olympic" | "plyometrics" | "strongman";
difficulty?: "beginner" | "intermediate" | "advanced";
equipment?: string;
body_part?: string;
primary_muscles?: string[];
secondary_muscles?: string[];
goals?: string[];
tags?: string[];
variation_group?: string;
relations?: { to: string; type: "alternative" | "progression_of" | "regression_of" }[];
images?: { classic?: string[]; flat?: string[] };
}
// Per-locale bundle: exercises.en.json — bare `name`/`description`/`instructions`/`tips`,
// plus a top-level `enum_labels` map so you can render category / difficulty /
// body_part / goals / force_type / mechanic without a hand-written translation table:
// bundle.enum_labels.category[ex.category] // e.g. "Kraft"
// Full bundle: exercises.json — fields suffixed _en/_de/_es to ship all languages at once. No ambiguous copyright. No DMCA risk. Clear tier scopes so your legal team can sign off in ten minutes.
No rate limits. No subscription. Every tier ships the same 359-exercise bundle — tiers differ only by commercial license scope. New illustrations land as free updates.