GuidesSCORM 1.2 vs SCORM 2004

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.

By · Founder of Outworx, builds UnderlayerPublished

Which one should you use?

Short answer
Export SCORM 2004 (3rd or 4th Edition) when the LMS supports it — you get separate completion and success status and 64,000 characters of saved state. Fall back to SCORM 1.2 when an LMS imports 2004 but never records a completion, or when the customer simply says “1.2”. If you can, offer both.

The differences at a glance

SCORM 1.2 compared with SCORM 2004
FeatureSCORM 1.2SCORM 2004
ReleasedOctober 20012nd Edition 2004, 3rd 2006, 4th 2009
Statuscmi.core.lesson_statuscmi.completion_status and cmi.success_status
Scorecmi.core.score.raw, min, maxcmi.score.scaled (−1 to 1), plus raw, min, max
suspend_data limit4,096 characters4,000 (2nd Ed.); 64,000 (3rd and 4th Ed.)
API objectAPIAPI_1484_11
MethodsLMSInitialize, LMSFinish, …Initialize, Terminate, …
SequencingNoneYes, based on IMS Simple Sequencing
InteractionsMostly write-onlyReadable 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 Edition as 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.

  1. SCORM run-time reference (Rustici Software) — https://scorm.com/scorm-explained/technical-scorm/run-time/run-time-reference/
  2. SCORM versions (Rustici Software) — https://scorm.com/scorm-explained/business-of-scorm/scorm-versions/
  3. Comparing SCORM 1.2 and SCORM 2004 (Rustici Software) — https://scorm.com/scorm-explained/business-of-scorm/comparing-scorm-1-2-and-scorm-2004/
  4. SCORM run-time API (Rustici Software) — https://scorm.com/scorm-explained/technical-scorm/run-time/
  5. SCORM sequencing (Rustici Software) — https://scorm.com/scorm-explained/technical-scorm/sequencing/
  6. SCORM content packaging (Rustici Software) — https://scorm.com/scorm-explained/technical-scorm/content-packaging/

Keep reading