
If you build eLearning courses, or buy them, you will meet the word SCORM sooner or later. An authoring tool offers to “export to SCORM”, a learning management system (LMS) promises “SCORM support”, and a course vendor sends you a ZIP file and calls it a SCORM package. This guide explains what SCORM is, what happens when a learner opens a SCORM course, which version to choose, and how to avoid the problems people hit most often.
What SCORM is
SCORM stands for Sharable Content Object Reference Model. It is a set of technical rules that lets an online course built in one tool run in any LMS that follows the same rules, and report back what the learner did: whether they finished, whether they passed, and what score they got.
SCORM was created by the Advanced Distributed Learning (ADL) Initiative, a program of the US Department of Defense, which needed training content that would work across many different systems. Version 1.2 was published in 2001 and is still the most widely used. SCORM 2004 followed, with its last edition (the 4th) in 2009. There has been no new version since; newer ideas went into xAPI instead (more on that below). Wikipedia tells the history of SCORM in more detail.
The value of SCORM is simple: you are not locked in. A course exported from ActivePresenter, Articulate Storyline, Adobe Captivate, iSpring or uPresenter can run in Moodle, uLearnBox or any other compliant LMS, and moving to another LMS later does not mean rebuilding your courses.
What is inside a SCORM package
A SCORM package is an ordinary ZIP file. Inside it you will find:
- imsmanifest.xml: the most important file. It names the course, lists its parts and resources, says which SCORM version it follows, and tells the LMS which page to open first.
- The course itself: HTML pages, JavaScript, images, audio and video, exactly as the authoring tool produced them.
- Schema files (.xsd and similar): reference files that describe the manifest format. You never need to edit them.
The manifest must sit at the root of the ZIP, not inside a folder. This is the single most common reason an LMS rejects a package: someone unzipped the export, looked at it, and zipped the whole folder again, which adds one folder level too many.
How a SCORM course talks to the LMS
When a learner opens a lesson, the LMS shows the course’s first page in the browser and provides a small JavaScript interface (the SCORM API) next to it. The course then has a short conversation with the LMS:
- It starts the session (Initialize; LMSInitialize in SCORM 1.2).
- It reads what the LMS already knows, such as the learner’s name and where they stopped last time.
- While the learner works, it sends values: progress, answers, the score, and a bookmark so the learner can resume.
- It asks the LMS to save (Commit) and, when the learner leaves, ends the session (Terminate; LMSFinish in SCORM 1.2).
The values the course can send are defined by the SCORM data model. The ones that matter most to a training manager are:
- Completion: whether the learner finished the course.
- Success: whether they passed or failed.
- Score: the raw score, and in SCORM 2004 also a scaled score between −1 and 1.
- Time: how long each session took.
- Interactions: the learner’s answers to individual questions, if the course reports them.
- Suspend data: the course’s own notes for resuming where the learner left off.
An important consequence: the course decides what it reports, not the LMS. If a course never sends “completed”, the LMS cannot show it as completed. That is why completion and passing rules are set in the authoring tool before you export.
SCORM 1.2 or SCORM 2004: which should you choose?
Most authoring tools let you choose the version when you export. The practical differences are few:
- Status. SCORM 1.2 has one status field, so a course reports either “completed” or “passed”/“failed”, not both. SCORM 2004 keeps completion and success separate, so a learner can be “completed and failed”, which is clearer in reports.
- Resume data. SCORM 1.2 allows 4,096 characters of suspend data; SCORM 2004 allows 64,000. Long courses with many slides and questions can run out of space in 1.2, and then fail to resume.
- Sequencing. SCORM 2004 can define rules for moving between several parts of one package. Few courses use it, and most LMSs handle courses as one lesson per package anyway.
- Support. SCORM 1.2 is supported almost everywhere and is the safest choice for content you share with other organizations.
Our advice: choose SCORM 2004 (4th edition) for courses with quizzes or many slides, because separate completion and success statuses and the larger resume space avoid real problems. Choose SCORM 1.2 when you must send the same package to many different systems, some of them old.
SCORM and xAPI
xAPI (also called Tin Can), published in 2013 by the same ADL Initiative, is the newer standard. Instead of a fixed list of fields, a course sends short statements such as “Lan answered question 3 correctly” to a Learning Record Store (LRS). xAPI can record learning that happens outside a browser window, such as in a mobile app or a simulation, and gives more detailed data about each interaction. ADL publishes the xAPI specification openly on GitHub.
xAPI does not replace SCORM overnight: SCORM is still the format almost every LMS and authoring tool supports. A good LMS accepts both, so you can use whichever your authoring tool exports best.
Before you upload: a checklist
- In the authoring tool, set how the course counts as completed (for example, viewing all slides) and how it counts as passed (for example, 80% on the final quiz).
- Export with the SCORM version your LMS supports, and keep the exported ZIP as it is. Do not unzip and re-zip it.
- Check the file size against your LMS limit. Large videos are the usual cause of oversized packages; compress them in the authoring tool.
- Upload the package and preview it in the LMS to check that it plays correctly: pages, audio, video and quiz.
- Before assigning it to everyone, take it as a test learner: finish it once, fail the quiz once, and close it halfway to check that it resumes.
- Check the report: the completion, result and score should match what you just did.
Common problems and quick fixes
- The LMS rejects the ZIP. The manifest is probably not at the root of the ZIP. Export again from the authoring tool and upload that file directly.
- The course always stays “incomplete”. The completion rule in the authoring tool is never met, for example it requires a slide the learner never reaches. Check the rule, then export a new version.
- Passed, but not completed (or the other way around). With SCORM 1.2 the course reports only one status. Switch to SCORM 2004, or set the course to report the status your LMS uses for completion.
- The learner starts from the beginning every time. The resume data may be too large for SCORM 1.2, or the learner closes the browser before the course saves. Use SCORM 2004 for long courses and ask learners to use the course’s own exit button.
- The score is missing. The quiz is not set to report its score. Turn score reporting on in the authoring tool’s tracking or quiz settings.
SCORM in uLearnBox
uLearnBox runs SCORM 1.2, SCORM 2004 and xAPI packages. You upload the ZIP to the Content Library, where uLearnBox checks its structure, size and safety before the package can be used, and you can preview it the way learners will see it. From there you add it to a course as a lesson, and uLearnBox records the completion, result and score the package reports.
When you update a course, you upload the new ZIP as a new version of the same material. Learners’ results on the old version are kept, and you decide when to move learners to the new one.
If you build courses in ActivePresenter, you do not need to export a ZIP at all: its Publish uLearn LMS command sends an xAPI package straight to your content library. The guides below walk through each step.