CompanyLMS.com
All posts
Guides

How to Upload a SCORM File to an LMS

The upload takes a minute. The twenty minutes afterwards, when the course launches but the admin report shows nothing, is what costs people an afternoon. The full sequence, which SCORM version to publish to, and the specific reasons courses fail to report completion or resume.

By the CompanyLMS team

August 2026 · 9 min read

Last updated August 2026.

To upload a SCORM file to an LMS, export the course from your authoring tool as a SCORM package (a single zip containing an imsmanifest.xml file), then use your LMS admin area to create a course and upload that zip as SCORM content. Do not unzip it first, and do not rename the manifest. The upload itself takes about a minute. The two things that go wrong afterwards are the course not reporting completion and the course not resuming where the learner left off, and both have specific causes worth knowing before you blame the platform.

This is one of those tasks that is either trivial or maddening, with very little in between. The upload button works fine. It is the twenty minutes after the upload, when the course launches but the admin report stubbornly shows nothing, that costs people an afternoon. Here is the whole process and the failure modes in the order you will hit them.

Course Studio Interactive demo
modules
Progress board
Completion %
/ certified

What is a SCORM file?

A SCORM file is a zip archive containing a complete e-learning course plus an imsmanifest.xml file that tells the LMS what is inside and how to launch it. SCORM stands for Sharable Content Object Reference Model. The point of the format is portability: a course published to SCORM in one authoring tool will run in any LMS that reads SCORM, and will report back completion, score and time spent.

There is no separate .scorm file extension, which trips up a lot of people. A SCORM package is just a .zip. What makes it SCORM rather than a folder of web files is the manifest sitting in the root of that zip. If you open the archive and see imsmanifest.xml at the top level, you have a valid package. If the manifest is one folder down, the LMS will usually reject it, and that is the single most common upload error in this whole process.

How to upload a SCORM file to an LMS

The wording differs between platforms but the sequence is the same everywhere.

1. Publish to SCORM from your authoring tool. In Articulate Storyline, Rise, iSpring, Adobe Captivate, Camtasia or Elucidat, choose Publish and select LMS or SCORM as the target. You will be asked which version to publish. Pick SCORM 1.2 unless you have a specific reason not to, for reasons covered below.

2. Confirm you have a zip with the manifest in the root. Most tools produce the zip for you. If yours outputs a folder, select the contents of that folder and compress those, not the folder itself. Compressing the parent folder buries the manifest a level deep and the import will fail.

3. Create the course shell in your LMS first. Give it the name, description and category learners will see. The SCORM package is content that lives inside a course, not the course itself. Getting this the wrong way round is why some people end up with a catalog full of items named storyline_output_final_v3.

4. Add the package as SCORM content. Look for Add content, Add unit, or Upload learning object, and choose the SCORM or e-learning package type specifically. Do not use the generic file upload, which will attach the zip as a downloadable file rather than launching it as a trackable course.

5. Set the completion rule. This is the step most people skip and it is the reason for most reporting problems. Your LMS asks how it should decide the course is finished: on completion status, on a passing score, on both, or simply on the learner opening it. That setting has to match what the course actually reports.

6. Test it as a learner, not as an admin. Admin preview modes frequently bypass tracking entirely. Enroll a test account, take the course properly, and then check the admin report.

Which SCORM version should you publish to?

Publish to SCORM 1.2 unless you specifically need sequencing or long-course resume. SCORM 1.2 was released in October 2001 and remains the industry workhorse, supported by essentially every LMS on the market. SCORM 2004 is technically better but support is uneven, and its most useful edition is the 3rd (2006).

Capability SCORM 1.2 SCORM 2004 (3rd Edition)
Suspend data (resume state)4,096 charactersAbout 64,000 characters
Completion vs pass or failOne combined field (cmi.core.lesson_status)Two separate fields, so you can see finished and passed independently
Sequencing and navigationNot standardized. The course cannot control movement between modulesRule-based branching, but notoriously complex and implemented inconsistently
Interaction detailBasic completion and scoreObjectives, quiz responses and individual learner inputs
LMS supportEffectively universalUneven. TalentLMS does not support it at all, and Moodle's support is partial

That last row is worth checking before you publish anything. TalentLMS supports SCORM 1.2, xAPI and cmi5, but not SCORM 2004. Moodle reads SCORM 1.2 well, while its SCORM 2004 support omits the sequencing and navigation component, so branching packages may not behave correctly. Docebo, Absorb LMS, iSpring Learn and 360Learning all handle 2004. Our comparison of SCORM compliant LMS platforms lays out the full version matrix alongside pricing.

Why is my SCORM course not showing as complete?

This is the most common SCORM problem by a wide margin, and it is almost never a broken LMS. Work through these in order.

The completion rule does not match what the course reports. If the LMS is set to mark completion on a passing score but the course contains no scored assessment, it will never report a score, so it can never complete. Set it to completion status instead. The reverse also happens: a course that only reports a score against an LMS expecting a completion flag.

The learner closed the browser tab instead of exiting the course. SCORM reports its final status when the course session terminates cleanly. Closing the tab kills the session before that call is made, and the completion is lost. Most authoring tools include an Exit or Finish button for exactly this reason, and telling learners to use it removes a surprising share of support tickets.

The course was published without a completion trigger. In Storyline and similar tools, completion has to be explicitly wired to something: reaching the last slide, passing a quiz, or a trigger you set. A course published without one runs perfectly and reports nothing forever.

Pop-up blockers or an iframe restriction. If the course launches in a new window that the browser blocks, or in an iframe your security policy restricts, the SCORM API calls cannot reach the LMS. The learner sees the content but nothing is recorded.

You tested as an admin. Worth repeating because it wastes so much time. Preview modes on many platforms deliberately skip tracking.

Why does my SCORM course not resume where the learner left off?

Almost always the suspend data limit. SCORM 1.2 stores a maximum of 4,096 characters of state, and that budget has to hold every answer, every visited slide and every branch decision. Long courses, courses with branching scenarios, and courses with large question banks overflow it, and when they do, progress is silently lost rather than reported as an error.

You have three options. Republish to SCORM 2004 3rd Edition, which raises the limit to roughly 64,000 characters, provided your LMS supports it. Split a very long course into two or three shorter packages, which is usually better for completion rates anyway. Or reduce what the course stores, since some authoring tools let you limit the tracked state.

Can you convert other files into SCORM?

Not directly, and this is where a lot of budget gets wasted. A PDF, a slide deck or an MP4 is not a SCORM package and cannot be zipped into one. Turning them into SCORM means importing them into an authoring tool, adding whatever tracking and assessment you want, then publishing to SCORM from there. The conversion tools that advertise otherwise are generally doing exactly this, with a thin wrapper.

The practical question is whether you need the packaging step at all. If the training will only ever run in your own LMS, publishing to a portable standard solves a problem you do not have, and it adds a republish-and-reupload cycle every single time a policy changes. Most modern platforms let you build the course natively from documents, slides and video, which is the approach behind our course authoring tool. Where the source material is a scanned manual or a printed policy rather than a live document, you will need to extract the text from those scans before any of it can become course content.

Keep SCORM for the cases where it genuinely earns its place: content you bought from a third-party library, content you need to deliver into a customer's or partner's LMS, and content you want to remain portable if you change vendors.

SCORM upload errors and what they mean

What you see Usual cause Fix
Manifest not found, or invalid packageimsmanifest.xml is one folder deep because the parent folder was zippedRe-zip the contents of the folder rather than the folder itself
Upload rejected on sizeUncompressed video inside the package, or a platform upload capHost video externally and link it, or compress before publishing
Course launches to a blank screenPop-up blocked, or the course expects FlashAllow pop-ups for the LMS domain. Flash content must be rebuilt in HTML5
Runs fine, reports nothingNo completion trigger set at publish time, or a mismatched completion ruleSet the trigger in the authoring tool, and match the LMS rule to what the course reports
Progress lost between sessionsSCORM 1.2 suspend data limit exceededRepublish to SCORM 2004 3rd Edition, or split the course
Wrong learner name in the courseCached session from an earlier test accountClear cookies, or test in a private window

How do I know which SCORM version a course is?

Unzip the package and open imsmanifest.xml in any text editor. The schema declaration near the top of the file states it: SCORM 1.2 packages declare ADL SCORM version 1.2, and SCORM 2004 packages reference 2004 3rd Edition or 4th Edition. It takes under a minute and it is worth doing before you shortlist platforms, because if your whole library turns out to be SCORM 1.2, every LMS on the market can read it and you can weight your decision on price and features instead.

If you are moving an existing library to a new platform rather than adding one course, the packages are only part of what has to survive. Completion history and certificate expiry dates rarely transfer automatically, and those are the records an auditor asks for. Our LMS migration checklist covers what to export before you cancel the old contract.

Should you still be publishing to SCORM in 2026?

For existing libraries, yes, keep them and buy a platform that reads them. For new content, SCORM is no longer the automatic answer. cmi5 pairs xAPI tracking with SCORM-style launch and completion rules, so it behaves like a normal LMS course while recording far more detail, including on mobile and offline. It is supported by TalentLMS, Docebo, Absorb, iSpring Learn and Cornerstone. Our breakdown of cmi5 vs SCORM covers when the switch is worth making, and SCORM vs xAPI explains the data layer underneath it.

For most internal training teams, though, the honest answer is that the packaging standard matters far less than what happens to the completion once it lands. Whether the course reports through SCORM 1.2 or cmi5, the record ends up in the same table, and it is the assignment rules, the renewal reminders and the audit export that determine whether your program actually works. That is the part worth evaluating carefully when you look at compliance training software.

See CompanyLMS train your teams

Build courses, launch employee onboarding and compliance training, track skills across teams, and issue certifications, all in one corporate LMS, with completion visible on a single progress dashboard.

One platform for corporate training

CompanyLMS brings courses, employee onboarding, compliance training, skills tracking, and certifications together, so every team learns in one place and you see completion at a glance.

Course builder · Compliance tracking · Skills & certifications

Per-seat pricing · employee progress dashboard · certifications your teams actually earn.