Fitness

Exercises Dataset: 1,324 fitness exercises in JSON, with 10 languages

Exercises Dataset: 1,324 fitness exercises in JSON, with instructions in 10 languages, for app builders. Code is MIT; the Gym visual media has its own terms.

Project facts

GitHub Ecosystem
Repositorygithub.com/hasaneyldrm/exercises-dataset
Language
HTML
Stars
23,111
Data checked
2026-10-21

Snapshot figures reflect the check date and may change over time.

Generated card, not a screenshot: Exercises Dataset has 1,324 exercises and 10 instruction languages, with MIT for code and Gym visual terms for the media

Building a workout tracker means typing in exercise names, equipment, target muscles and instructions, one at a time. Exercises Dataset (hasaneyldrm/exercises-dataset on GitHub) is a fitness dataset of 1,324 exercises in one JSON array, with instructions in 10 languages. Its most useful detail is how those instructions are stored: each language has one full string and an ordered list of steps, so an app can show either. A Chinese WeChat account, GitHub科技, featured it on October 21, 2026, and we checked its claims against the README, the LICENSE and the data file.

Core features

Exercises Dataset has five parts, listed in the order a builder is likely to need them.

  • Structured JSON with a schema: data/exercises.json is one array of 1,324 objects, and data/exercises.schema.json describes each field in JSON Schema (draft 2020-12). We checked every record: each has the same 15 keys and nothing extra. There are no sets, reps or weights to build a plan from.
  • Ten instruction languages in two shapes: English, Spanish, Italian, Turkish, Russian, Chinese, Hindi, Polish, Korean and French. Each language has a string (instructions) and a step array (instruction_steps). English runs from 4 to 11 steps, and no non-English text is a copy of the English one.
  • Equipment, body part and target: body_part has ten values, led by upper arms (292) and upper legs (227). equipment has 28 values, with body weight (325) and dumbbell (294) first, then cable (157) and barbell (154). band (54) and resistance band (7) are separate values, so a filter needs its own mapping.
  • A thumbnail and a GIF for every exercise: 1,324 JPEG thumbnails and 1,324 GIFs, all 180×180. Every GIF has between 12 and 54 frames. NOTICE.md says Gym visual owns this media, and this entry uses none of it.
  • A setup guide and an offline browser: The README says setup.html covers CREATE TABLE statements for four databases, builds an import file with 1,324 INSERT statements in the browser, gives API examples in seven call styles, and includes a prompt for ChatGPT, Claude or Gemini. index.html is one 16 MB page that searches and filters without a server, and it does not read data/exercises.json. We checked key strings in both files but did not run either page.

Typical use cases

Exercises Dataset fits three kinds of builder.

  • An indie developer shipping a workout tracker: loads the JSON, filters on equipment for a bodyweight-only mode, and uses the English steps for the first release.
  • A backend engineer who needs an exercise API fast: runs the SQL from setup.html, then pastes its prompt into a chat model to scaffold endpoints. The generated code still needs testing, and we did not run the prompt.
  • A team building a Chinese or Korean interface: reads instructions.zh or instructions.ko directly, instead of writing 1,324 instruction sets from scratch. The README does not say how the translations were made or checked, so spot-check a sample before launch.

Licensing

Exercises Dataset has two licenses, and anyone reusing it needs to keep them apart.

ContentWhereLicense
Code, tooling, data structure, instruction text and translationsLICENSE, MIT partMIT
Thumbnails (1,324) and GIFs (1,324)images/ and videos/; see NOTICE.md© Gym visual, under its own terms

The MEDIA EXCEPTION at the end of LICENSE says that cloning the repository gives no rights to the media. Each record’s attribution field reads ”© Gym visual — https://gymvisual.com/”, and reuse should keep it. To use a picture, get your own permission from Gym visual or follow its terms. GitHub’s license detector returns NOASSERTION (name: Other), so the repository is not classified as MIT. Our earlier openGym entry also flags the image and animation rights as disputed.

Quick start

The README has no install step, so the clone command below is standard Git. Cloning also downloads about 129 MB of GIFs. If you only need data, data/exercises.json on its own is about 17 MB.

git clone https://github.com/hasaneyldrm/exercises-dataset.git
cd exercises-dataset

The README’s Python snippet makes a good first run. It loads the data file and prints the count:

import json

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

print(f"Total exercises loaded: {len(exercises)}")

It prints Total exercises loaded: 1324. To browse, open index.html in any browser.

Summary

Exercises Dataset suits developers who need a structured exercise library and plan to write the training logic themselves. It fits poorly if you want a ready training plan, sets and reps, or coaching. The data has none of those fields, and the README describes the set as being for educational and research use.

The code and data are MIT. The media has separate terms. The translations come with no stated review process. The repository’s About text still says six languages, while the README, the schema and the data file all show ten, and this entry follows the data.

Two more things to check. The equipment field is not normalized, so band and resistance band count separately. All 1,324 created_at values fall within one second on March 18, 2026, which marks the import batch rather than any per-exercise check. The README calls this dataset the data layer for the LogPress app; we did not look at LogPress itself.

The repository was created on March 18, 2026, last pushed on July 16, and is not archived. As of October 21, 2026 it had 23,111 stars and 2,946 forks. We read the README, LICENSE, NOTICE and data file, checked key strings in both HTML files, and ran neither page nor any of the SQL or API code.