SCORM 1.2 vs SCORM 2004 vs xAPI vs cmi5

When people compare SCORM 1.2 vs SCORM 2004, the practical difference is not the ZIP extension. Both can package browser-based learning content and communicate with an LMS. SCORM 2004 adds a revised runtime model plus formal sequencing and navigation. xAPI solves a wider event-data problem, while cmi5 applies xAPI to an LMS launch and course structure.

Choose the format from the delivery environment and reporting requirement. "Newest" is not a useful decision rule when the target LMS imports SCORM 1.2 but has no cmi5 player.

The four formats solve different parts of the system

Format Main job Typical data destination Defines LMS launch and course package?
SCORM 1.2 Package browser content and report a conventional LMS attempt LMS runtime data model Yes
SCORM 2004 Add richer runtime data plus sequencing and navigation rules LMS runtime data model Yes
xAPI Record learning experiences as HTTP statements Learning Record Store No, not by itself
cmi5 Apply xAPI to LMS-launched courses and assignable units LMS integrated with an LRS Yes

The current IEEE xAPI base standard defines statements and communication with a Learning Record Store, or LRS. It does not tell an LMS how to import a course ZIP, launch its content or manage an attempt. The cmi5 specification supplies those rules for a traditional LMS context.

SCORM 1.2: the compatibility choice

SCORM 1.2 packages contain an imsmanifest.xml file and one or more Sharable Content Objects, usually called SCOs. The LMS launches a SCO in a browser window or frame. The SCO finds the LMS JavaScript API and calls methods such as LMSInitialize, LMSSetValue, LMSCommit and LMSFinish.

The data model is small but covers the reporting expected from many online courses:

  • cmi.core.lesson_status for incomplete, completed, passed or failed;
  • cmi.core.score.raw, min and max for the result;
  • cmi.core.lesson_location and cmi.suspend_data for resume state;
  • cmi.core.session_time for the current launch;
  • cmi.interactions for question responses.

SCORM 1.2 combines completion and success in one lesson_status field. It also limits conforming suspend_data to 4,096 characters. Moodle can relax that limit through a compatibility setting, but a portable package should not assume every LMS does the same.

Choose SCORM 1.2 when broad LMS import support matters more than advanced sequencing, the course fits inside a browser launch and your report needs completion, score, time and ordinary assessment interactions.

SCORM 2004: separate status and formal sequencing

SCORM 2004 revises both the runtime API and the data model. Method names lose the LMS prefix, so a SCO calls Initialize, SetValue, Commit and Terminate. The API object is commonly exposed as API_1484_11 instead of the SCORM 1.2 API object.

The status model is also cleaner:

Meaning SCORM 1.2 SCORM 2004
Completion Part of cmi.core.lesson_status cmi.completion_status
Success Part of cmi.core.lesson_status cmi.success_status
Score cmi.core.score.raw cmi.score.raw and cmi.score.scaled
Resume data cmi.suspend_data, 4,096 characters cmi.suspend_data; 4,000 characters in the 3rd Edition, raised to 64,000 in the 4th

Separating completion from success allows a learner to finish a course and fail its assessment without forcing both facts into one field. SCORM 2004 also defines sequencing and navigation rules across activities. An LMS can use those rules to control prerequisites, choice, flow and rollup rather than leaving all navigation inside one SCO.

The cost is implementation complexity and uneven edition support. SCORM 2004 has multiple editions that differ in more than sequencing detail: suspend data, for example, stayed at 4,000 characters until the 4th Edition raised it to 64,000. An LMS may advertise the standard without behaving identically across all editions, so test the package against the exact edition and LMS you plan to use.

xAPI: event records beyond a single LMS launch

xAPI represents an experience as a JSON statement with an actor, verb and object, plus optional result, context, timestamp and attachments. A statement can describe formal course activity, a simulation, a mobile task, a video event or work completed outside an LMS.

Statements travel over HTTP to an LRS. That makes xAPI suitable when records need to come from several systems or be analyzed beyond one LMS gradebook. It also introduces work that SCORM hides inside the LMS player: endpoint configuration, authentication, statement vocabulary, learner identity and governance.

xAPI does not define a package, course structure or launch protocol on its own. Sending a statement such as "Alex completed Safety Drill" proves that an event was recorded. It does not tell an LMS which file to import, which URL to launch or what conditions move a course to complete.

Choose xAPI when the project starts from the events and analytics you need across systems, and you have an LRS plus a controlled statement profile. Do not choose it merely to replace a SCORM ZIP with newer terminology.

cmi5: xAPI with LMS course rules

cmi5 is a profile for using xAPI with traditional LMS delivery. It defines a course structure made of Assignable Units, or AUs, plus the launch parameters and lifecycle statements an LMS and AU must exchange.

The LMS launches an AU with values that identify the xAPI endpoint, learner, registration and activity. The AU obtains authorization, reads launch state and sends statements between initialized and terminated. cmi5 also defines statements for completion, success, failure and other course states.

This gives you xAPI's LRS-based statement model without leaving course launch and registration as local conventions. It also means both sides must implement cmi5, not only generic xAPI.

Choose cmi5 when you need an LMS-assigned course with structured launch behavior and xAPI records, and the target platform explicitly supports cmi5 packages.

Decision table

Requirement Best starting point Check before committing
Import into the widest range of established LMSs SCORM 1.2 Required score, interaction and resume behavior
Distinguish completed from passed and use formal activity sequencing SCORM 2004 Exact edition supported by the LMS
Record events from apps, simulations or work outside an LMS xAPI LRS, identity model and statement profile
Launch a packaged course from an LMS and report through xAPI cmi5 Native cmi5 import, launch and reporting support
One package must run in a named customer's existing LMS The format that LMS has verified Test package and report evidence, not a feature-list claim

Mixed estates may need more than one export. Keep the learning content separate from the runtime adapter so you can package the same reviewed source for different delivery targets.

Which format does LMSable export?

LMSable Course Builder currently exports SCORM 1.2, plus an HTML package for use outside an LMS, without reporting. SCORM 1.2 fits courses that need a portable LMS ZIP with completion, score, bookmarking and question interactions. Course Builder does not turn the package into SCORM 2004, xAPI or cmi5.

Before building, ask the LMS administrator for a known-good sample package and the exact report fields they need. If SCORM 1.2 is accepted, create the course and verify it in that LMS; the prompting, packaging and upload sequence is set out in the guide to creating a SCORM course with ChatGPT. If the requirement names SCORM 2004 sequencing, an LRS or cmi5 launch, select a toolchain that implements that requirement directly.

Reference documentation