cmi5 — what it actually requires, and the tools that support it
The xAPI profile that supplies what xAPI deliberately left out: how an LMS launches a course and how the two agree it is finished.
Written and maintained by the scorm-tools.com editor. 14 listed tools state support.
What cmi5 is
cmi5 answers the question xAPI leaves open. It is a profile — a set of rules layered on top of xAPI, not a separate protocol — that defines a course structure file, a launch mechanism, and a fixed vocabulary of nine verbs.
A cmi5 package is a ZIP with a cmi5.xml at its root describing a course made of Assignable Units. The LMS launches an AU with a URL carrying an endpoint, an authorisation token, a registration and an activity id, so the AU knows which LRS to write to and under whose identity. From there it sends ordinary xAPI statements, but the ones that decide the outcome come from a defined set: launched, initialized, completed, passed, failed, terminated, satisfied, waived and abandoned. Moving-on criteria in the course structure state which of those the LMS should treat as success.
The practical summary: cmi5 gives you SCORM’s launch-and-report contract with xAPI’s data model, and without SCORM’s dependence on sitting in a parent browser window. Content can run outside the LMS frame, on a device, or offline and synchronise later. What it does not give you is SCORM’s sequencing, or SCORM’s near-universal support — which is what the tool list below is for.
Versions and what changed
| Version | Released | What changed |
|---|---|---|
| AICC drafts | 2012–2015 | Started at the AICC as the successor to its own CMI work, then transferred to ADL when the committee wound down. |
| v1.0 "Quartermaster" | June 2016 | First released specification: course structure, launch, the nine-verb vocabulary and moving-on criteria. |
| CATAPULT | 2020–2021 | ADL project delivering the cmi5 conformance test suite, a best-practice guide and reference libraries — the point at which conformance became testable rather than assertable. |
Who says so
We link to the specification and to other people's registries. We do not run a conformance programme and we do not issue badges of our own: a claim here is registry-verified only when an official registry says so, and otherwise it is marked as the vendor's statement or as our own check on a date.
Specification
Registry
- ADL CATAPULT (cmi5 test suite and player)Registry retired Nov 2025
ADL’s cmi5 conformance test suite, player and course examples. The hosted Adopter Registry that used to publish results was retired on 18 November 2025, so cmi5 conformance is now something a vendor demonstrates rather than something a registry attests. That is the single biggest reason cmi5 claims in this directory are marked vendor-stated far more often than verified.
Tools that support cmi5
Grouped by what the tool does, and within each group ordered by how well the claim is evidenced: registry entries first, then facts we checked ourselves, then the vendor's own statement.
Authoring tools & course frameworks
| Tool | Evidence | Licence | Pricing |
|---|---|---|---|
| CourseCodeCode-first course framework and CLI that packages to SCORM, cmi5 and LTI 1.3 | editor-checked— source, opens in a new tab Checked | MIT | Open source |
| LessonKitAuthor courses as React components, then export SCORM, xAPI or cmi5 from the same codebase | editor-checked— source, opens in a new tab Checked | Apache-2.0 | Open source |
Testing, validation & conformance
| Tool | Evidence | Licence | Pricing |
|---|---|---|---|
| PrismUnzips a SCORM, AICC, cmi5 or xAPI package and runs axe-core over every page in it | editor-checked— source, opens in a new tab Checked | MIT | Open source |
Packagers, SDKs & libraries
| Tool | Evidence | Licence | Pricing |
|---|---|---|---|
| SCORM Cloud API v2 clientsRustici's generated client libraries for the SCORM Cloud REST API, in six languages | editor-checked— source, opens in a new tab Checked | Apache-2.0 | Open source |
| scorm-kitA nine-command CLI that lints, diffs and audits SCORM packages before upload | editor-checked— source, opens in a new tab Checked | MIT | Open source |
| TesseraAuthor a course as Svelte pages, then export the same source as SCORM, cmi5 or xAPI | editor-checked— source, opens in a new tab Checked | MIT | Open source |
| eLearning Module ParserJava library that detects and parses SCORM, AICC, cmi5 and xAPI packages into typed metadata | vendor-stated— source, opens in a new tab Checked | Apache-2.0 | Open source |
LMS & LMS plugins
| Tool | Evidence | Licence | Pricing |
|---|---|---|---|
| ILIASGerman open-source LMS carrying SCORM 1.2, SCORM 2004 and cmi5 objects in core | editor-checked— source, opens in a new tab Checked | GPL-3.0 | Open source |
xAPI & cmi5
| Tool | Evidence | Licence | Pricing |
|---|---|---|---|
| @xapi/cmi5A typed JavaScript client that handles the cmi5 handshake for you inside a course | editor-checked— source, opens in a new tab Checked | MIT | Open source |
| CATAPULTADL's cmi5 player, content test suite and LMS test suite in one repository | editor-checked— source, opens in a new tab Checked | Apache-2.0 | Open source |
| cmi5 Client Library (ADL)ADL's archived JavaScript wrapper and example AU for the content side of cmi5 | editor-checked— source, opens in a new tab Checked | Apache-2.0 | Open source |
| cmi5.jsRustici's JavaScript runtime for the assignable-unit side of a cmi5 course | editor-checked— source, opens in a new tab Checked | Apache-2.0 | Open source |
| cmi5launch for MoodleADL's Moodle activity module that launches cmi5 content via the CATAPULT player | editor-checked— source, opens in a new tab Checked | Apache-2.0 | Open source |
| RapidCMI5Desktop authoring tool that outputs cmi5 packages, aimed at TLA programmes | editor-checked— source, opens in a new tab Checked | AGPL-3.0 | Open source |
Choosing between them
cmi5 or SCORM 2004?
cmi5 if the content needs to run outside the LMS window, work offline, or record more than the SCORM data model can hold. SCORM 2004 if you need sequencing, or if the target LMS is one of the many that still does not accept a cmi5 package.
cmi5 or plain xAPI?
Use cmi5 whenever an LMS is launching the content. Plain xAPI is for events that have no launching LMS at all — an app, a device, a workflow — where there is nothing to agree a completion contract with.
Questions people ask about cmi5
Is cmi5 a replacement for SCORM?
It is the closest thing to a like-for-like replacement, because it covers packaging, launch and completion the way SCORM does. Whether it can replace SCORM for you depends entirely on whether your LMS accepts it.
What is an Assignable Unit?
The smallest piece of a cmi5 course an LMS can launch and track — roughly what a SCO is in SCORM. A course structure lists its AUs and the criteria for moving on from each.
Which verbs does cmi5 define?
Nine: launched, initialized, completed, passed, failed, terminated, satisfied, waived and abandoned. Content may send other xAPI statements freely, but only these decide the cmi5 outcome.
Does cmi5 need an LRS?
Yes. The LMS must provide an LRS endpoint at launch, and the AU reports to it. Some LMSs embed one; others delegate to a separate LRS.
How do I test a cmi5 package?
ADL’s CATAPULT project publishes a conformance test suite for both course packages and LMS implementations. It is the closest thing to an official answer, and it is free.
Why do so few LMSs support cmi5?
Because supporting it means implementing or integrating an LRS and a launch flow, not just accepting a ZIP. That is a larger change than adding another SCORM version, so adoption has been slower than the specification’s age suggests.