MuscleWiki API vs wger

wger is a free, AGPL-3.0 workout and nutrition application that you host and run yourself. Its REST API comes with the application rather than being sold as a product of its own.

wger is an application you install, patch and operate; the MuscleWiki API is a managed service you call. On 14 September 2026 the project's own public instance at wger.de served 78 videos and 374 exercise images across 865 exercises, media there contributed by the community. Ours is produced for the catalogue: 7,766 MP4 clips across 1,943 exercises, male and female, front and side. We add 14 languages at parity and commercial terms with support behind them. wger is free and open source, and running the software yourself is something we do not offer at any price.

Sources: wger README: licence, self-hosting and features, wger.de API: exercise count, wger.de API: video count, wger.de API: exercise image count, wger docs: using the API

Every claim about another vendor on this page was fetched from that vendor’s own public documentation. This one was verified 14 September 2026. Figures change; if you are reading this long after that date, check the linked sources before you rely on it.

Side by side

Every figure in the wger column links to the page we read it on. Where we could not fetch a fact from a public source, there is no row for it.

The MuscleWiki API and wger compared across 14 axes, with a source link for every claim about wger.
AxisMuscleWiki APIwger
CostPublished plans $10 to $199.99 per month; a negotiated Custom plan for anything outside the catalogueFree: "100% Free & Open Source", AGPL-3.0-or-laterSource: wger README: licence, self-hosting and features
Hosting modelManaged by us. There is no infrastructure to run, nothing to upgrade and no CDN to operateSelf-hosted ("basically just a docker compose up -d away"), or their public instance at wger.deSource: wger README: licence, self-hosting and features
Exercises in the catalogue1,943 (counted from the data we serve, 10 September 2026)865 on wger.de, the project's public instance, on 14 September 2026. A self-hosted instance holds whatever you sync or importSource: wger.de API: exercise count
Video7,766 MP4 clips: 4 for every exercise, male and female, front and side. Every clip carries a matching thumbnail78 videos on wger.de on 14 September 2026. Media is contributed by the community rather than produced for the catalogueSources: wger.de API: video count, wger README: licence, self-hosting and features
Still imagesOne thumbnail per video (7,766), plus 15,144 bodymap images (Professional plan or higher)374 exercise images on wger.de on 14 September 2026Source: wger.de API: exercise image count
Languages14 languages at parity: every exercise carries its name in all 14 and returns the same instruction steps in all 14, so no language returns a thinner record than English (non-English needs the Growth plan or higher)33 languages are configured in their API, and translation is community work via Weblate, so coverage depends on what volunteers have translatedSources: wger.de API: configured languages, wger README: licence, self-hosting and features
Translation coverageUniform: every exercise carries its name in all 14 languages and returns the same instruction steps in all 14, so a non-English caller never receives a thinner record than an English one (non-English needs the Growth plan or higher)3,323 exercise translation records in total, across 865 exercises and 33 configured languages (14 September 2026)Sources: wger.de API: exercise translation count, wger.de API: exercise count, wger.de API: configured languages
Routines and workouts32 curated routines and 92 workouts as read-only API resources, with sets, reps and exercise references (Professional plan or higher)Routines exist and have their own API, but they are user-owned objects that require authentication. It is a routine builder rather than a curated catalogue you can read anonymouslySource: wger docs: using the API
Taxonomy depth18 equipment categories and 45 primary muscle groups8 exercise categories, 12 equipment types and 15 muscles on wger.de (14 September 2026)Sources: wger.de API: exercise categories, wger.de API: equipment list, wger.de API: muscle list
AuthenticationA single X-API-Key header on every request. Your server can exchange that key for a short-lived media token, so a native player fetches /stream/ URLs with no header and the key never ships inside an app binaryPublic endpoints such as the exercise list need no authentication. For user-owned objects, a JWT bearer token (10-minute access, 120-day refresh in the Docker default) or a permanent Authorization: Token … for personal scriptsSource: wger docs: using the API
Rate limiting and quotas500 a month free (Playground only), then 1,000 at $10 up to 300,000 at $199.99 a monthA few sensitive endpoints are throttled (login 10/min, ingredient list 120/min and similar); "all other endpoints are unthrottled". There is no monthly quotaSource: wger docs: using the API
LicenceCommercial licence for API use under our terms; every paid plan includes commercial-use rightsApplication code AGPL-3.0-or-later; exercise and ingredient data under Creative Commons per entry; documentation CC-BY-SA-4.0Source: wger README: licence, self-hosting and features
Media URLs and cachingStable, deterministic media URLs. Caching allowance: text metadata up to 30 days, thumbnails 24 hours on-device only, video and bodymaps served no-storeYou host the media yourself, or point at wger.de, so the caching policy is yoursSource: wger README: licence, self-hosting and features
SupportCommercial support, with priority response on the higher plansCommunity support via Discord and the GitHub issue trackerSource: wger README: licence, self-hosting and features

Sources for our column

Exercise, video, language and bodymap counts all come from the dataset the API serves. Every figure in the wger column links to the page it came from, in the cell that makes the claim.

Where the MuscleWiki API and wger differ

The handful of differences that actually decide it, and what each one costs whoever picks the other side.

78 videos against 7,766
On 14 September 2026 the project's own public instance at wger.de held 865 exercises with 78 videos and 374 exercise images. Media there is contributed by the community rather than produced for the catalogue, so coverage follows what volunteers uploaded, and a self-hosted instance holds whatever its operator imports. Ours is shot to one specification: 7,766 clips, male and female, front and side.Sources: wger.de API: exercise count, wger.de API: video count, wger.de API: exercise image count, wger README: licence, self-hosting and features
33 configured languages, and what is in them
wger's API lists 33 configured languages, translated by the community through Weblate. On 14 September 2026 their API held 3,323 exercise translation records across 865 exercises and those 33 languages. Both numbers are here; we have not divided one by the other for you. We ship 14 at parity, which is a claim a short list can make and a long one usually cannot: no language returns a thinner record than English.Sources: wger.de API: configured languages, wger.de API: exercise translation count, wger.de API: exercise count, wger README: licence, self-hosting and features
Free software, and the cost of running it
wger describes itself as "100% Free & Open Source" under AGPL-3.0-or-later, and standing an instance up is, in their words, "basically just a docker compose up -d away". The licence really is free. What that command does not cover is the patching, the database, the media storage and whoever answers the page at 3am.Source: wger README: licence, self-hosting and features
Their licence lets you keep the data
Exercise and ingredient data on wger is Creative Commons licensed per entry and the code is AGPL, so you can fork it, bulk-export it and reshape it without asking anyone. Ours is licensed for use through the API; it is not handed over. If owning the dataset is a hard requirement, nothing further down this page closes that gap.Source: wger README: licence, self-hosting and features
Routines there are something a user builds
wger has a routine API, but routines on it are user-owned objects created by whoever is logged in. It is a routine builder. We publish 32 curated routines and 92 workouts as read-only resources with sets, reps and exercise references, so you can ship programmed training without asking users to build it first (Professional plan or higher).Source: wger docs: using the API
wger is a whole application
It also does routine building with progression rules, nutrition logging against Open Food Facts, body-weight tracking, native mobile apps and basic gym management. We sell exercise data for you to build on. Only one of those drops into an app you already have.Source: wger README: licence, self-hosting and features

Moving an existing wger integration to us

What actually changes in your code.

Who this section is for
Teams calling the public wger.de instance in production. Its unthrottled public endpoints make that easy to start doing and easy to keep doing by accident, and it puts your product on a server run by volunteers for their own project. If you run your own instance, the trade is a different one, and that comparison is above rather than here.Source: wger docs: using the API
Identifiers
wger exposes both an integer id and a uuid per exercise. Ours are stable integers starting at 1, but they are our IDs, so you will need a mapping table keyed on exercise name plus equipment, and a human to look at the ambiguous rows.Source: wger.de API: exercise count
Translations
wger returns translations as separate records you join by language. We take a lang parameter on every data endpoint and return one response per exercise. Where wger had no translation for a language, ours will have one: every exercise carries its name in all 14 and returns the same instruction steps in all 14.Sources: wger.de API: exercise translation count, wger docs: using the API
Authentication and quotas
Anonymous reads become authenticated reads: a data request needs X-API-Key, and you get a monthly call quota rather than an unthrottled endpoint. Budget for both.Source: wger docs: using the API

You can try every endpoint in the Playground before you commit, read the documentation, or check what each plan reaches on pricing.

Other comparisons