---
title: "Cmi5 Js"
description: "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."
canonical_url: "https://scorm-tools.com/tools/cmi5-js"
last_updated: "2026-10-31T10:22:02.154Z"
---

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.
