SCORM 1.2 vs SCORM 2004
SCORM 1.2 (2001) and SCORM 2004 (editions from 2004 to 2009) both package a course as a zip that any LMS can run, and both report progress through a JavaScript API. 2004 separates completion from pass/fail, allows far more saved state and adds sequencing; 1.2 is simpler and still the version the widest range of LMSs handle reliably.
Which one should you use?
The differences at a glance
| Feature | SCORM 1.2 | SCORM 2004 |
|---|---|---|
| Released | October 2001 | 2nd Edition 2004, 3rd 2006, 4th 2009 |
| Status | cmi.core.lesson_status | cmi.completion_status and cmi.success_status |
| Score | cmi.core.score.raw, min, max | cmi.score.scaled (−1 to 1), plus raw, min, max |
| suspend_data limit | 4,096 characters | 4,000 (2nd Ed.); 64,000 (3rd and 4th Ed.) |
| API object | API | API_1484_11 |
| Methods | LMSInitialize, LMSFinish, … | Initialize, Terminate, … |
| Sequencing | None | Yes, based on IMS Simple Sequencing |
| Interactions | Mostly write-only | Readable and writable, with descriptions |
Status: one field or two
The difference you will notice first. SCORM 1.2 has a single field, cmi.core.lesson_status, that takes one of six values: passed, completed, failed, incomplete, browsed or not attempted. A course that is both finished and passed has to pick one word for both facts.
SCORM 2004 splits it in two. cmi.completion_status says whether the learner got through the content (completed, incomplete, not attempted, unknown), and cmi.success_status says whether they met the standard (passed, failed, unknown). “Finished, but failed the quiz” is expressible without ambiguity, which is what most compliance reporting actually needs.
Scores
SCORM 1.2 reports cmi.core.score.raw with optional min and max. SCORM 2004 keeps raw, min and max and adds cmi.score.scaled, a normalised value from −1 to 1, which is the one many LMSs use to compare against a mastery threshold. Send both when you can: an LMS that reads one will ignore the other.
Suspend data: how much state you can save
cmi.suspend_data is where a course saves whatever it needs to resume — answers so far, which screens were seen, branching state. SCORM 1.2 guarantees 4,096 characters. SCORM 2004 2nd Edition guaranteed only 4,000; the 3rd and 4th Editions raised it to 64,000.
These are minimums an LMS must support, not maximums it enforces, so some LMSs accept more. But a course that assumes more than the minimum will lose state on the LMSs that don't — usually silently, which shows up as learners who “can't resume”. For interactive courses, this alone is a good reason to prefer 2004 3rd or 4th Edition.
The JavaScript API
A SCORM course finds the LMS by walking up the window hierarchy looking for a JavaScript object. In 1.2 it is called API and its methods are prefixed: LMSInitialize, LMSGetValue, LMSSetValue, LMSCommit, LMSFinish, plus three error calls. In 2004 it is API_1484_11 and the prefix is gone: Initialize, GetValue, SetValue, Commit, Terminate.
The rename is why a package built for one version cannot simply be relabelled as the other: the runtime code, the data-model names and the manifest's declared version all have to agree.
Sequencing and navigation
SCORM 2004 adds sequencing and navigation, derived from IMS Simple Sequencing: rules in the manifest that decide which activity a learner may open next, what counts as mastery and what happens on failure. SCORM 1.2 has no equivalent; each item stands alone and the LMS decides the order.
Sequencing matters when a package contains many separately launched units. A course that runs as one unit and handles its own navigation internally doesn't use it, and gains nothing from it.
The four editions of SCORM 2004
- 1st Edition (2004) — the release formerly called SCORM 1.3. Treat it as historical; it isn't what anyone means today.
- 2nd Edition (2004) — the first widely implemented 2004 release. Note its 4,000-character suspend data.
- 3rd Edition (2006) — raised suspend data to 64,000 characters.
- 4th Edition (2009) — the latest, with the same 64,000-character limit. The manifest declares
2004 4th Editionas its schema version.
Rustici, whose SCORM Engine runs inside many LMSs, still calls SCORM 1.2 the most widely adopted version and reports significant adoption of both the 3rd and 4th Editions. In practice that is the reason to be able to produce both.
What Underlayer exports
Underlayer exports any course as SCORM 2004 4th Edition by default, or SCORM 1.2 when an LMS needs it. The whole course is one SCO — it keeps state across screens, so it needs one continuous session — and screens are reported as cmi.location bookmarks so a learner resumes where they left off.
The LMS receives completion and pass/fail against the course's passing score, the final score, time spent, and one interaction per graded question. Export from the dashboard on any plan, or over the API on Scale and above — see generating a package programmatically and the SCORM docs.
Sources
Data-model names, value lists and limits checked against these references on 26 September 2026.
- SCORM run-time reference (Rustici Software) — https://scorm.com/scorm-explained/technical-scorm/run-time/run-time-reference/
- SCORM versions (Rustici Software) — https://scorm.com/scorm-explained/business-of-scorm/scorm-versions/
- Comparing SCORM 1.2 and SCORM 2004 (Rustici Software) — https://scorm.com/scorm-explained/business-of-scorm/comparing-scorm-1-2-and-scorm-2004/
- SCORM run-time API (Rustici Software) — https://scorm.com/scorm-explained/technical-scorm/run-time/
- SCORM sequencing (Rustici Software) — https://scorm.com/scorm-explained/technical-scorm/sequencing/
- SCORM content packaging (Rustici Software) — https://scorm.com/scorm-explained/technical-scorm/content-packaging/