Decisions6 min read
SCORM explained: what it means for your LMS
By Sannan MalikPublished
Short answerSCORM is a standard that lets an LMS launch an e-learning course and record what the learner did in it. SCORM 1.2 keeps one status field, so a course reports completed or passed, not both. SCORM 2004 records completion and pass or fail separately. xAPI and cmi5 can also track learning that happens outside a browser course. Before you build or buy an LMS, test it with your own course packages and the reports you need.
What SCORM does between a course and an LMS
A SCORM course arrives as a zip file. At its root sits a file called imsmanifest.xml, which tells the LMS what is inside and which pages to launch.
The LMS opens the course in a browser and offers it a JavaScript API on the page. The course finds that API, calls Initialize (LMSInitialize in SCORM 1.2), writes values while the learner works, and calls Terminate (LMSFinish in 1.2) at the end. Those values are the whole record: a status, a score, time spent, a bookmark, a block of suspend data for resuming, and the learner's answers to individual questions.
That is all SCORM promises. It says nothing about how the LMS shows that data back to you. ADL's own xAPI SCORM Profile lists this as a gap: reporting is not standardised in SCORM, so it differs between vendors. The same document is also clear that if a traditional LMS and SCORM content work for your organisation, you do not need to switch to xAPI.
SCORM 1.2, SCORM 2004, xAPI and cmi5 compared
You will meet four names in LMS sales material. SCORM 1.2 and SCORM 2004 are the older pair; xAPI and cmi5 are the newer options backed by ADL. This is how I explain the four to a buyer.
| Standard | How it records completion and result | Where the content can run | What the server side needs |
|---|---|---|---|
| SCORM 1.2 | One field, cmi.core.lesson_status, holds passed, failed or completed. Score is cmi.core.score.raw. | A web page launched by the LMS | An LMS that serves the SCORM API to the course page |
| SCORM 2004 | Two fields: cmi.completion_status (completed or incomplete) and cmi.success_status (passed or failed). Score adds cmi.score.scaled. | A web page launched by the LMS | An LMS that serves the SCORM 2004 API |
| xAPI | Statements such as completed, passed, failed or scored, sent to a Learning Record Store | Anywhere that can send a web request, including apps and simulators | A Learning Record Store (LRS) |
| cmi5 | Separate completed and passed or failed statements, judged against a masteryScore between 0 and 1 | Launched by an LMS, which passes the content an LRS address and a one-time token | An LMS that supports cmi5, with an LRS behind it |
Completion and pass or fail are two different questions
Decide what "done" means for each course before you look at any LMS. Write it down.
For a compliance video, done usually means viewed to the end. For a safety quiz, done means passed. For a certificate course, it may mean both. SCORM 2004 can carry those as two separate facts. SCORM 1.2 cannot: its single lesson_status field ends up holding whichever value the course wrote last, so a course that writes passed does not also say completed.
This is where reports go wrong. If a dashboard counts learners whose status is completed, anyone whose 1.2 course wrote passed can drop out of the number. I would ask any LMS vendor, or tell any developer, exactly how each status value is counted in each report.
cmi5 makes the rule explicit. Each unit in a cmi5 course carries a moveOn value: Passed, Completed, CompletedAndPassed, CompletedOrPassed or NotApplicable. The LMS uses it to decide when the unit is satisfied. If you are commissioning new content, that is the clearest way to state the rule once and have the system apply it.
Scores need the same care. A SCORM 1.2 course reports a raw score, often out of 100. SCORM 2004 adds a scaled score, and ADL's profile divides a 1.2 raw score by 100 to compare the two. Decide which number your pass mark is set against.
What breaks when a SCORM course meets a new LMS
Most failures I would expect sit in a handful of places. None of them shows up in a demo with the vendor's sample course.
- Resume. The course saves its place in suspend data and exits with a suspend flag. If the LMS does not hand that data back on the next launch, the learner starts again from page one.
- Closing the tab. A learner who closes the browser before the course calls Terminate may leave progress unsaved. cmi5 has an abandoned statement the LMS records for this case; SCORM has no equivalent.
- Mobile apps. SCORM defines its API inside a web page. ADL's profile notes that finding the API is not defined for content that is not web-based, such as mobile apps. The way I would handle it is to load the course in a web view inside the app and provide the API there, then test it as its own piece of work.
- Group activity. SCORM tracks one learner at a time. Group work, and records about instructors or peers, cannot be stored in it.
- Version mismatch. SCORM 1.2 and 2004 use different call names and field names, so an LMS that handles one version well may handle the other badly. Test one package of each.
- Getting data out. SCORM has no standard way to export learner records, so check the export format before you commit years of history to one system.
The tests I would run before you sign
ADL publishes a SCORM 2004 4th Edition Test Suite with an LMS test, a content package test, a SCO test and a manifest test. It is useful for developers, but its readme lists Internet Explorer 8 and Java 6 as runtime prerequisites. For a buyer, the practical test is your own content. Pick three real courses, ideally one SCORM 1.2 and one SCORM 2004 from your actual authoring tool or supplier, and run this list on each.
- Upload the zip and confirm the course title and structure come from the manifest.
- Complete the course and check the report shows completed.
- Fail the quiz on purpose and check the report shows failed with the right score.
- Pass on a second attempt and check whether the report keeps both attempts or only the last.
- Stop halfway, close the browser, reopen it and confirm the course resumes where you left off.
- Repeat the resume test on a phone, in the browser and in the app if there is one.
- Export the learner records and open the file yourself.
- Ask whether xAPI or cmi5 support exists today or is only planned, and get the answer in writing.
Building an LMS that plays SCORM
My closest project is the Interactive SCORM Learning Management System. It plays and tracks SCORM courses, with learning pathways, assessments, progress tracking and institutional administration. It runs on Next.js with a Node.js API, WebSockets, MinIO for storage and an Android app. My role covered software architecture, product development and delivery, and it is live.
An LMS is custom software, so I price it as a fixed quote once the scope is written down: which SCORM versions, which reports, which roles, which devices. My fixed app packages, Launch at $999, Growth at $1,699 with a Node.js and PostgreSQL backend, and Scale at $2,500 with an admin dashboard, fit smaller pieces such as a student app on top of an existing platform. Specialised compliance work is quoted separately. Hosting, any third-party LRS service and ongoing maintenance are not included.
Choosing between building and buying? Send me your three test courses and the reports your managers need, and I will tell you what the list above turns up.
Questions
- Do I need xAPI if all my courses are SCORM?
- Not necessarily. ADL's own guidance says that if a traditional LMS and SCORM content work for you, there is no need to change. xAPI earns its place when you need to track learning outside a browser course, such as an app, a simulator or on-the-job tasks.
- Which SCORM version should a new LMS support?
- Both SCORM 1.2 and SCORM 2004 if you will load courses from outside suppliers, because you rarely control which one they export. Ask each supplier which version they deliver and test one package from each before launch.
Sources
Platform rules and fees in this article were checked against these official pages on 9 November 2026. They change, so confirm before you rely on them.
Sannan Malik is a software architect and product builder with 8+ years in software, CEO of Alpha Notic FZC and a Certified Scrum Product Owner. He builds mobile apps and business software for companies in the UAE, UK and US.