cmi5.js
Rustici's JavaScript runtime for the assignable-unit side of a cmi5 course
The facts
- Licence
- Apache-2.0 — OSI approved
- Pricing
- Open source
- Deployment
- Embedded in your own application
- Platforms
- Library · Web
- Vendor
- Rustici Software
- Headquarters
- United States
- Documentation
- github.com/RusticiSoftware/cmi5.js — opens in a new tab
Standards support
Every line says where the claim came from. We do not test conformance ourselves and we issue no badge of our own.
| Standard | Supported | Provenance | Checked | Note |
|---|---|---|---|---|
| SCORM 1.2 | Not stated | — | — | — |
| SCORM 2004 | Not stated | — | — | — |
| xAPI | Yes | editor-checked · 24 Aug 2026— source, opens in a new tab | Sends X-Experience-API-Version 1.0.3 on every request. It talks to an LRS only through the cmi5 statement flow, so it is not a general xAPI client. | |
| cmi5 | Yes | editor-checked · 24 Aug 2026— source, opens in a new tab | Implements the AU side: parses the launch query string, fetches LMS LaunchData and the learner preferences state, and sends the Initialized, Completed, Passed, Failed and Terminated statements with the cmi5 moveOn context category and masteryScore extension. Read in source, August 2026. | |
| AICC | Not stated | — | — | — |
| LTI | Not stated | — | — | — |
- Claimed
- — the vendor states it. We have not confirmed it.
- Checked
- — an editor confirmed it on the date shown.
- Verified
- — an official registry lists it, and we link to the entry.
Editor's notes
cmi5.js is the small, specific piece of the cmi5 puzzle that content developers actually need. When an LMS launches an assignable unit it passes an endpoint, an auth token, an activity ID, a registration and a fetch URL on the query string; the AU then has to exchange the fetch URL for credentials, retrieve LMS LaunchData, respect the launch mode, and emit a precisely shaped sequence of statements ending in Terminated. This library does all of that behind an API of a dozen methods.
The details it handles are exactly the ones people get wrong by hand: refusing to send Completed, Passed or Failed statements outside Normal launch mode, attaching the moveon context category, carrying masteryScore as the documented extension, and merging the LMS-supplied context template into every statement.
It is published by Rustici, who wrote much of cmi5, and it is Apache-2.0. It has not been touched since July 2023, sitting at version 3.2.0 with six stars — a low count for a library published by the specification's own authors. Nothing has broken — the specification has not moved and the code has no runtime dependencies — but nothing will be fixed either, and it ships as a webpack bundle with no type definitions, which is friction in a TypeScript codebase.
Reasonable to use today. Read it before you do, and expect to maintain your own copy.
Alternatives to cmi5.js
Chosen by hand because they solve the same problem, not because they share a keyword.
Listed on scorm-tools.com
Maintainers and vendors are welcome to show the listing badge in a README or on a product page. It is free, it does not require a claim, and there is nothing to buy.
Get the embed code