RepDB
359 exercises · EN · DE · ES

The commercial-safe exercise dataset.

One payment. No rate limits. Transparent WebP in two styles. Built-in alternatives and progressions.

Lifetime access. Commercial license included. SQLite + JSON + WebP. Download a free 21-exercise preview.
Stability Ball Push-Up — Classic
Classic
3D-render style
Stability Ball Push-Up — Flat
Flat
Illustration style
Stability Ball Push-Up — same exercise, two visual styles in every bundle.
Killer feature

One WebP.Any canvas.

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.

One Arm Kettlebell Floor Press on Light
Light
Consumer fitness app
One Arm Kettlebell Floor Press on Dark
Dark
Dark mode
One Arm Kettlebell Floor Press on Brand
Brand
Your brand colors
One Arm Kettlebell Floor Press on Canvas
Canvas
Composable over anything

Same file. No per-theme asset variants, no canvas tricks, no runtime compositing. images/classic/one-arm-kettlebell-floor-press-peak.webp.

Use case · Progression

EasierHarder, without an API.

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.

Incline Push-Up
Level 1 of 5
Incline Push-Up
Push-Up
Level 2 of 5
Push-Up
Decline Push-Up
Level 3 of 5
Decline Push-Up
Stability Ball Push-Up
Level 4 of 5
Stability Ball Push-Up
Clap Push-Ups
Level 5 of 5
Clap Push-Ups
Use case · Equipment + muscle group

Full-body kettlebell workout in 6 lookups.

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.

Kettlebell Pistol Squat
Kettlebell Pistol Squat
Double Kettlebell Clean
Double Kettlebell Clean
Kettlebell Deadlift
Kettlebell Deadlift
One Arm Kettlebell Row
One Arm Kettlebell Row
Kettlebell Floor Press
Kettlebell Floor Press
Kettlebell Halo
Kettlebell Halo
Use case · Safety constraints

Knee-safe leg day, out of the box.

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

Barbell Hip Thrust
Barbell Hip Thrust
Romanian Deadlift
Romanian Deadlift
Lying Leg Curl
Lying Leg Curl
Glute Bridge
Glute Bridge
Machine Hip Abduction
Machine Hip Abduction
Kettlebell Swing
Kettlebell Swing

Use it however you like.

JSON. SQLite. TypeScript types hand-written or generated. Same data, three shapes.

exercises.en.json
{
  "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"
    ]
  }
}
schema.sql
INSERT INTO exercise (id, name, category, difficulty, equipment, body_part)
VALUES ('squat', 'Barbell Back Squat', 'strength', 'intermediate', 'barbell', 'upper_legs');
TypeScript
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.

Commercial-safe, pay once.

No ambiguous copyright. No DMCA risk. Clear tier scopes so your legal team can sign off in ten minutes.

What you can do

Ship in commercial apps — iOS, Android, web, desktop.
Modify the JSON / SQL to fit your schema.
Bundle images directly into your app builds.
Use in paid products, subscriptions, one-time sales.

What you can't

Resell or redistribute the raw dataset as a dataset.
Use in ML training sets intended for resale.
Reverse-engineer the relations graph into a competing API.
Read the full license →

One payment. Yours forever.

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.

Indie
$69
$49
Solo devs, hobby projects, learning.
  • One product
  • Personal use, or commercial up to $10k/yr revenue
  • All 359 exercises — classic + flat WebP
  • 27 muscle diagrams + 72 equipment icons
  • Updates included
Most popular
Standard
$199
$149
One commercial product. No revenue cap.
  • Everything in Indie
  • One commercial product — any revenue
Unlimited
$499
$399
Agencies and studios shipping multiple products.
  • Everything in Standard
  • Unlimited products and brands
  • Use in client work — agency / white-label
Enterprise
Contact us
Custom contracts, migration help, priority support.
  • Everything in Unlimited
  • Migration help — import from any existing dataset
  • Custom exercise additions or fixes on request
  • Invoice + custom contract on request
  • Priority email support
Contact us
Launch pricing: Crossed-out price is the regular tier price. Until 2026-06-01 every bundle ships at the launch discount below.
All bundles include: 359 illustrated exercises · classic + flat WebP · EN + DE + ES translations · 27 muscle diagrams + 72 equipment icons · 15 ready-made workout templates · pre-computed AI embeddings · MET values · TypeScript types · SQLite + schema.sql + JSON · relations graph (alternatives, progressions, equipment subs).