To upload a SCORM package in Moodle 5.3, turn editing on in the course, choose SCORM Package from the activity chooser, give it a name, upload the zip in the Package section and click Save and return to course1. The upload is the short part. Whether Moodle then records completion and a grade depends on 3 things matching what your package reports: the Grade settings, Mastery score overrides status, and the SCORM completion conditions234.

Moodle supports SCORM 1.2, not SCORM 2004, though Moodle's SCORM FAQ warns that "some SCORM 2004 packages may appear to work"3.

Where is the SCORM activity in Moodle?

The SCORM activity is in the activity chooser, which Moodle's SCORM activity page tells you to open with editing turned on: "In a course, with the editing turned on, choose 'SCORM Package' from the activity chooser."1 On screen, Moodle's language file spells the name "SCORM package"4.

If your course exists only for this one package, say a client's compliance module, you have a second door: "SCORM packages can also be added by selecting the Single activity course format when setting up a course."1

Once the activity exists, your learners see an Enter button, plus a preview unless it is disabled, and teachers "additionally see a Reports tab"1. You check what Moodle saved from each attempt on the Reports tab.

In a client's Moodle, the form opens with site defaults set at Site administration > Plugins > Activity Modules > SCORM Package2. Moodle 5.3 ships Grading method at Highest grade and Mastery score overrides status at Yes4, but the site admin can change either24.

How do you upload a SCORM package to Moodle, step by step?

Check 3 things about the zip, then add the activity in 6 steps1.

Before you upload:

  1. Open the zip. A file named imsmanifest.xml must sit in the zip's root: the manifest defines the course structure and lists every other file3.
  2. Check the version. SCORM 1.2 works in Moodle 2.1 or higher; SCORM 2004 bugs are "closed as won't fix"3. SCORM 1.2 vs SCORM 2004 covers the choice.
  3. Check the size limit. Uploads are capped at the server, in PHP, for the site, for the course and for the activity, and "At no time can the Course setting over-ride the Site setting, nor can the Site setting over-ride the php.ini setting"5. The site value is at Site administration > Security > Site security settings > Maximum uploaded file size5.

Then the upload itself:

  1. With editing on, choose SCORM Package from the activity chooser1.
  2. "Give it a name and, if required, a description."1
  3. In the Package section, add the zip as it is: "The package file is a ZIP file containing SCORM or AICC course definition files."4 "Drag and drop or click the icon top left to upload your SCORM package."2
  4. If the form shows a Type menu, choose Uploaded package. External SCORM manifest, Downloaded package and External AICC URL link to files hosted elsewhere4. The site admin has settings, Enable external package type and Enable downloaded package type, that present the URL fields for the first two2.
  5. Expand the other sections, "in particular the Appearance and Attempts management sections"1, plus Grade and the completion conditions below.
  6. "Click Save and return to course."1

If you fill in the title and description, select a large file and get a blank page, jump to the errors below. The FAQ names a missing PHP zip library as the likely cause and describes that library as required for Moodle 2.x3.

Which settings decide completion and the grade?

Grading method, Mastery score overrides status and the SCORM completion conditions decide both, and each has to match what your package sends, because Moodle records only what arrives34.

Moodle does not generate scorm content. Moodle presents the content in SCORM packages to learners, and saves data from learner interactions with the SCORM package.

Moodle Docs 5.3, "SCORM FAQ"3

Your package can report a status (cmi.core.lesson_status), a score (cmi.core.score.raw), or both3. If Grading method is Highest grade, Average grade or Sum grade and your package reports only a status, the FAQ says "there will be no numerical score to pass to the gradebook"3. For that package the FAQ points you to Learning objects, which records a 1 or a 0 for each learning object3.

If you do not know what your package sends, the FAQ says to run it through to completion with debugging on3; the test section below shows how. The table's third column is this page's judgment for a typical compliance course, not Moodle's recommendation.

SettingWhere it isWhat to pick for a compliance courseSource
Grading methodGradeLearning objects if the package sends only a status; Highest grade, the shipped default, if it sends a scoreFAQ3; Moodle 5.3 strings4
Maximum gradeGrade100, which the docs call the "Usual setting"; not applicable with Learning objectsSCORM settings2
Number of attemptsAttempts managementYour retake rule; it "works only with SCORM 1.2 and AICC packages"SCORM settings2
Attempts gradingAttempts managementHighest attempt for the best result; Last completed attempt "does not include attempts with a 'failed' status"Moodle 5.3 strings4
Force new attemptAttempts managementNo, so a learner who leaves halfway resumes; Always starts a new attempt on every entryMoodle 5.3 strings4
Force completedCompatibility settingsNo, unless the package never sets a status; it applies to SCORM 1.2 onlyFAQ3; Moodle 5.3 strings4
Mastery score overrides statusCompatibility settingsShips as Yes; first check the mastery score in imsmanifest.xml against your pass markFAQ3; Moodle 5.3 strings4
Require statusCompletion conditionsTick the status your package sends: Passed, Completed, or bothMoodle 5.3 strings4
Require minimum scoreCompletion conditionsOnly if the package sends a scoreFAQ3; Moodle 5.3 strings4
All SCOs must return completion statusCompletion conditionsOff for a package with one SCO; on if every part must be finishedMoodle 5.3 strings4

The help text for Require status says the learner must "achieve at least one of the checked statuses"4, so if your package reports completed and you tick only Passed, no learner ever completes.

None of the Moodle Docs 5.3 pages read for this article describes these 3 SCORM conditions. The Activity completion pages describe the "Completion conditions section of the activity or resource" and an "Add requirements" option without mentioning SCORM67. The labels in the table come from Moodle 5.3's language file4, which does not say where on the form each one sits.

Completion tracking itself "is enabled by default from Site administration > General > Advanced features", and you can switch it for each course in Edit settings7.

Set all of this before your learners start. Once 1 person has completed the activity the options are locked, and if you unlock them, "all completion information for the activity will be deleted then recalculated where possible"7. Manual completion cannot be recalculated, so those learners have to mark it done again7.

What do the upload errors mean, and how do you fix them?

Start with imsmanifest.xml: the first error in the FAQ means Moodle cannot find it, and the usual cause is a zip made from the folder instead of its contents3.

What you seeWhat it meansFixSource
"Incorrect file package - missing imsmanifest.xml or AICC structure"Moodle found no imsmanifest.xml where it looksCompress the files inside the exported folder, not the folder; on Linux servers the name must be all lowercase; export again; the FAQ says the Articulate authoring tool sometimes fails to create the manifestFAQ3; Moodle 5.3 strings4
"An imsmanifest.xml file was found but it was not in the root of your zip file, please re-package your SCORM"The manifest sits inside a subfolderSelect everything inside the folder and compress thatMoodle 5.3 strings4; FAQ3
"You must provide a valid zip file"Moodle could not read the upload as a zipExport or zip the package againMoodle 5.3 strings4
"Manifest not found"Articulate Presenter left blank lines in the manifestFill in LMS Description and Keywords in its Reporting and Tracking Options, then publish againFAQ3
A 404 page inside the playerA file listed in imsmanifest.xml is missing, misnamed or in the wrong folderMake the files and the manifest match; for a misnamed file, "change the manifest rather than the actual file names"FAQ3
A blank page after you fill in the title and description and select a large fileThe PHP zip library is likely missing; the FAQ describes it as required for Moodle 2.xAsk the server admin to check that PHP's zip library is installedFAQ3
The file will not uploadIt is over a limit at server, PHP, site, course or activity levelRaise Maximum uploaded file size within the PHP limit; the docs quote no error text for thisFile upload size5
"failed" for a learner who finishedA mastery score in the manifest, a raw score below it, and Mastery score overrides status onRemove the mastery score node from imsmanifest.xml, or change the settingFAQ3
Old results gone after replacing the packageThe item identifier in the new manifest is differentKeep the item identifier the sameFAQ3
Content may not scroll on an iPhone or iPadMoodle plays SCORM in iFrames, which the FAQ says are not responsive in iOSNo single fix in the FAQ; a new window is one option to testFAQ3; SCORM settings2

If the package uploads cleanly and still will not play for some of your learners, look at their browser. SCORM requires JavaScript, for you and for your users3, and the site admin can turn on Force users to enable JavaScript2.

If Display package opens a new window, "students need to ensure pop ups are enabled"2. The FAQ has no entry for pop up blockers, mixed content or cookies3.

How do you test the package before learners see it?

Run the package in 2 places: in SCORM Cloud to see what it reports, then in Moodle as a test learner with API debugging on, comparing the debug log with Moodle's report83.

Rustici Software's SCORM Cloud tests for free: you import the package, "launch the course in the built-in sandbox and watch it run", and "view completion and pass/fail status along with score and time"8. The sandbox run shows whether your package sends a status, a score or both. SCORM Cloud is not a conformance check: "Cloud does not check for strict technical conformance"8.

Your package can pass in SCORM Cloud and still fail in Moodle. Moodle's FAQ notes that SCORM Cloud handles the mastery score differently by default3. In Moodle, a raw score below the manifest's mastery score sets the status to "failed" while Mastery score overrides status is on3.

Then, in Moodle:

  1. Turn on Activate API debug and tracing in the SCORM admin settings2. Leave the API debug capture mask at the default the FAQ gives, .*, so your test learner is logged; Moodle's own example mask, admin:.*, captures the admin user only34.
  2. Log in as a test learner and press Enter, not Preview, which is the activity's browse mode1. In browse mode, under the SCORM 1.2 rules the FAQ quotes, "the lesson_status may change to 'browsed'"3.
  3. Click through to the end. "Red lines in the debugging log means there was an error in the communication through the API"3.
  4. Open the Reports tab and compare the saved values with the debug log13. If the saved values match the log and the result is still wrong, the FAQ puts the cause in the package or the activity settings3.
  5. Check the gradebook and the Activity completion report too, where a teacher with the Override activity completion capability can also mark it complete by hand6.
  6. Clear your test attempts: select "View reports for x users", tick the attempts and choose Delete at the bottom of the page3.

Under the .* mask every user matches; an admin mask works only by hiding the log from everyone else3. Turn debugging off, or narrow the mask, before your learners arrive.

How to do it yourself

You need a teacher or admin login on the Moodle site, a free SCORM Cloud trial8, any zip tool, a text editor to read imsmanifest.xml3, and 2 test learner accounts. This page read Moodle 5.3's docs and source; on an older Moodle, check each label against your own screens.

  1. Open the zip. Check imsmanifest.xml sits at the root, and search it for adlcp:masteryscore, the element in the FAQ's sample manifest; many authoring suites write one by default3.
  2. Check the version and size. SCORM 1.2, under the site's Maximum uploaded file size35.
  3. Run it in SCORM Cloud and note what it reports: completion, pass/fail, score8.
  4. Add the activity from the activity chooser, editing on1.
  5. Set grade and completion from step 3 before you save: Grading method, Mastery score overrides status, Require status or Require minimum score34.
  6. Run 2 test learners, 1 passing and 1 failing, with Activate API debug and tracing on2.
  7. Read the Reports tab, the gradebook and the completion report for both16.
  8. Clear the test attempts3 and switch debugging off.

This is where a first upload can stall. Your package uploads, plays to the last slide, and the Reports tab shows a status, yet a Receive a grade completion rule7 may never fire. Moodle's pages do not say so outright, so treat this as one reading.

If your package reports only a status and Grading method sits at Highest grade, Moodle 5.3's shipped default4, the FAQ says "there will be no numerical score to pass to the gradebook"3. A rule that waits for a grade may then have nothing to wait for. None of the Moodle Docs pages read for this article says what Receive a grade does in that case.

Run a status-only package through step 6 before you rely on it. Switch Grading method to Learning objects, which the FAQ names as the best setting for a package that does not report a score3, or complete on Require status instead4. If your learners have already finished, unlocking completion deletes and recalculates their records7.

TaskWho can do itRough time
Check the zip, manifest, version and size (steps 1 and 2)Whoever exported the course15 minutes
SCORM Cloud run (step 3)The same person20 minutes for a short course
Add and configure the activity (steps 4 and 5)A Moodle teacher or admin15 minutes
Test learners and records (steps 6 to 8)The same, with 2 test accounts30 to 45 minutes

These are working estimates for one package, not vendor figures. A package with several SCOs takes longer, because every SCO has to report.

The mistakes that cost the most

  1. Zipping the folder instead of its contents. The manifest ends up "2 directories deep" and Moodle reports it missing3.
  2. Changing completion after learners start. Completion is deleted and recalculated, and manual completion has to be redone7.
  3. Replacing the package with a new item identifier. In that case "the tracking data for that SCORM package in Moodle is deleted"3.
  4. Testing in Preview. Browse mode can record "browsed", not the status a real attempt sends3.

Questions people also ask

Can Moodle create a SCORM package? No. Moodle plays SCORM packages and saves what learners do in them; you build the package in an authoring tool and upload the zip3.

Does Moodle support SCORM 2004? No. SCORM 1.2 is supported in Moodle 2.1 or higher; SCORM 2004 is not, and native development on it has stopped3. SCORM 1.2 vs SCORM 2004 covers that choice.

Where can I get a free SCORM package to test Moodle? Moodle's FAQ points to a sample package from Philip Hutchison at pipwerks.com3. This page has not checked that it still downloads.

What is the maximum SCORM file size in Moodle? There is no single number. Your limit is the lowest of the server, PHP, site, course and activity limits, and the site's Maximum uploaded file size cannot exceed the PHP setting5.

Why does Moodle show "failed" when the learner finished? The manifest carries a mastery score, the raw score is below it, and Mastery score overrides status, which ships as Yes, rewrites the status34.


  1. Moodle Docs 5.3, "SCORM activity", last edited 14 August 2025, read 9 October 2026. https://docs.moodle.org/503/en/SCORM_activity ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  2. Moodle Docs 5.3, "SCORM settings", last edited 14 August 2025, read 9 October 2026. https://docs.moodle.org/503/en/SCORM_settings ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  3. Moodle Docs 5.3, "SCORM FAQ", last edited 16 April 2024, read 9 October 2026; full section text from the Internet Archive copy of the same revision in the Moodle 4.5 docs, 6 November 2024. https://docs.moodle.org/503/en/SCORM_FAQ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  4. Moodle 5.3 source code, branch MOODLE_503_STABLE (release 5.3, build 20261005): SCORM activity language strings, mod/scorm/lang/en/scorm.php, and site defaults, mod/scorm/settings.php, read 9 October 2026. https://github.com/moodle/moodle/tree/MOODLE_503_STABLE/public/mod/scorm ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  5. Moodle Docs 5.3, "File upload size", last edited 8 July 2026, read 9 October 2026. https://docs.moodle.org/503/en/File_upload_size ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  6. Moodle Docs 5.3, "Activity completion", last edited 19 August 2026, read 9 October 2026. https://docs.moodle.org/503/en/Activity_completion ↩︎ ↩︎ ↩︎

  7. Moodle Docs 5.3, "Activity completion settings", last edited 7 November 2024, read 9 October 2026. https://docs.moodle.org/503/en/Activity_completion_settings ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  8. Rustici Software, "SCORM Cloud Testing: The Solution for Testing SCORM Content", undated, read 9 October 2026. https://rusticisoftware.com/resources/test-scorm/ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎