---
title: "xAPI — the Experience API, Learning Record Stores, and the tools that support it | SCORM Tools"
canonical_url: "https://scorm-tools.com/standards/xapi"
last_updated: "2026-10-31T10:21:57.704Z"
meta:
  description: "A way to record that somebody did something, anywhere, and keep it in a store you control."
  "og:description": "A way to record that somebody did something, anywhere, and keep it in a store you control."
  "og:title": "xAPI — the Experience API, Learning Record Stores, and the tools that support it"
---

# **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 **

Release history of xAPI

| **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 **

- [~~ADL — xAPI specification (1.0.3)~~](https://github.com/adlnet/xAPI-Spec)
- [~~IEEE 9274.1.1-2023 — xAPI~~](https://standards.ieee.org/ieee/9274.1.1/7321/)

### **Registry **

- [~~ADL LRS Conformance Test Suite~~](https://github.com/adlnet/lrs-conformance-test-suite)**Registry 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~~](https://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~~](https://scorm-tools.com/categories/authoring-tools)

Authoring tools & course frameworks that support xAPI

| **Tool ** | **Evidence ** | **Licence ** | **Pricing ** |
| --- | --- | --- | --- |
| [~~CourseCode~~](https://scorm-tools.com/tools/coursecode)Code-first course framework and CLI that packages to SCORM, cmi5 and LTI 1.3 | [editor-checked— source, opens in a new tab](https://github.com/course-code-framework/coursecode/blob/main/framework/js/drivers/cmi5-driver.js) Checked 24 August 2026 | MIT | Open source |
| [~~H5P (core PHP library)~~](https://scorm-tools.com/tools/h5p)The framework behind H5P interactive content — not, on its own, a SCORM tool | [editor-checked— source, opens in a new tab](https://github.com/h5p/h5p-php-library/blob/master/js/h5p-x-api-event.js) Checked 24 August 2026 | GPL-3.0 | Open source |
| [~~LessonKit~~](https://scorm-tools.com/tools/lxpack-lessonkit)Author courses as React components, then export SCORM, xAPI or cmi5 from the same codebase | [editor-checked— source, opens in a new tab](https://github.com/eddiethedean/lessonkit/tree/main/packages/xapi) Checked 24 August 2026 | Apache-2.0 | Open source |
| [~~LiaScript Exporter~~](https://scorm-tools.com/tools/liascript)Turns 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](https://github.com/LiaScript/LiaScript-Exporter/blob/master/src/export/xapi.ts) Checked 24 August 2026 | BSD-3-Clause | Open source |
| [~~Xerte Online Toolkits~~](https://scorm-tools.com/tools/xerte)Server-hosted, template-driven authoring for institutions, with SCORM and xAPI export | [editor-checked— source, opens in a new tab](https://github.com/thexerteproject/xerteonlinetoolkits/tree/develop/modules/site/xAPI) Checked 24 August 2026 | Apache-2.0 | Open source |
| [~~Adapt Framework~~](https://scorm-tools.com/tools/adapt-framework)Responsive HTML5 course framework whose SCORM output is a bundled plugin | [vendor-stated— source, opens in a new tab](https://github.com/adaptlearning/adapt_framework#features) Checked 24 August 2026 | GPL-3.0 | Open source |

### [~~Converters & migration~~](https://scorm-tools.com/categories/converters-migration)

Converters & migration that support xAPI

| **Tool ** | **Evidence ** | **Licence ** | **Pricing ** |
| --- | --- | --- | --- |
| [~~Learning Records Converter~~](https://scorm-tools.com/tools/learning-records-converter)Python API that maps SCORM 2004, IMS Caliper and Matomo traces into xAPI | [editor-checked— source, opens in a new tab](https://github.com/Prometheus-X-association/learning-records-converter/blob/main/app/common/enums/trace_formats.py) Checked 24 August 2026 | GPL-3.0 | Open source |
| [~~SCORM-to-xAPI Wrapper~~](https://scorm-tools.com/tools/scorm-to-xapi-wrapper)ADL's drop-in APIWrapper.js that re-emits SCORM calls as xAPI statements | [editor-checked— source, opens in a new tab](https://github.com/adlnet/SCORM-to-xAPI-Wrapper/blob/master/SCORMToXAPIFunctions.js) Checked 24 August 2026 | none | Open source |

### [~~Testing, validation & conformance~~](https://scorm-tools.com/categories/testing-validation-conformance)

Testing, validation & conformance that support xAPI

| **Tool ** | **Evidence ** | **Licence ** | **Pricing ** |
| --- | --- | --- | --- |
| [~~Prism~~](https://scorm-tools.com/tools/prism-wcag-audit)Unzips a SCORM, AICC, cmi5 or xAPI package and runs axe-core over every page in it | [editor-checked— source, opens in a new tab](https://github.com/davenguyen87/Prism/blob/main/src/parser/xapi.js) Checked 24 August 2026 | MIT | Open source |
| [~~xAPI LRS Conformance Test Suite~~](https://scorm-tools.com/tools/adl-lrs-conformance-test-suite)ADL'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](https://github.com/adlnet/lrs-conformance-test-suite#readme) Checked 24 August 2026 | MIT | Open source |

### [~~Packagers, SDKs & libraries~~](https://scorm-tools.com/categories/packagers-sdks-libraries)

Packagers, SDKs & libraries that support xAPI

| **Tool ** | **Evidence ** | **Licence ** | **Pricing ** |
| --- | --- | --- | --- |
| [~~SCORM Cloud API v2 clients~~](https://scorm-tools.com/tools/scorm-cloud-api-clients)Rustici's generated client libraries for the SCORM Cloud REST API, in six languages | [editor-checked— source, opens in a new tab](https://github.com/RusticiSoftware/scormcloud-api-v2-client-java/blob/master/src/main/java/com/rusticisoftware/cloud/v2/client/api/XapiApi.java) Checked 24 August 2026 | Apache-2.0 | Open source |
| [~~Tessera~~](https://scorm-tools.com/tools/tessera)Author a course as Svelte pages, then export the same source as SCORM, cmi5 or xAPI | [editor-checked— source, opens in a new tab](https://github.com/redmodd/tessera/blob/main/packages/tessera-learn/src/runtime/xapi/version.ts) Checked 24 August 2026 | MIT | Open source |
| [~~eLearning Module Parser~~](https://scorm-tools.com/tools/elearning-module-parser)Java library that detects and parses SCORM, AICC, cmi5 and xAPI packages into typed metadata | [vendor-stated— source, opens in a new tab](https://github.com/jcputney/elearning-module-parser#supported-formats) Checked 24 August 2026 | Apache-2.0 | Open source |

### [~~LMS & LMS plugins~~](https://scorm-tools.com/categories/lms-and-plugins)

LMS & LMS plugins that support xAPI

| **Tool ** | **Evidence ** | **Licence ** | **Pricing ** |
| --- | --- | --- | --- |
| [~~ILIAS~~](https://scorm-tools.com/tools/ilias)German open-source LMS carrying SCORM 1.2, SCORM 2004 and cmi5 objects in core | [editor-checked— source, opens in a new tab](https://github.com/ILIAS-eLearning/ILIAS/blob/trunk/components/ILIAS/CmiXapi/README.md) Checked 24 August 2026 | GPL-3.0 | Open source |
| [~~Open edX~~](https://scorm-tools.com/tools/open-edx)The large self-hosted learning platform, with SCORM and xAPI arriving via plugins | [editor-checked— source, opens in a new tab](https://github.com/openedx/event-routing-backends) Checked 24 August 2026 | AGPL-3.0 | Open source |
| [~~Chamilo LMS~~](https://scorm-tools.com/tools/chamilo)Full open-source LMS with SCORM 1.2 and AICC learning paths and a bundled LTI plugin | [vendor-stated— source, opens in a new tab](https://github.com/chamilo/chamilo-lms#readme) Checked 24 August 2026 | GPL-3.0 | Open source |
| [~~Opigno LMS~~](https://scorm-tools.com/tools/opigno)Drupal distribution turned LMS, with SCORM and xAPI handled by its own modules | [vendor-stated— source, opens in a new tab](https://www.drupal.org/project/opigno_tincan_api) Checked 24 August 2026 | GPL-2.0-or-later | Open source |

### [~~xAPI & cmi5~~](https://scorm-tools.com/categories/xapi-cmi5)

xAPI & cmi5 that support xAPI

| **Tool ** | **Evidence ** | **Licence ** | **Pricing ** |
| --- | --- | --- | --- |
| [~~@xapi/cmi5~~](https://scorm-tools.com/tools/xapi-cmi5-library)A typed JavaScript client that handles the cmi5 handshake for you inside a course | [editor-checked— source, opens in a new tab](https://github.com/xapijs/cmi5/blob/develop/package.json) Checked 24 August 2026 | MIT | Open source |
| [~~ADL LRS~~](https://scorm-tools.com/tools/adl-lrs)ADL's own open-source learning record store, now tracking xAPI 2.0 | [editor-checked— source, opens in a new tab](https://github.com/adlnet/ADL_LRS/blob/master/adl_lrs/settings.py) Checked 24 August 2026 | Apache-2.0 | Open source |
| [~~ADL xAPIWrapper~~](https://scorm-tools.com/tools/adl-xapiwrapper)ADL's own JavaScript wrapper for talking to an LRS, built against xAPI 1.0.1 | [editor-checked— source, opens in a new tab](https://github.com/adlnet/xAPIWrapper/blob/master/src/xapiwrapper.js) Checked 24 August 2026 | Apache-2.0 | Open source |
| [~~Apereo OpenLRW~~](https://scorm-tools.com/tools/openlrw)Java learning record warehouse for xAPI, Caliper and OneRoster data, dormant since 2020 | [editor-checked— source, opens in a new tab](https://github.com/Apereo-Learning-Analytics-Initiative/OpenLRW/blob/master/src/main/java/org/apereo/openlrw/events/xapi/endpoint/XapiApiController.java) Checked 24 August 2026 | ECL-2.0 | Open source |
| [~~CATAPULT~~](https://scorm-tools.com/tools/catapult)ADL's cmi5 player, content test suite and LMS test suite in one repository | editor-checked Checked 24 August 2026 | Apache-2.0 | Open source |
| [~~cmi5 Client Library (ADL)~~](https://scorm-tools.com/tools/adl-cmi5-client-library)ADL's archived JavaScript wrapper and example AU for the content side of cmi5 | editor-checked Checked 24 August 2026 | Apache-2.0 | Open source |
| [~~cmi5.js~~](https://scorm-tools.com/tools/cmi5-js)Rustici's JavaScript runtime for the assignable-unit side of a cmi5 course | [editor-checked— source, opens in a new tab](https://github.com/RusticiSoftware/cmi5.js/blob/3.x/src/index.js) Checked 24 August 2026 | Apache-2.0 | Open source |
| [~~cmi5launch for Moodle~~](https://scorm-tools.com/tools/moodle-mod-cmi5launch)ADL's Moodle activity module that launches cmi5 content via the CATAPULT player | [editor-checked— source, opens in a new tab](https://github.com/adlnet/Moodle-mod_cmi5launch) Checked 24 August 2026 | Apache-2.0 | Open source |
| [~~Learning Locker (Community)~~](https://scorm-tools.com/tools/learning-locker)The best-known open-source LRS, with no commit on master since November 2021 | [editor-checked— source, opens in a new tab](https://github.com/LearningLocker/learninglocker/blob/master/lib/helpers/statementForwarding.js) Checked 24 August 2026 | GPL-3.0 | Open source |
| [~~lxHive~~](https://scorm-tools.com/tools/lxhive)Small PHP and MongoDB Learning Record Store for xAPI 1.0.x | [editor-checked— source, opens in a new tab](https://github.com/g3i/lxHive#readme) Checked 24 August 2026 | GPL-2.0 | Open source |
| [~~moodle-logstore\_xapi~~](https://scorm-tools.com/tools/moodle-logstore-xapi)Turns Moodle log events into xAPI statements and posts them to an LRS | [editor-checked— source, opens in a new tab](https://github.com/davidpesce/moodle-logstore_xapi/blob/master/src/loader/moodle_curl_lrs.php) Checked 24 August 2026 | GPL-3.0 | Open source |
| [~~Ralph~~](https://scorm-tools.com/tools/ralph-lrs)A Python xAPI LRS, CLI and data-pipeline toolbox from France Universite Numerique | [editor-checked— source, opens in a new tab](https://github.com/openfun/ralph/blob/main/src/ralph/api/routers/statements.py) Checked 24 August 2026 | MIT | Open source |
| [~~RapidCMI5~~](https://scorm-tools.com/tools/rapidcmi5)Desktop authoring tool that outputs cmi5 packages, aimed at TLA programmes | [editor-checked— source, opens in a new tab](https://github.com/ByLightSDC/rapidcmi5/blob/main/package.json) Checked 24 August 2026 | AGPL-3.0 | Open source |
| [~~SQL LRS~~](https://scorm-tools.com/tools/sql-lrs)An xAPI learning record store that runs on SQLite or your existing SQL database | [editor-checked— source, opens in a new tab](https://github.com/yetanalytics/lrsql/blob/main/src/test/lrsql/conformance_test.clj) Checked 24 August 2026 | Apache-2.0 | Open source |
| [~~TinCanJS~~](https://scorm-tools.com/tools/tincanjs)Rustici's original JavaScript xAPI library — still the most-linked, unchanged since 2016 | [editor-checked— source, opens in a new tab](https://github.com/RusticiSoftware/TinCanJS/blob/master/src/TinCan.js) Checked 24 August 2026 | Apache-2.0 | Open source |
| [~~TRAX LRS~~](https://scorm-tools.com/tools/trax-lrs)A deliberately minimal self-hosted xAPI Learning Record Store built on Laravel | [editor-checked— source, opens in a new tab](https://github.com/trax-project/trax3-core) Checked 24 August 2026 | GPL-3.0 | Open source |
| [~~xAPI Java~~](https://scorm-tools.com/tools/xapi-java)Immutable xAPI model and Spring-based LRS client for Java, actively released | [editor-checked— source, opens in a new tab](https://github.com/BerryCloud/xapi-java/blob/main/xapi-client/src/main/java/dev/learning/xapi/client/XapiClient.java) Checked 24 August 2026 | Apache-2.0 | Open source |
| [~~xAPI.js~~](https://scorm-tools.com/tools/xapi-js)Strongly typed TypeScript client for the xAPI 1.0 Statement and State APIs | [editor-checked— source, opens in a new tab](https://github.com/xapijs/xapi/blob/develop/src/constants/Versions.ts) Checked 24 August 2026 | 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.

## **The other standards **

**SCORM 1.2**

The oldest version of SCORM still in daily use, and still the safest export format when you do not control the target LMS.

[SCORM 1.2](https://scorm-tools.com/standards/scorm-1-2)

**SCORM 2004**

The second generation of SCORM: a larger data model, and sequencing rules the LMS is required to enforce.

[SCORM 2004](https://scorm-tools.com/standards/scorm-2004)

**cmi5**

The xAPI profile that supplies what xAPI deliberately left out: how an LMS launches a course and how the two agree it is finished.

[cmi5](https://scorm-tools.com/standards/cmi5)

**AICC**

The pre-SCORM interoperability rules, still worth knowing because HACP crosses domains where SCORM cannot.

[AICC](https://scorm-tools.com/standards/aicc)

**LTI**

A launch protocol, not a packaging format: the LMS sends the learner to a tool that stays where it is.

[LTI](https://scorm-tools.com/standards/lti)