What Is the Body Part Coverage of the Exercises Dataset?

The Exercises Dataset provides comprehensive body part coverage across 10 distinct anatomical zones, with 1,324 exercises distributed from Upper Arms (292 exercises) down to Neck (2 exercises).

The Exercises Dataset by hasaneyldrm/exercises-dataset is a structured, multilingual collection designed for fitness applications and machine learning research. Understanding its body part coverage is essential for developers building workout recommendation engines, researchers analyzing exercise distributions, or data scientists training pose-estimation models.

Body Part Distribution in the Dataset

Each exercise record contains a mandatory body_part field that identifies the primary muscle region targeted. The distribution spans all major anatomical zones:

Body Part Muscle Focus Exercise Count
Upper Arms Biceps, triceps, forearms 292
Upper Legs Quadriceps, hamstrings, glutes 227
Back Lats, spinal erectors, rhomboids 203
Waist Core, obliques, hip flexors 169
Chest Pectoralis major/minor, serratus 163
Shoulders Deltoids, trapezius 143
Lower Legs Calves, ankle stabilizers 59
Lower Arms Forearms, wrist extensors 37
Cardio Aerobic movements 29
Neck Cervical muscles 2

These counts are documented in the repository's README.md under the statistics section, providing transparency for downstream users.

Schema Enforcement and Data Integrity

The body_part field is strictly controlled through JSON Schema validation. In data/exercises.schema.json, lines 72-83 define an enumeration that restricts body_part to exactly these 10 values:

{
  "body_part": {
    "type": "string",
    "enum": [
      "Upper Arms",
      "Upper Legs",
      "Back",
      "Waist",
      "Chest",
      "Shoulders",
      "Lower Legs",
      "Lower Arms",
      "Cardio",
      "Neck"
    ]
  }
}

This schema enforcement guarantees that no invalid or inconsistent body part values enter the dataset, making it reliable for programmatic consumption.

Analyzing Body Part Coverage Programmatically

Python: Standard Library Approach

import json
from collections import Counter

with open("data/exercises.json", encoding="utf-8") as f:
    exercises = json.load(f)

# Count occurrences of each body part

counts = Counter(ex["body_part"] for ex in exercises)

print("Body-part coverage:")
for part, cnt in counts.most_common():
    print(f"{part:12}: {cnt}")

Python: Pandas DataFrame Approach

import json
import pandas as pd

ex = json.load(open("data/exercises.json", encoding="utf-8"))
df = pd.DataFrame(ex)

print(df["body_part"].value_counts())

JavaScript: Node.js Tally

const exercises = require("./data/exercises.json");

// Tally body-part frequencies
const counts = exercises.reduce((acc, ex) => {
  acc[ex.body_part] = (acc[ex.body_part] || 0) + 1;
  return acc;
}, {});

console.log("Body-part coverage:", counts);

Key Source Files for Body Part Data

File Purpose
data/exercises.json Full dataset of 1,324 exercises with body_part per record
data/exercises.schema.json JSON Schema defining allowed body_part enumeration values
README.md Human-readable statistics and body part distribution table
index.html Interactive browser with body part filtering capability

The index.html file provides a client-side interface where users can filter exercises dynamically by body part, demonstrating practical application of this coverage model.

Equipment vs. Body Part Relationship

Approximately 25% of exercises are body-weight only (no equipment required), while the remaining 75% distribute across dumbbells, barbells, cables, machines, and other equipment types. This cross-categorization enables multi-dimensional filtering—for example, retrieving all "Back" exercises that use only "Dumbbells" or finding body-weight "Cardio" movements.

Summary

  • The Exercises Dataset covers 10 body parts through schema-enforced enumeration
  • 1,324 total exercises range from Upper Arms (292) to Neck (2)
  • Validation in exercises.schema.json guarantees data consistency
  • Multiple programmatic interfaces (Python, JavaScript) enable custom analysis
  • Interactive filtering available via index.html for immediate exploration

Frequently Asked Questions

How many body parts does the Exercises Dataset cover?

The dataset covers 10 distinct body parts: Upper Arms, Upper Legs, Back, Waist, Chest, Shoulders, Lower Legs, Lower Arms, Cardio, and Neck. This enumeration is hard-coded in the JSON Schema at data/exercises.schema.json lines 72-83.

Which body part has the most exercises in the dataset?

Upper Arms leads with 292 exercises, representing approximately 22% of the total collection. This is followed by Upper Legs (227) and Back (203), reflecting common fitness priorities around arm strength, leg power, and posterior chain development.

Can I filter exercises by body part in the provided interface?

Yes. The repository includes index.html, an interactive client-side browser that supports real-time filtering by body part, equipment type, and other attributes. This file loads data/exercises.json directly and requires no server-side processing.

Is the body part field validated in the dataset?

Absolutely. The body_part field is constrained by a strict enum in exercises.schema.json. Any record attempting to use a value outside the 10 defined body parts will fail schema validation, ensuring downstream applications receive predictable, consistent data.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →