The LMS says “invalid package”, or nothing at all, and the deadline is today. Almost every rejected package fails for one of a short list of reasons, and the first two account for most of them. Work down the list in order rather than re-publishing hopefully, which is the usual response and rarely the fix.
Work down this list
1Is imsmanifest.xml at the very top of the zip?
Open the zip and look. imsmanifest.xml must sit at the root, next to the course files. If the first thing you see is a folder with the course name and the manifest is inside it, every LMS will reject the package, and this is the most common fault of all.
It happens when somebody unzips a package, changes something, and re-zips by right-clicking the folder. The fix is to select the contents rather than the folder: go inside, select everything including the manifest, and zip that.
2Does the zip contain everything the manifest promises?
The manifest lists every file the course needs. If one is missing, the import fails or the course loads to a blank screen. Missing files usually arrive through a partial copy, a file the virus scanner quietly removed, or a re-zip that skipped hidden files.
3Is the SCORM version the one your LMS takes?
A SCORM 2004 package going into an LMS configured for 1.2 will be refused, and the message is rarely that clear. Check what your LMS expects, then check what you published. If you are not sure what the package is, the manifest says so near the top, in the schema version.
When the LMS expects xAPI or cmi5 and the package is SCORM, the same thing happens for the same reason. Publish again for the standard the LMS actually wants.
4Is the file too big, or is the upload timing out?
Many LMSs cap uploads well below what a video-heavy course weighs, and the failure often looks like a generic error rather than a size message. If the package is over a few hundred megabytes, suspect this first. The Course File Inspector shows what is eating the megabytes, which is usually two or three uncompressed videos or a pile of images exported at print resolution.
5Are there odd characters or very long paths?
Accented letters, ampersands, hashes and spaces in file names all cause trouble in some systems, and deeply nested folders can exceed path limits during extraction. Course tools generate safe names, so this usually comes from media files added by hand.
6Was the zip made on a Mac?
Mac compression adds a __MACOSX folder and .DS_Store files. Most systems ignore them, some do not, and a few treat the extra folder as the package root and fail. If the package was zipped on a Mac and refuses to import, that is a cheap thing to rule out.
7Did you publish for an LMS at all?
A Web publish has no manifest and is not a SCORM package. It is an easy mistake to make at the end of a long day: the folder looks similar and the zip is the same shape. If there is no imsmanifest.xml anywhere, this is your answer.
8Does a package that used to work still work?
If an older package imports and the new one does not, the difference is in the package rather than the LMS. SCORM Package Diff compares two versions and tells you what changed: files added or removed, the manifest identifiers, the tracking settings. It turns “it worked last monthy” into a specific difference you can act on.
When the LMS gives you an error code
SCORM error messages are written for developers and shown to instructional designers, which is why they read like nonsense. The LMS Error Decoder translates the common ones into what actually happened and what to do, including the ones that appear after import while the course is running.
It uploaded, but nothing is tracking
A different problem with the same feeling. The usual causes, in the order worth checking:
- The course was published to track the wrong thing. Tracking by number of slides viewed when you expected a quiz result, or a quiz that never reports because the results slide is never reached.
- Completion is set on the LMS side too. Many systems have their own completion rule that overrides what the course reports. Two settings, two places, one argument.
- Suspend data is too large. SCORM 1.2 gives a course a small amount of space to remember where the learner got to, and a long course with many questions can exceed it. The Suspend Data Calculator estimates whether yours will fit before the learners find out.
- The learner opened it outside the LMS. Launching the course from a copied link, or from a folder on a shared drive, means there is no LMS to talk to and nothing is saved.