xAPI — the Experience API, Learning Record Stores, and the tools that support it
A way to record that somebody did something, anywhere, and keep it in a store you control.
Written and maintained by the scorm-tools.com editor. 35 listed tools state support.
What xAPI is
The Experience API — xAPI, and Tin Can API before that — describes learning as statements rather than as course sessions. A statement has three required parts: an actor, a verb and an object, as in "Ilarion completed the fire-safety induction", plus optional result, context, timestamp and attachments. Statements are sent over HTTP as JSON to a Learning Record Store, which is any service implementing the xAPI endpoints for storing, querying and returning them.
The difference from SCORM is where the boundary sits. SCORM describes content running inside an LMS and reporting to that LMS. xAPI describes an event happening anywhere — a simulation, a mobile app, a piece of equipment on a factory floor, a classroom sign-in — reported to an LRS that need not be an LMS at all, and that can be queried by anything with credentials.
In exchange for that reach, xAPI says nothing about how content is packaged, how it is launched, how it learns which LRS to talk to, or what any verb means. That looseness is why profiles exist: cmi5 supplies the missing launch-and-package contract for course content, and other profiles fix vocabularies for particular domains. ADL stewarded the specification to 1.0.3; it is now maintained at IEEE.
Versions and what changed
| Version | Released | What changed |
|---|---|---|
| 0.9 / 0.95 | 2011–2012 | Project Tin Can drafts, published for comment. Some early products still carry the Tin Can name. |
| 1.0.0 | April 2013 | First stable release of the Experience API. |
| 1.0.1 | October 2013 | Corrections and clarifications. |
| 1.0.2 | 2014 | Further errata. |
| 1.0.3 | October 2016 | Final ADL release, and the version most products state support for. |
| 2.0 (IEEE 9274.1.1-2023) | 2023 | Stewardship moved to the IEEE Learning Technology Standards Committee; the specification was reorganised and published as an IEEE standard. |
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 LRS Conformance Test SuiteRegistry retired Nov 2025
The test itself, which anyone can run against an LRS. ADL retired the hosted Adopter Registry on 18 November 2025 as part of its lifecycle management, so there is no longer a public list of which products passed — only the suite, free to self-host. A vendor can still show you its own run; nobody publishes a neutral result.
- xapi.com adopters
A self-reported directory run by Rustici Software. It states plainly that entries are not conformance-tested, so we treat it as a vendor statement rather than verification.
Tools that support xAPI
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 |
| H5P (core PHP library)The framework behind H5P interactive content — not, on its own, a SCORM tool | editor-checked— source, opens in a new tab Checked | GPL-3.0 | 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 |
| LiaScript ExporterTurns a Markdown course into a SCORM 1.2, SCORM 2004, IMS or xAPI package from the command line | editor-checked— source, opens in a new tab Checked | BSD-3-Clause | Open source |
| Xerte Online ToolkitsServer-hosted, template-driven authoring for institutions, with SCORM and xAPI export | editor-checked— source, opens in a new tab Checked | Apache-2.0 | Open source |
| Adapt FrameworkResponsive HTML5 course framework whose SCORM output is a bundled plugin | vendor-stated— source, opens in a new tab Checked | GPL-3.0 | Open source |
Converters & migration
| Tool | Evidence | Licence | Pricing |
|---|---|---|---|
| Learning Records ConverterPython API that maps SCORM 2004, IMS Caliper and Matomo traces into xAPI | editor-checked— source, opens in a new tab Checked | GPL-3.0 | Open source |
| SCORM-to-xAPI WrapperADL's drop-in APIWrapper.js that re-emits SCORM calls as xAPI statements | editor-checked— source, opens in a new tab Checked | none | 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 |
| xAPI LRS Conformance Test SuiteADL's Node.js suite that runs the MUST requirements of the xAPI spec against a live LRS | 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 |
| 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 |
| Open edXThe large self-hosted learning platform, with SCORM and xAPI arriving via plugins | editor-checked— source, opens in a new tab Checked | AGPL-3.0 | Open source |
| Chamilo LMSFull open-source LMS with SCORM 1.2 and AICC learning paths and a bundled LTI plugin | vendor-stated— source, opens in a new tab Checked | GPL-3.0 | Open source |
| Opigno LMSDrupal distribution turned LMS, with SCORM and xAPI handled by its own modules | vendor-stated— source, opens in a new tab Checked | GPL-2.0-or-later | 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 |
| ADL LRSADL's own open-source learning record store, now tracking xAPI 2.0 | editor-checked— source, opens in a new tab Checked | Apache-2.0 | Open source |
| ADL xAPIWrapperADL's own JavaScript wrapper for talking to an LRS, built against xAPI 1.0.1 | editor-checked— source, opens in a new tab Checked | Apache-2.0 | Open source |
| Apereo OpenLRWJava learning record warehouse for xAPI, Caliper and OneRoster data, dormant since 2020 | editor-checked— source, opens in a new tab Checked | ECL-2.0 | Open source |
| CATAPULTADL's cmi5 player, content test suite and LMS test suite in one repository | editor-checked 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 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 |
| Learning Locker (Community)The best-known open-source LRS, with no commit on master since November 2021 | editor-checked— source, opens in a new tab Checked | GPL-3.0 | Open source |
| lxHiveSmall PHP and MongoDB Learning Record Store for xAPI 1.0.x | editor-checked— source, opens in a new tab Checked | GPL-2.0 | Open source |
| moodle-logstore_xapiTurns Moodle log events into xAPI statements and posts them to an LRS | editor-checked— source, opens in a new tab Checked | GPL-3.0 | Open source |
| RalphA Python xAPI LRS, CLI and data-pipeline toolbox from France Universite Numerique | editor-checked— source, opens in a new tab Checked | MIT | 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 |
| SQL LRSAn xAPI learning record store that runs on SQLite or your existing SQL database | editor-checked— source, opens in a new tab Checked | Apache-2.0 | Open source |
| TinCanJSRustici's original JavaScript xAPI library — still the most-linked, unchanged since 2016 | editor-checked— source, opens in a new tab Checked | Apache-2.0 | Open source |
| TRAX LRSA deliberately minimal self-hosted xAPI Learning Record Store built on Laravel | editor-checked— source, opens in a new tab Checked | GPL-3.0 | Open source |
| xAPI JavaImmutable xAPI model and Spring-based LRS client for Java, actively released | editor-checked— source, opens in a new tab Checked | Apache-2.0 | Open source |
| xAPI.jsStrongly typed TypeScript client for the xAPI 1.0 Statement and State APIs | editor-checked— source, opens in a new tab Checked | MIT | Open source |
Choosing between them
xAPI or SCORM?
If the thing you are tracking is a course that an LMS launches and grades, SCORM already solves that and is supported everywhere. If it is anything else — or if you want the data somewhere other than the LMS — xAPI is the only one of the two that can express it.
xAPI or cmi5?
They are not alternatives. cmi5 is xAPI with the launch, packaging and completion rules filled in. If you are shipping a course to an LMS, you almost certainly want cmi5 rather than raw xAPI.
Questions people ask about xAPI
What is a Learning Record Store?
A service that implements the xAPI endpoints: it accepts statements, stores them, and returns them to authorised clients. Some LMSs include one; most LRSs are separate products, and several are open source.
Is Tin Can API the same as xAPI?
Yes. Tin Can was the project name during development; the specification was renamed the Experience API before 1.0. Products still using the old name are usually stating support for 1.0.x.
Does xAPI replace SCORM?
Not on its own. xAPI has no packaging format and no launch mechanism, so it cannot be dropped into an LMS the way a SCORM ZIP can. cmi5 is the piece that makes that comparison fair.
What changed in xAPI 2.0?
It was published as IEEE 9274.1.1-2023 after stewardship moved from ADL to the IEEE LTSC. The document was restructured and clarified rather than redesigned, and 1.0.3 content remains broadly compatible.
How do I know an LRS is conformant?
Check ADL’s adopters list, which records products that have passed the LRS conformance test suite. A vendor page saying "xAPI compliant" is a claim; the adopters list is a test result.