“imsmanifest.xml not found” or “not a valid SCORM package”: fix the zip
Updated 16 October 2026
Quick fix
The LMS looks for imsmanifest.xml at the very top of the zip and didn't find it there.
- Most often, it is inside an extra folder. Zip the contents of the folder, not the folder, or upload the tool's own zip unchanged. Steps.
- A Storyline zip with
story.htmland no manifest is a web publish: publish for an LMS. How. - Otherwise: a renamed or broken manifest, two courses in one zip, or a version or size your LMS refuses. Details.
Drop the refused zip into Alder (free, nothing is uploaded). It finds the manifest even inside a folder and names the folder.
The course is inside an extra folder
Most LMSs reject the upload; the rest import it but can't launch it. It happens when you zip the output folder yourself instead of the files in it. Any files that sit next to that folder in the zip are not part of the course either.
Zip the contents, not the folder
Unzip the package and open the course folder. Select everything inside it (
imsmanifest.xmland all the other files and folders) and zip those items. The new zip has the manifest at the top.Or upload the tool’s own zip, unchanged
In Storyline, publish with Publish → LMS / LRS and click “Zip” in the window that opens when publishing finishes. In Rise, Publish → LMS downloads a zip that is already laid out correctly: upload it without unzipping and re-zipping it. In Captivate, upload the zip Captivate makes when you publish for an LMS.
Or let Alder rebuild the zip
On the STRUCT-001 card, the fix “Move the course to the top of the zip” rebuilds the zip starting at the course folder, and leaves out anything outside it. Applying and previewing it is free; downloading the rebuilt zip needs Pro. The free route is the first two steps above.
It is a web publish, or there is no course file
A Storyline zip with story.html and no imsmanifest.xml came from Publish → Web, which is meant for a web server. There is no manifest to find. The same goes for a zip with no imsmanifest.xml (SCORM), tincan.xml (xAPI), cmi5.xml (cmi5) or AICC course file anywhere: it was not published for an LMS.
Publish for an LMS
Choose SCORM 1.2 or SCORM 2004 (or xAPI or cmi5 if your LMS uses them) when you publish. In Storyline that means Publish → LMS / LRS instead of Web.
Other causes
- More than one course is in the zip. Two manifests in different folders, and none at the top: the LMS can't tell which one is the course.
- The manifest was renamed or edited by hand. LMSs look for the exact lowercase name, and most run on servers where letter case matters, so
IMSManifest.xmlis not found. A hand edit that breaks the XML is just as bad: LMSs read the manifest strictly, and one broken tag is enough to fail the upload. - Your LMS doesn't accept what is inside. Some LMSs refuse a SCORM version or a size. TalentLMS says it supports SCORM 1.2 only, with one SCO (one tracked part) per package. Docebo's maximum is 1,024 MB. Many LMSs refuse packages over about 250 MB, and uploads that big can time out. A few strict LMSs also reject the hidden
__MACOSXfolder a Mac adds when you zip from Finder.
Check the zip before you upload it again (free)
Upload refused? Check your course for this. Alder puts the matching problems first.
Drop the refused zip into Alder
Open Alder and drop the exact zip the LMS refused. It is read in your browser; nothing is uploaded. If the manifest is inside a folder, Alder finds it there and keeps checking, so you also learn about any other problem in the same pass.
Read the answer at the top
An extra folder shows as “The course is inside an extra folder in the zip” (STRUCT-001), with the folder's name. A web publish or a missing manifest shows as STRUCT-002, which says what Alder found instead. A damaged manifest shows as MANIFEST-001, with the line that broke.
No problem found? Open the checks that passed
The list under “checks passed” confirms the zip layout: the course files are at the top of the zip, and the zip has the file LMSs use to recognize a course. When STRUCT-001 and STRUCT-002 are in the passed list, upload it to your LMS.

A zip laid out the way LMSs expect: Alder's sample course. Choose your LMS under “Uploading to”
Alder then checks that LMS's documented limits. Every problem that would stop the upload is shown free, including the TalentLMS and Docebo ones.
LMS notes
- TalentLMS shows “This is not a valid SCORM file” for a zip with an extra folder (TalentLMS), and says it supports SCORM 1.2 only, not SCORM 2004 or packages with several SCOs.
- Docebo gives 1,024 MB as the maximum SCORM file size, and lists SCORM 1.2 and SCORM 2004 3rd Edition (Docebo).
- Course authors on E-Learning Heroes discuss the same error in “Not a valid SCORM package”.
What the LMS is looking for
A SCORM package is a zip with one special file in it: imsmanifest.xml, the manifest. It tells the LMS that the zip is a course, what it is called and which page to open first. LMSs only look for it at the top of the zip, not in folders inside it. If it isn't there, the upload fails with a message such as “imsmanifest.xml not found”, “not a valid SCORM package” or “invalid SCORM file”. TalentLMS's help article on this error describes the most common case: the published folder was zipped, so the manifest ends up one level down.
Still not working?
- The upload works but the course won't open: see blank screen or endless loading.
- It opens but says “Unable to acquire LMS API”: see what that message means.