What Is SCORM? A Plain Guide for L&D Teams
This guide is written for L&D, training and LMS teams. It explains what SCORM is, what is inside a SCORM package, which version to ask for, and the integration problems we see most often when courses meet a real LMS, with a checklist to avoid them.
Get a Free Quotation
Scoped proposal delivered within 48 hours
SCORM in short
SCORM (Sharable Content Object Reference Model) is a set of technical standards that lets an eLearning course run inside a SCORM-conformant learning management system (LMS) and report results such as completion, pass or fail, score and time. A SCORM file is a ZIP package with an imsmanifest.xml file that tells the LMS how to launch the course.
Need SCORM courses built and tested in your LMS?
Get a Free Quote →What is SCORM and what does it stand for?
SCORM stands for Sharable Content Object Reference Model. It was produced by the Advanced Distributed Learning (ADL) Initiative, a research group sponsored by the US Department of Defense, and the first draft (SCORM 1.0) appeared in January 2000.
SCORM is purely technical. It says nothing about instructional design.
So a course can be fully SCORM conformant and still be poor training. Good design is a separate job (that is what custom eLearning development covers).
The name explains the idea:
Sharable Content Object (SCO): a unit of a course that can talk to the LMS, for example to report a score. Static files that cannot talk to the LMS (a PDF, a shared logo) are called assets.
Reference Model: SCORM is not one product or file format. It is a reference collection of specifications that say how content should be packaged and how it should exchange data with an LMS.
How does SCORM work?
SCORM works in two main steps: the course is packaged so any SCORM LMS can import it, and at run-time the course uses a JavaScript API that the LMS provides to send and read learner data. SCORM 2004 adds a third part, sequencing, for rules about the order in which learners move through content.

| SCORM part | What it does | What it means for you |
|---|---|---|
| Content packaging | Puts the course files in a ZIP with a manifest (imsmanifest.xml) that lists the course structure and its files | You upload one ZIP file to the LMS instead of loose files |
| Run-time environment | The LMS provides a JavaScript object (named "API" in SCORM 1.2 and "API_1484_11" in SCORM 2004). The course finds it, starts a session, reads and writes data, and ends the session | Completion, scores and bookmarks reach the LMS reports |
| Sequencing and navigation (SCORM 2004 only) | Rules between SCOs, such as "finish Module 1 before Module 2 opens" | Useful for multi-module courses; needs an LMS that fully supports it |
A useful detail for anyone debugging tracking: the LMS is passive. It launches the course and answers the course's calls, but it cannot start the conversation. Every SCO must call Initialize (LMSInitialize in SCORM 1.2) before anything else and Terminate (LMSFinish in 1.2) when it closes. If a course skips those calls, data does not get saved, whatever the LMS settings say.
What is a SCORM file (SCORM package)?
A SCORM file is a ZIP file, formally called a package interchange file (PIF), that holds everything the course needs plus a manifest file named imsmanifest.xml. The manifest must sit at the root of the ZIP. It tells the LMS what the course contains and which file to launch.
| Inside a SCORM package | What it is for |
|---|---|
| imsmanifest.xml (at the root) | Describes the course: its metadata, its organizations (the course structure) and its resources (the files that make up each part) |
| Schema definition files (.xsd and .dtd) | Let the LMS check that the manifest follows the SCORM rules for that version |
| Course files (HTML, JavaScript, CSS, images, audio, video) | The course itself, usually published by an authoring tool as HTML5 |
How to tell which SCORM version a package uses: open imsmanifest.xml in a text editor and look at the <schemaversion> element. It states the SCORM version of the manifest, for example SCORM 1.2 or a SCORM 2004 edition.
Can you open a SCORM file without an LMS? You can unzip it and open the launch file in a browser to look at the content. Nothing is tracked, though, because tracking depends on the API that only the LMS (or a SCORM test player) provides.
What does SCORM track in your LMS?
SCORM tracks what happens inside the course and sends it to the LMS: completion status, pass or fail, score, time spent, where the learner stopped (bookmark), saved progress (suspend data) and answers to questions (interactions). It does not track learning that happens outside the course, such as on-the-job practice.
| Data | SCORM 1.2 | SCORM 2004 |
|---|---|---|
| Completion and result | One field, cmi.core.lesson_status: passed, completed, failed, incomplete, browsed, not attempted | Two fields: cmi.completion_status (completed, incomplete, not attempted, unknown) and cmi.success_status (passed, failed, unknown) |
| Score | Raw, min and max | Scaled (from -1 to 1), raw, min and max |
| Time | Session time | Session time |
| Saved progress (cmi.suspend_data) | Up to 4,096 characters | 2nd Edition: 4,000 characters; 3rd and 4th Editions: 64,000 characters |
| Question detail (interactions) | Limited: ID, type, learner response, result, latency and more | Fuller: adds a description field, plus full question and answer text |
Completed or passed? Decide before the build. In SCORM 1.2 the course can report only one status. If your LMS reports count "completed" but the course sends "passed" (or the reverse), learners can finish a course and still show as not done. In SCORM 2004 the course can report "completed" and "passed" at the same time, which removes most of this confusion. Agree the rule with your LMS admin before development starts.
SCORM 1.2 vs SCORM 2004: which should you choose?
Choose SCORM 1.2 when the course is simple and you need it to work in almost any LMS. Choose SCORM 2004 (3rd or 4th Edition) when you need separate completion and pass status, long courses that save a lot of progress, or sequencing rules, and your LMS supports that edition.
- January 2000
SCORM 1.0
Draft, not used today
- January 2001
SCORM 1.1
First implementable version, not used today
- October 2001
SCORM 1.2
- January 2004
SCORM 2004 1st Edition
- July 2004
SCORM 2004 2nd Edition
- October 2006
SCORM 2004 3rd Edition
- March 2009
SCORM 2004 4th Edition
The latest edition
According to Rustici Software, which publishes the scorm.com technical reference, SCORM 1.2 and SCORM 2004 3rd Edition are the most widely used versions (ringed in gold above).
| Feature | SCORM 1.2 | SCORM 2004 (3rd or 4th Edition) |
|---|---|---|
| LMS support | Very broad | Broad, but some LMSs support only some editions or only part of sequencing |
| Completion and pass/fail | One combined status | Separate completion and success status |
| Saved progress (suspend data) | 4,096 characters | 64,000 characters |
| Sequencing between SCOs | No | Yes |
| Interaction detail | Limited | Fuller, including question and answer text |
| Rollup (combining SCO results into a course result) | Handled by the LMS | The course tells the LMS when data is ready to roll up |
| Build and test effort | Lower | Higher, especially with sequencing |
SCORM 1.2
The oldest version still in wide use.
- The broadest LMS support and the simplest to test.
- One status field and a small suspend-data limit, which can break resume on long, interactive courses.
Short compliance, product and policy courses; any LMS you know little about.
SCORM 2004 (3rd or 4th Edition)
The later version, with four editions; the 3rd and 4th are the ones to use.
- Separate completion and pass status, much more saved progress, sequencing.
- Check which edition your LMS supports and test sequencing in that LMS.
Long or branching courses, simulations that save a lot of state, multi-module curricula.
If you are unsure, ask your LMS team which versions and editions the platform supports. When an LMS supports both, many teams use SCORM 2004 3rd or 4th Edition for complex courses and SCORM 1.2 for everything else.
What does "SCORM compliant" mean for LMS integration?
"SCORM compliant" (also written SCORM compatible or SCORM conformant) means a course or an LMS follows the SCORM specification for a given version. It does not guarantee that a particular course will behave the same in every LMS, because LMSs implement the standard, especially SCORM 2004 sequencing, in slightly different ways and add their own settings.
That is why the real test of SCORM compliant courses is your own LMS, not the authoring tool's preview. Before a course goes live, check four things in the LMS where learners will take it:
- 1The package imports without errors.
- 2The course launches in the window size and mode your learners use (new window, same window, mobile).
- 3Completion, pass or fail and score appear correctly in the LMS reports.
- 4A learner can leave halfway and resume where they stopped.
At IKHYA we build courses that track in SCORM 1.2, SCORM 2004 and xAPI LMSs, and we test every course in your LMS. LMS platforms we have delivered courses to include Moodle, TalentLMS, Docebo and Cornerstone.
LMS platforms we have delivered courses to also include Absorb, SAP SuccessFactors, Workday Learning, Canvas and Litmos.
If the LMS itself still needs choosing or configuring, that is a separate project: see our LMS implementation service, which covers LMS selection, setup, implementation and migration.
How to create a SCORM file
You create a SCORM file by building the course in an authoring tool and publishing (exporting) it as a SCORM package. You rarely write the manifest or the API calls by hand; the authoring tool does it.
- 01
Confirm the target
Ask your LMS team which SCORM version and edition to publish to, and how completion should be reported (see the checklist).
- 02
Pick the authoring tool
Common SCORM authoring tools include Articulate Storyline 360, Articulate Rise 360, Adobe Captivate, Lectora, iSpring Suite, dominKnow ONE and Elucidat. All of them can publish to SCORM.
- 03
Build the course
Design the content, interactions and assessment. Keep the tool's source file: a published package is hard to edit, so changes are made in the source and republished.
- 04
Set the tracking rules
Choose what makes the course complete (slides viewed, a quiz result, or both) and which status to report.
- 05
Publish to SCORM
Export the ZIP. Upload the ZIP as it is; do not unzip it and re-zip the folder, because that can push imsmanifest.xml out of the root.
- 06
Test in the real LMS
Run the four checks in the section above with a test learner account, then pilot with a small group.
From PowerPoint
If your content lives in slide decks, you can convert PowerPoint to SCORM. A straight export tracks views; adding interactions, knowledge checks and voiceover turns the deck into real eLearning.
How to convert PowerPoint to SCORM →From scratch
For courses built around your own processes, scenarios and assessments, see custom eLearning development.
See custom eLearning development →Common SCORM problems in an LMS and how to prevent them
Most SCORM problems show up after upload: the course plays, but the LMS reports are wrong. The table below lists the issues L&D teams report most often and the usual fix. It is practical guidance from course builds, not a research finding.

| What you see | Likely cause | How to prevent it |
|---|---|---|
| The LMS says the package is invalid | imsmanifest.xml is not at the root of the ZIP (often because the folder was zipped again) | Upload the ZIP exactly as the authoring tool published it |
| Learners finish but stay "incomplete" | The course reports "passed" while the LMS counts "completed" (or the reverse), or the course never calls Terminate/LMSFinish | Agree the completion rule with the LMS admin; test exit by every route (close button, browser close, timeout) |
| Resume does not work on long courses | Saved progress exceeds the suspend data limit (4,096 characters in SCORM 1.2) | Publish long, interactive courses to SCORM 2004 3rd or 4th Edition, or reduce what the course saves |
| Scores missing or wrong | The quiz is not linked to the tracking setting, or the passing score differs between the course and the LMS | Set the passing score in one place and test a pass and a fail attempt |
| Module 2 will not unlock | The LMS supports SCORM 2004 sequencing only partly | Check the LMS's sequencing support before choosing sequencing; otherwise split into separate courses |
| The course works in preview but not on mobile or in the app | Launch settings (new window, pop-ups, frames) differ in the LMS | Test with the LMS's real launch settings on the devices learners use |
Worked example: moving SCORM courses to a new LMS
LMS integration is most visible when an organization changes LMS. Every course has to import, launch and report correctly in the new platform, and the completion history has to come across too.
LMS migration
Moving 320 courses and 8 years of completion records from Moodle to Docebo without losing a record
- Client
- A professional-services firm with 5,000 learners.
- What we did
- A content audit that retired 90 outdated courses, repackaged 60 old SCORM 1.2 courses, migrated the completion records, tested every package in the new LMS and trained the admins, over 12 weeks.
- Results
- Cut-over in one weekend, 0 lost records and 230 courses live on day 1.
"Every course and every completion record moved across in one weekend. Our auditors could not tell we had switched systems, which is exactly what we wanted, and the test migration three weeks early took the stress out of cut-over."
What this shows: most of the work in an LMS move is not technical. Deciding which courses to retire, which to repackage and how to prove nothing was lost matters as much as the SCORM files.
Is SCORM still the right standard? SCORM vs xAPI and cmi5
Yes, for most LMS-based courses SCORM is still the safe default, because LMS support for it is so broad. The latest SCORM edition, SCORM 2004 4th Edition, was released in March 2009. For tracking beyond the course (mobile apps, simulations, offline or real-world activity), look at xAPI; for LMS-launched courses that use xAPI data, look at cmi5.
| Question | SCORM | xAPI (Experience API, also called Tin Can) | cmi5 |
|---|---|---|---|
| What it is | Packaging and run-time standard for courses in an LMS | A standard for sending learning records ("I did this") to a Learning Record Store (LRS) | An xAPI profile that defines how an LMS launches and tracks courses |
| Where learning can happen | Inside the course, in a browser, launched by the LMS | Anywhere: courses, apps, simulations, real-world activity; no constant connection needed | Courses launched by the LMS, reporting through xAPI |
| Status | SCORM 2004 4th Edition, March 2009 | Published as IEEE 9274.1.1-2023 (approved March 30, 2023; published October 6, 2023) | Quartz 1st Edition, June 1, 2016 |
| Best for | Standard LMS courses | Learning analytics across many systems | LMS courses that need richer xAPI tracking |
For a full side-by-side, read our guide on SCORM vs xAPI.
Before you build: an LMS checklist for SCORM courses
Send these questions to your LMS admin before development starts. They prevent most of the problems in the table above.
| Ask your LMS team | Why it matters |
|---|---|
| 1Which LMS and version are we on? | Sets the test environment |
| 2Which standards and editions does it support (SCORM 1.2, SCORM 2004 3rd or 4th Edition, xAPI)? | Decides the publish setting |
| 3Does it fully support SCORM 2004 sequencing? | Decides whether multi-module rules can live in one package |
| 4Do our reports count "completed", "passed" or both? | Decides what the course must report |
| 5What is the passing score, and is it set in the course or the LMS? | Avoids two different pass marks |
| 6How are courses launched (new window, same window, mobile app)? | Affects layout and exit behavior |
| 7Is there a maximum upload size? | Video-heavy packages can exceed an upload limit |
| 8Can we get a test learner account and a test admin view? | Lets the course be tested where learners will take it |
Need this built for your team?
We build and test SCORM 1.2, SCORM 2004 and xAPI courses in Articulate Storyline 360, Articulate Rise 360, Adobe Captivate, Lectora, iSpring Suite, dominKnow ONE and Elucidat.
Frequently asked questions about SCORM
SCORM is a set of rules that lets an eLearning course and an LMS work together. The course is packaged in a standard way so the LMS can import it, and it reports results such as completion, score and time back to the LMS.
SCORM stands for Sharable Content Object Reference Model. It was produced by the Advanced Distributed Learning (ADL) Initiative, sponsored by the US Department of Defense.
A SCORM package is a ZIP file containing the course files and an imsmanifest.xml file at its root that tells the LMS how the course is structured and which file to launch.
Yes. SCORM is still widely used to deliver tracked courses through an LMS. The last edition, SCORM 2004 4th Edition, dates from 2009, and newer standards (xAPI and cmi5) are used when tracking needs to go beyond the course.
You can unzip it and open the launch file in a browser to view the content, but nothing is tracked. Tracking needs the JavaScript API that an LMS or a SCORM test player provides.
Upload it to the LMS where learners will take it and use a test learner account. Check that it imports without errors, launches in the real launch mode, reports completion, pass or fail and score correctly, and resumes where the learner stopped.
Make changes in the authoring tool's source file and publish a new package. Editing the published HTML and JavaScript inside the ZIP is possible but fragile, so keep the source files for every course.
Ask for SCORM 1.2 for simple courses or when you are unsure what your LMS supports. Ask for SCORM 2004 3rd or 4th Edition for long, branching or multi-module courses, once your LMS team confirms it supports that edition.
The LMS name and version, the SCORM version and edition it supports, how your reports count completion, the passing score, the launch settings and a test account. With those, we test every course in your LMS before launch.
Yes. IKHYA redesigns legacy courses and converts Flash and old SCORM courses to HTML5 or Rise, then republishes them to the SCORM version your LMS needs.