The commercial-safe exercise dataset.
One payment. No rate limits. Two styles — classic (muscles highlighted) + flat. Built-in alternatives and progressions.
Your app, our data.
Three mock screens assembled from nothing but bundle assets — the images, the animation, and every piece of metadata come straight from the JSON. No retouching, no custom art.
- 1 Start in a high plank position.
- 2 Drive one knee toward your chest.
- 3 Quickly switch legs, driving the other knee forward.
UI mockups. Every image, name, and instruction comes straight from the dataset.
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.




Same file. No per-theme asset variants, no canvas tricks, no runtime compositing. images/classic/one-arm-kettlebell-floor-press-peak.webp.
Every rep, in motion.
Looping, transparent-background exercise animations — drop them on any surface, exactly like the stills. Standard tier.




Looping transparent WebP — 960px. One per animated exercise, in images/animations/<slug>.webp.
Around 88% are rendered motion (and rising); the rest alternate the start and peak poses — animation_type tells you which.
Grab the preview bundle first
A free sample of the paid dataset with the exact production assets — no signup, no watermarks. Browse it offline with the bundled viewer.
- A hand-picked sample of exercises with full texts — names, descriptions, instructions, muscles, equipment, MET values — in EN + DE + ES
- Both paid image styles at full 1024×1024: classic (transparent background) and flat — start/peak stills
- A looping transparent animation for every exercise in the sample — the Standard-tier format, verbatim
- index.html viewer — browse stills and animations side by side, offline
- CC BY-NC 4.0 license — evaluation and non-commercial use
Why WebP, not PNG or GIF.
WebP is the only common image format that does transparency and animation in the same file. PNG can't animate without APNG, which almost nothing renders reliably. GIF animates, but caps at 256 colours and 1-bit transparency — that's exactly why opaque competitor GIFs turn into a white box on a dark UI.
What it gets you
One extra step on some platforms
One format for both illustration styles and every animation in the bundle — nothing to convert on your end.
WebP doesn't fit your stack? Contact support and tell us what format you need. We'll see what we can do.
The full dataset — 511 exercises, one payment, no subscription.
Use it however you like.
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.", Full objects in the free preview bundle → 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.
A clear commercial license with defined tier scopes — your legal team can sign off in ten minutes.
What you can do
What you can't
One payment. No subscription.
Both paid tiers ship all 511 exercises — Standard adds transparent backgrounds, animations, formats, and AI data.
- All 511 exercises in two illustration styles — classic (3D-render) and flat — both with solid backgrounds, 1024×1024
- EN + DE + ES · muscle & equipment diagrams · MET values
- JSON bundle includes equipment, muscle groups & curated exercise relations.
- Everything in Starter, plus:
- Classic-style images now with a true transparent background — plus looping animations
- Workout templates · AI embeddings
- SQLite + TypeScript types
- Need a different image size or aspect ratio?
- A different art style, colors, or your brand's look?
- Need additional exercises or other extras?
- Need an invoice or a custom contract?