Methodology & Data Sources
Open data: exercise-catalog-statistics.csv (Free Exercise DB extract · CC BY 4.0).
Editorial Workflow
Content on PlainExercise is built from open-licensed source data. Raw data from Free Exercise DB (CC0) is normalized into a consistent structure; narrative framing, common mistakes, safety notes, progression paths, who-it-is-for guidance, muscle and equipment taxonomy reconciliation, is generated from the structured record and the source instructions, anchored to the source rather than invented. Reference terminology aligns with NIH/NLM MeSH and CDC physical activity guidelines. Where the upstream source is ambiguous, the field is annotated or omitted rather than guessed, and synthetic equipment variations are clearly marked as generated.
We do not accept payment for coverage, placement, or rankings. PlainExercise publishes educational reference material - not medical, physical-therapy, or personal-training advice.
Our Data Sources
PlainExercise's live exercise catalogue is built from one open-licensed
public corpus. We do not scrape commercial sites, influencer blogs, or
closed training platforms. Every exercise row in the shipped database
carries source=free-exercise-db.
- Free Exercise DB - a public-domain dataset (CC0) maintained at github.com/yuhonas/free-exercise-db. It documents roughly 800 exercises with fields for name, force type (push/pull/static), level (beginner/intermediate/expert), mechanic (compound/isolation), equipment, primary muscles, secondary muscles, category, and step-by-step instructions.
- Compendium of Physical Activities (Ainsworth et al., 2011) - MET values for the calories-burned calculator only; not mixed into the exercise catalogue rows.
Free Exercise DB has been under active maintenance for years and is widely used in the open-source fitness community. We chose it because CC0 permits free redistribution and because its field coverage is observably higher than most scraped alternatives.
How We Curate and Normalize the Data
We transform raw upstream data into searchable pages through the following stages:
- Download. We pull the latest release of Free Exercise DB catalogue. Downloads are tracked by release hash so we can reproduce any build.
- Normalize and deduplicate. Exercises with matching normalized names are collapsed to a single canonical row. Ambiguous upstream muscle tags are annotated or omitted rather than guessed.
- Slugify. Every exercise receives a URL-safe slug derived from its name (e.g., "Barbell Back Squat" → "barbell-back-squat"). Slugs are stable across rebuilds so deep links do not break.
- Infer muscle taxonomy. We map Free Exercise DB muscle labels into a single canonical taxonomy of about 20 muscle groups (quadriceps, hamstrings, chest, biceps, and so on). Each exercise is tagged with one primary muscle and zero or more secondary muscles. Where evidence is mixed, we favor the more conservative tagging: a biceps curl is classified as biceps-only even though forearm flexors also work.
- Generate variations. For each parent exercise we compute plausible equipment variations (e.g., "barbell bench press" → "dumbbell variation", "resistance band variation", "bodyweight variation"). Variations are synthetic, they are not separately sourced, and are clearly marked as such on the detail pages.
- Assemble workouts. Workouts are pre-built routines constructed from the exercise corpus along three axes: goal (strength/hypertrophy/endurance), level (beginner/intermediate/advanced), duration (20/45/60 minutes), and equipment profile (no-equipment/home-gym/full-gym). The exercises in each workout are chosen deterministically from the database.
- Frame with editorial context. Every exercise detail page gets an original "Common Mistakes", "Safety Notes", "Who This Is For", and "Progression Path" section written by our editorial process. These sections are never scraped and are the primary value-add over the raw source data.
- Index. The final database is loaded into a read-only SQLite file with full-text indexes on exercise name, muscle, and equipment. SQLite is served inside the application container for single-digit-millisecond query latency.
Corpus placement (#N of M)
Every published exercise, muscle, and equipment page states where that entity sits in PlainExercise's own Free Exercise DB corpus. Placement is computed with SQL ROW_NUMBER over the same rows the detail pages render - never hand-picked and never invented as a quality score.
- Exercise documentation depth (steps) - rank among exercises with at least one instruction step, highest step count first. This measures how thoroughly the upstream record documents the movement, not how effective it is.
- Exercise documentation depth (text length) - rank among the same documented set by LENGTH(instructions_json), longest first. Step count and character length often diverge when some sources pack denser prose into fewer steps.
- Muscle inventory - rank among muscle groups with exercise_count > 0 on cache_muscle_counts, most tagged exercises first (matches the /muscles listing order).
- Equipment inventory - rank among equipment classes with exercise_count > 0 on cache_equipment_counts, most tagged exercises first (matches the /equipment listing).
The Callout on each detail page names the applicable signals and links here so the derivation stays visible.
Data Currency and Update Schedule
Exercise taxonomy moves slowly. A bench press in 2000 is the same bench press in 2026. We refresh the underlying database on an opportunistic basis, typically when:
- Free Exercise DB publishes a new release with added or corrected records.
- A reader reports a tagging or instruction error that we confirm.
- We add a new entity type (e.g., a new workout goal or equipment profile).
Editorial content is reviewed at least annually by the PlainExercise editorial process. Each exercise detail page carries a "last updated" footer so you can tell at a glance when the framing was last touched.
Corrections and public changelog
PlainExercise maintains a typed corrections pathway and a public record of material changes. Readers can report a data issue from any data page footer or the contact page; the full process is documented in our editorial & corrections policy.
When we confirm a correction, refresh upstream data, or ship a methodology change that affects published figures, we add a dated entry to the data changelog. Entries cite the repository commit that shipped the change, we never backfill or invent history.
- Expected turnaround: straightforward data-correction reports within 72 business hours.
- Upstream lag: when Free Exercise DB has not yet republished a fix, we may annotate the page while waiting for the next ETL refresh.
- Scope: the changelog covers data, derivation, and editorial-process changes, not routine dependency or styling commits.
Known Limitations
- No individualized programming. Our workouts are templates, not personal training plans. They cannot account for your unique goals, injury history, recovery capacity, age, training age, sleep, or nutrition. If you want a plan built for you, hire a certified strength coach.
- No video or visual demonstration. Step-by-step text is our medium. For movements where proper technique is critical to safety (heavy squat, deadlift, Olympic lifts, power cleans), a text description is a starting point, not a replacement for in-person coaching.
- Synthetic variations. Variation pages combine a parent exercise with an alternate equipment profile. These are algorithmically generated and a few may not make practical sense (e.g., a "cable variation" of a bodyweight pistol squat is nominally valid but rarely useful). We flag edge cases in the variation notes where possible.
- Coverage gaps. The Free Exercise DB is comprehensive for common strength and conditioning movements but under-represents certain niches (rehab exercises, athletic plyometric drills, obscure kettlebell flows). We document what we have and do not attempt to fabricate coverage we don't.
- English-only. We publish in English only. Translations are not in scope.
Medical Disclaimer
This site does not provide medical, physical-therapy, or personal-training advice. Exercise carries inherent injury risk. Consult a physician or certified trainer before starting any new exercise program, especially if you have pre-existing medical conditions, recent surgery, cardiovascular concerns, joint injuries, or are pregnant. Discontinue any exercise that causes sharp or persistent pain.
Attribution and Licensing
Raw exercise instructions derived from Free Exercise DB retain their upstream CC0 license and need no attribution to us. Data derived from Our original editorial content - guides, common mistakes, safety notes, progression paths, site design, is copyright PlainExercise but may be quoted briefly with attribution and a link back to the original page.
Frequently Asked Questions
Where does PlainExercise's data come from?
Every live exercise row in this extract carries source=free-exercise-db (Free Exercise DB, CC0). Reference terminology aligns with NIH/NLM MeSH, peer-reviewed exercise science literature, and CDC physical activity guidelines. We do not scrape commercial sites or influencer content.
How often is the reference reviewed or updated?
Exercise taxonomy moves slowly, a barbell squat in 2000 is the same barbell squat in 2026. We refresh the underlying database opportunistically when Free Exercise DB publishes corrections or additions, when a reader reports a confirmed error, or when a new entity type is added. Editorial content (guides, mistake lists, safety notes) is reviewed at least annually. Each detail page carries a "last updated" footer.
How do you verify accuracy of exercise instructions?
Every live exercise row in this extract carries source=free-exercise-db. Ambiguous upstream fields are annotated or omitted rather than guessed. Synthetic equipment variations are algorithmically generated and clearly marked as such. Editorial framing, common mistakes, safety notes, progression paths, is generated from the structured record and the source instructions, anchored to the source: no instructions are fabricated, and where the upstream source is ambiguous, the field is annotated or omitted rather than guessed.
Is this medical or training advice?
No. PlainExercise is a structured educational reference, not medical, physical-therapy, or personal-training advice. Exercise carries inherent injury risk. Consult a physician or certified trainer before starting any new exercise program, especially if you have pre-existing medical conditions, recent surgery, cardiovascular concerns, joint injuries, or are pregnant. Discontinue any exercise that causes sharp or persistent pain.
Contact
Questions, corrections, or methodology feedback? Email hello@plainexercise.com or use the contact form.