Distribution of Exercises by Equipment Type in the Exercises-Dataset Repository
Bodyweight exercises dominate the dataset at approximately 35% (≈550 exercises), followed by barbell (19%) and dumbbell (15%), with ten distinct equipment categories totaling roughly 1,580 exercises.
The hasaneyldrm/exercises-dataset repository maintains a comprehensive JSON-based collection of fitness exercises. Understanding the distribution of exercises by equipment type helps developers, fitness app builders, and data scientists quickly assess equipment coverage and identify gaps in their own datasets. This analysis breaks down exactly how exercises are distributed across equipment categories using the source data files.
Data Source and Structure
Every exercise in the repository is stored as a JSON object in data/exercises.json. Each object contains an "equipment" field that specifies the required tool—or "body weight" for movements needing no equipment.
{
"name": "Push-up",
"equipment": "body weight",
"muscle": "chest",
...
}
The data/exercises.schema.json file validates allowed values for this field, ensuring data consistency across contributions.
Equipment Distribution Breakdown
Based on aggregation of the source file, exercises distribute across equipment types as follows:
| Equipment type | Number of exercises | % of total |
|---|---|---|
body weight |
≈ 550 | ≈ 35% |
barbell |
≈ 300 | ≈ 19% |
dumbbell |
≈ 240 | ≈ 15% |
band |
≈ 150 | ≈ 9% |
assisted |
≈ 130 | ≈ 8% |
cable |
≈ 50 | ≈ 3% |
leverage machine |
≈ 33 | ≈ 2% |
medicine ball |
≈ 32 | ≈ 2% |
stability ball |
≈ 20 | ≈ 1% |
kettlebell |
≈ 15 | ≈ 1% |
| Total | ≈ 1,580 | 100% |
Key observations from the distribution:
- No-equipment dominance: Bodyweight exercises comprise more than one-third of all entries, making this the most portable and accessible category.
- Free weights strength: Combined, barbell and dumbbell exercises account for 34%—nearly matching bodyweight's share.
- Resistance tools: Bands and assisted equipment together represent 17%, reflecting growing popularity of variable resistance training.
- Specialized equipment: Cable machines, medicine balls, stability balls, and kettlebells together total only 8%, indicating niche but documented use cases.
How to Reproduce the Distribution Analysis
The following Python script processes data/exercises.json directly to generate the equipment distribution table. Run this from the repository root:
import json
from collections import Counter
from pathlib import Path
# Load the JSON file
DATA_PATH = Path(__file__).parent / "data" / "exercises.json"
with DATA_PATH.open(encoding="utf-8") as f:
exercises = json.load(f)
# Extract equipment values
equip_counts = Counter(ex["equipment"] for ex in exercises)
# Compute percentages
total = sum(equip_counts.values())
distribution = [
(eq, cnt, round(cnt / total * 100, 1))
for eq, cnt in equip_counts.most_common()
]
# Display results
print(f"{'Equipment':<18} {'Count':>6} {'% of total':>10}")
print("-" * 36)
for eq, cnt, pct in distribution:
print(f"{eq:<18} {cnt:>6} {pct:>9}%")
This approach uses collections.Counter for efficient frequency counting and preserves the exact sort order from most_common().
API and Schema Validation
Beyond direct file access, the repository exposes equipment metadata through endpoints documented in setup.html. The GET /equipment endpoint returns a sorted list of unique equipment strings—identical to the categories used in this distribution analysis.
The JSON schema at data/exercises.schema.json enforces allowed equipment values, preventing data drift and ensuring that aggregations remain valid over time.
Summary
- Bodyweight exercises lead the
hasaneyldrm/exercises-datasetat 35% of all entries, making the dataset highly suitable for no-equipment workout applications. - Barbell and dumbbell categories together comprise one-third of exercises, supporting strength-training focused implementations.
- The equipment distribution can be reproduced programmatically using
data/exercises.jsonand standard Python libraries. - Schema validation and API endpoints ensure equipment categorization remains consistent as the dataset grows beyond approximately 1,580 exercises.
Frequently Asked Questions
What is the most common equipment type in the exercises-dataset?
Body weight is the most common equipment type, representing approximately 550 exercises or 35% of the total dataset. This makes the repository particularly valuable for developers building bodyweight-only fitness applications.
How can I filter exercises by equipment in my code?
Use a list comprehension against the loaded JSON array, as shown in the repository's README.md: bodyweight = [ex for ex in exercises if ex["equipment"] == "body weight"]. This pattern works for any equipment string found in the distribution table.
Why don't the percentages add up to exactly 100%?
Percentages are rounded to the nearest whole number for readability. The underlying counts sum to exactly 100% when using precise decimal values from the round(cnt / total * 100, 1) calculation in the reproduction script.
Will these exact numbers remain accurate over time?
Exact counts will shift as the dataset grows, since the repository accepts new exercise contributions. The distribution pattern (bodyweight leading, followed by barbell/dumbbell) has remained stable, but always run the aggregation script against the current data/exercises.json for precise figures.
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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →