TinCanJS
Rustici's original JavaScript xAPI library — still the most-linked, unchanged since 2016
The facts
- Licence
- Apache-2.0 — OSI approved
- Pricing
- Open source Price source for TinCanJS, opens in a new tab
- Deployment
- Embedded in your own application
- Platforms
- Library · Web
- Documentation
- rusticisoftware.github.io/TinCanJS/ — 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 | TinCan.versions() returns 1.0.2, 1.0.1, 1.0.0, 0.95 and 0.9. There is no 1.0.3 and no IEEE 9274.1.1 (xAPI 2.0) support. | |
| cmi5 | No | editor-checked · 24 Aug 2026 | It is an LRS client only — no cmi5 launch parameters, no AU lifecycle, no course structure handling. | |
| 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
TinCanJS is the library most xAPI tutorials still import. Rustici Software wrote it alongside the specification itself, and it does the LRS-client job properly: statement, actor, verb, activity and result objects with sensible constructors, synchronous and asynchronous calls, state and activity-profile documents, IE-era cross-origin fallbacks, and multipart attachment support that works end to end in Node and modern browsers.
It is also finished, in the unhappy sense. The last commit on the default branch is from September 2016, matching the final npm release, 0.50.0. The version list in the source stops at xAPI 1.0.2 — before 1.0.3, and well before the IEEE 9274.1.1 revision — so a statement the newer specification allows but 1.0.2 does not is beyond it. Twenty-eight issues are open, the oldest from 2012. The repository is not archived, which is arguably the least helpful state: nothing signals to a newcomer that no fix is coming.
What it remains good for: reading, because the object model is a clear map of the specification; and maintaining existing content that already depends on it, where the risk of swapping the library exceeds the risk of leaving it.
What it is not good for: new work. Choose a library that has seen a commit since the specification last moved, and keep TinCanJS as a reference.
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