If your courses launch from an LMS and your reports need what SCORM already records, keep exporting SCORM: it tracks, at minimum, what SCORM.com calls the "Big 4", completion, score, duration and satisfaction1. xAPI earns its place when the learning happens outside the LMS (an app, a simulation, the job itself) or when you need data that SCORM's fixed set of fields cannot hold23. xAPI sends that data as statements to a Learning Record Store (LRS), so it pays off only if you have an LRS, which ADL calls "the linchpin of a functional xAPI implementation", and someone reads it24. cmi5 is xAPI with SCORM's launch and completion rules put back for an LMS3, and it is the right export only when your LMS imports cmi5.
ADL, the Defense Department initiative behind both SCORM and xAPI, recommended xAPI and cmi5 for new acquisitions on its page archived 13 December 2025 and said SCORM is still in wide use54. If your LMS is Moodle, its developer documentation says core Moodle's xAPI library is not meant to be a full LRS6.
What is the difference between xAPI and SCORM?
SCORM governs a course running inside an LMS, and its data is collected and stored within that LMS3. xAPI is a data and interface standard that lets software applications capture and share data on human performance, sending it as statements to an LRS2. cmi5 sits between SCORM and xAPI, with xAPI's tracking and SCORM's structure3.
Start with the Launch from an LMS and Where the data goes rows: they decide whether your LMS can run the content and where your results end up.
| Dimension | SCORM | xAPI | cmi5 | Source |
|---|---|---|---|---|
| What it records | The "Big 4"; a defined set of data elements | Statements of actor, verb and object, with context and optional results; developers can define their own data | xAPI statements, with learner session identifiers for grouping | SCORM.com1; xAPI.com3; ADL2 |
| Where the data goes | Stored within the LMS | An LRS, standalone or part of an LMS or other software | The LMS uses a conformant LRS | xAPI.com3; ADL2 |
| Launch from an LMS | Defined | Not defined | Defined | xAPI.com3 |
| Completion rules | Normalized | None defined | Interoperable rules for completion and mastery | xAPI.com3 |
| Several lessons in one package | Multiple SCOs | Not in the chart | Multiple AUs in a hierarchy, with criteria for progression | xAPI.com3 |
| Where the content can sit | Same server or domain as the LMS | Anywhere; xAPI defines no packaging standard | Anywhere | xAPI.com3 |
| Native mobile apps | No; limited to a browser | Yes | Yes | xAPI.com3 |
| Storyline 360 exports it | Yes, 1.2 and 2004 | Yes | Yes | Articulate7 |
| Core Moodle | SCORM 1.2 | Tin Can (xAPI's previous name) through third-party plugins; the core library is not a full LRS | Not mentioned in the SCORM FAQ | Moodle86 |
| ADL's position | Still in wide use | Recommended for new acquisitions | Recommended for new acquisitions | ADL5 |
What does each standard track?
SCORM tracks a fixed list; xAPI tracks whatever a system can describe as a statement3. SCORM 1.2 and SCORM 2004 track at minimum the Big 41, and Rustici Software's comparison calls SCORM "constrained to a defined set of data elements"3. SCORM 2004 widens the list with "full question and answer text"1; SCORM 1.2 vs SCORM 2004 covers the other differences.
When ADL began investigating new experience tracking capabilities in 2010, it envisioned xAPI data that "should provide more than course completions, test scores, or the number of pages viewed by a learner"2. ADL's examples include "Watching a training video, stopping and starting it" and "Quiz scores and answer history by question"2.
xAPI statements are the structured data about a learning experience. An xAPI statement includes data about the actor (e.g., learner), verb (e.g., watched, passed), and object (e.g., video, quiz) as well as contextual information such as the timestamp and issuing authority, and also optional information such as results, other informational attachments, and context details.
ADL, "Experience API (xAPI) Standard"2
The xAPI specification sums up the verb as the "did" in "I did this"4. If your compliance report asks only who finished, who passed and when, the statement model adds nothing you will use.
Some authoring tools keep a SCORM course's bookmark in suspend data1. If yours does, the xAPI equivalent is the LRS State endpoint, which ADL says stores "bookmark, state of play of the simulation, other state variables"2.
Where does the data live, and what is an LRS?
SCORM data stays in the LMS3. xAPI data goes to a Learning Record Store, which ADL defines as a server "responsible for receiving, storing, and providing access to xAPI learning records"2. An LRS validates and stores every xAPI statement, and it "may be part of an LMS or other software package," or stand alone2.
In the xAPI specification, a Learning Record Provider sends the data, the LRS stores it, and a Learning Record Consumer "accesses data from Learning Record Store(s) with the intent of processing the data"4. The specification calls a Consumer an xAPI Client, defined as "any entity that might interact through requests"4. Someone on your team still has to open the report.
ADL tells anyone building or buying an LRS to "procure one that meets xAPI conformance standards". The sample wording it gives DoD and other federal buyers for acquisition documents then mixes 2 versions: it asks for conformance to "Version 2.0" but bases acceptance on a test log for the "Experience API Version 1.0.3 LRS-Conformant conformance label"2.
The archived page does not explain the mix. Elsewhere, the same page says the first IEEE release of the standard "will be version 2.0"2. Part One of the xAPI specification on ADL's GitHub master branch lists 1.0.3, dated 21 September 2016, as its last revision4.
If you buy an LRS, ask which version its conformance test covered.
Do you already have an LRS?
Possibly, and "supports xAPI" on a feature list does not tell you. Moodle is the clearest case because its developers wrote it down: "The final objective of Moodle xAPI library is NOT to implement a full LRS inside Moodle"6. The library lets a plugin (the worked examples use mod_h5p) send statements that Moodle turns into standard Moodle events, and from Moodle 4.2 it stores xAPI state too6.
For xAPI course packages, Moodle's SCORM FAQ says Tin Can "is supported with a number of 3rd party plugins", naming logstore xAPI, which reports logging data to an external LRS, and mod_tincanlaunch, which launches Tin Can packages inside Moodle8. Tin Can is xAPI's previous name4. The FAQ does not mention cmi58, and Moodle's user documentation returned no xAPI page at docs.moodle.org/503/en/xAPI on 9 October 20266.
If you are staying with SCORM on Moodle, the steps are in how to upload a SCORM package to Moodle.
No other LMS was checked for this page. Ask your vendor 4 things in writing: whether the LMS includes an LRS, which xAPI version that LRS was tested against, whether you can query or export the statements, and whether the LMS imports xAPI or cmi5 packages.
What is cmi5, and is it the answer?
cmi5 is xAPI with rules for a traditional LMS, and it is the answer when you want xAPI's data while your courses still launch from an LMS3. Rustici's comparison says cmi5 "bridges that gap by having xAPI’s tracking flexibility while maintaining the structure of SCORM"3. The xAPI specification lists cmi5 as an example profile, "designed for the traditional single learner, single online learning use case"4.
What cmi5 puts back:
- Launch. "xAPI does not include instructions for launching content in an LMS"; SCORM and cmi5 do3.
- Completion. cmi5 "establishes interoperable rules for determining completion/mastery of learning activities", while "xAPI has no defined satisfaction criteria"3.
- Reporting. Statements carry learner session identifiers, so they can be grouped for normalized reports3.
- Structure. A package can hold several AUs in a hierarchy with criteria for progression, "much as SCORM does with multiple SCOs"3.
cmi5 does not remove the LRS: "The LMS uses a conformant LRS to support both" xAPI and cmi53, so the 4 vendor questions above still apply to you. ADL recommends cmi5 alongside xAPI5 and Storyline 360 exports it7. None of the sources read for this page can say whether your LMS imports cmi5.
Know who wrote that comparison. ADL contracted Rustici Software in 2011 for Project Tin Can, the first xAPI designs, before version 1.0 in 20132. Rustici offers its own LRS on the comparison page itself3.
When does xAPI change nothing for you?
When your courses launch from an LMS, your reports stop at the Big 4, and nobody would open an LRS. A SCORM conformant LMS can play any SCORM content3, and core Moodle supports SCORM 1.28. If your client's report relies on a particular status wording, Storyline's LMS Reporting setting picks it, and that setting "isn’t available or necessary for cmi5 or xAPI content"7.
When does xAPI matter?
xAPI matters when the learning, the content or the data leaves the LMS:
- Mobile apps. SCORM "cannot track mobile applications natively and is limited to a browser context"; xAPI and cmi5 can3.
- Content hosted elsewhere. SCORM content "must reside on the same server or domain as the LMS"; with cmi5 it can sit anywhere3. Storyline's xAPI settings ask for a Launch URL when you host the content "on a server that’s separate from your LMS"7.
- Learning that is not a course. Simulations, video, mentoring and "Real-world performance in an operational context" are all on ADL's list2.
- Data that has to move. "With xAPI and cmi5, data can be shared across systems"3, and ADL says xAPI is best run on "many distributed LRSs that can communicate with each other"2.
One case comes from the buyer rather than from your learners: ADL and the Defense Department instruction DoDI 1322.26 recommend "xAPI and cmi5 solutions for new e-learning acquisitions and implementations"5. If you sell training to a federal buyer, read the contract; this page has not seen yours.
How to do it yourself
You need your LMS documentation or its administrator, your authoring tool and a test LRS. For the test LRS, ADL's xAPI page lists open source tools: a sample LRS with its source code on GitHub, and an xAPI Statement Viewer2. Storyline 360 is the worked example because Articulate's documentation was the one saved; other authoring tools were not checked.
Decide in 5 questions
- Where does the learning happen? If it all happens in courses launched from your LMS, lean toward SCORM. A phone app, a simulation, video outside the LMS or work on the job points to xAPI32.
- What must the report show beyond the Big 4? If the answer is nothing, stop here and export SCORM1.
- Who will read the LRS, how often, and what will they decide from it? Put a name next to it. The xAPI specification's data flow ends at a Learning Record Consumer4, and if the name is blank, so is that box.
- What does your LMS import, in writing? The SCORM version, xAPI packages, cmi5 packages, and whether it has a conformant LRS of its own36.
- Does a contract or policy name a standard? For Defense Department work, DoDI 1322.26 is the instruction ADL cites5.
Then test before you commit
- Publish 1 short course for the target. In Storyline 360, open Reporting and Tracking, choose the standard from the Report to an LMS drop-down and, for an outside LRS, mark Report to an external LRS on the LRS tab7.
- Choose how the LRS credentials are stored. "Supplied at launch" keeps them out of the project file; "Manual" stores them in it, and you republish if they change7.
- Upload to the real LMS or LRS. Articulate's advice: "it’s best to upload the published course to your LMS/LRS for proper testing"7.
- Read the statements back in the LRS and check that each one carries the actor, verb and object you expected2.
- Build the report your named reader wants, from the test data, before any rollout.
| Task | Who can do it | Rough time |
|---|---|---|
| The 5 questions | L&D lead with the LMS administrator | 30 to 60 minutes, longer if the vendor has to answer |
| Test LRS | Someone who can install server software, or none if the LMS has an LRS | About 4 hours for a sample LRS; minutes if one exists |
| Publish and upload (steps 1 to 3) | Whoever builds the course | 15 to 30 minutes |
| Read statements and draft the report (steps 4 and 5) | Course builder with the report's reader | 1 to 2 hours |
These are working estimates for 1 course, not vendor figures. A course that sends custom statements takes longer, because you have to check every statement type.
The mistakes that cost the most
- Buying an LRS nobody reads. ADL warns that xAPI's flexibility "makes it difficult for Learning Record Consumers to make sense out of the data" without shared vocabularies, which it calls xAPI Profiles2.
- Reading "supports xAPI" as "has an LRS". Moodle's core xAPI library is, in its developers' words, not a full LRS6.
- Exporting plain xAPI for an LMS launch. xAPI has no LMS launch instructions; cmi5 does3.
- Changing the course Identifier on a republish. Articulate says not to change it for a course already in your LMS or LRS, and, for xAPI, to avoid special characters and spaces if you must change it7. Articulate's article does not say what breaks if you ignore this.
Questions people also ask
Is xAPI replacing SCORM? ADL recommends xAPI and cmi5 for new acquisitions and, in the same paragraph, says SCORM solutions are "still in wide use"5.
Is Tin Can the same as xAPI? Yes. The specification calls Tin Can API "The previous name of the API defined in this document"4, and Storyline 360's documentation lists the standard as "xAPI (Tin Can API)"7.
Do you need an LRS to use xAPI? Yes. ADL says all xAPI statements are validated and stored by an LRS, which can be part of an LMS or a standalone application2.
Should you pick xAPI or SCORM 2004? SCORM 2004 adds full question and answer text to SCORM's data1, but that data still stays in the LMS3. If your report fits inside your LMS, compare SCORM 1.2 vs SCORM 2004; if it does not, the choice is xAPI or cmi5.
SCORM.com (Rustici Software), "The difference between SCORM 1.2 vs. SCORM 2004", undated, read 9 October 2026. https://scorm.com/scorm-explained/business-of-scorm/comparing-scorm-1-2-and-scorm-2004/ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
ADL Initiative, "Experience API (xAPI) Standard", undated, read 9 October 2026 in the Internet Archive copy of 22 April 2026, because adlnet.gov refused connections that day. https://adlnet.gov/projects/xapi/ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
xAPI.com (Rustici Software), "Comparison of SCORM, xAPI and cmi5", undated, read 9 October 2026. https://xapi.com/cmi5/comparison-of-scorm-xapi-and-cmi5/ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
ADL Initiative, "xAPI Specification, Part One: About the Experience API", version 1.0.3 (revision history ends 21 September 2016), GitHub, read 9 October 2026. https://github.com/adlnet/xAPI-Spec/blob/master/xAPI-About.md ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
ADL Initiative, "Sharable Content Object Reference Model (SCORM)", read 9 October 2026 in the Internet Archive copy of 13 December 2025, because adlnet.gov refused connections that day. https://adlnet.gov/past-projects/scorm/ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
Moodle Developer Resources, "xAPI (Experience API)", version main (5.3), last updated 13 April 2026, read 9 October 2026. Moodle's user documentation returned no page at docs.moodle.org/503/en/xAPI the same day. https://moodledev.io/docs/apis/subsystems/xapi ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
Articulate, "Storyline 360: Publishing a Course for LMS/LRS Distribution", updated 7 October 2026, read 9 October 2026. https://www.articulatesupport.com/article/Storyline-360-Publishing-a-Course-for-LMS-LRS-Distribution ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
Moodle Docs 5.3, "SCORM FAQ", section Supported Versions, last edited 16 April 2024, read 9 October 2026. The check that the FAQ never mentions cmi5 used the full text in the Internet Archive copy of the Moodle 4.5 docs page of 6 November 2024, which carries the same last-edited line. https://docs.moodle.org/503/en/SCORM_FAQ ↩︎ ↩︎ ↩︎ ↩︎