Blog

Product & Updates

How to Upload a SCORM Course to Moodle (Step by Step)

July 21, 2026

Moodle handles SCORM well, but the defaults aren't always what you want, and a package that uploads cleanly can still fail to track completion. Here's the full process.

Before you start

You need a SCORM 1.2 package as a single .zip file, and a Moodle course you have editing rights to. Don't unzip the package — Moodle expects the archive.

Uploading the package

  1. Open your Moodle course and turn on Edit mode (top right).
  2. Select Add an activity or resource in the section where you want the course to sit.
  3. Choose SCORM package.
  4. Give it a name — this is what learners see, so make it the course title, not the filename.
  5. Drag your .zip into the Package file area.
  6. Select Save and display.

Moodle unpacks the package and shows you the launch screen. If it errors here, the package structure is wrong — usually a missing or malformed imsmanifest.xml at the root of the zip.

The settings that actually matter

Most Moodle SCORM defaults are fine. These four are worth changing deliberately:

  • Display package — 'New window' avoids Moodle's own navigation fighting the course's. 'Current window' keeps learners in context. Pick based on whether your course has its own navigation.
  • Grading method — 'Learning objects' counts completed SCOs; 'Highest grade' uses the best score. For a single-SCO course with a quiz, use Highest grade.
  • Attempts — unlimited is usually right for training; limit it for assessments.
  • Force new attempt — set to 'No' unless you want learners restarting from scratch each visit.

Completion tracking

This is where most problems appear. Scroll to Activity completion and set the condition explicitly — 'Show activity as complete when conditions are met', then tick the SCORM-specific option (status is complete/passed, or minimum score).

Leaving completion on 'Students can manually mark' means Moodle will never read the SCORM status, and learners will appear incomplete no matter what they do in the course.

Testing it properly

Don't test as an admin — admins often bypass tracking. Create a test student account, enrol it, complete the course fully, and check the Reports tab on the SCORM activity. You want to see status 'completed' or 'passed', not 'incomplete'.

If the report shows attempts but no completion, the course isn't calling LMSSetValue on the completion status — that's a packaging problem, not a Moodle one.

Common errors

  • 'Could not find imsmanifest.xml' — the manifest isn't at the root of the zip. Re-zip from inside the folder, not the folder itself.
  • Course launches blank — usually a mixed-content block. If Moodle is on HTTPS and the package references HTTP resources, the browser blocks them.
  • Completion never registers — check Activity completion settings first, then the package's tracking calls.
  • Upload size rejected — Moodle has a max upload size set by your admin. Large media packages may exceed it; host media externally or ask your admin to raise the limit.

If you're building the course

CourseConverter exports SCORM 1.2 packages that upload to Moodle without any of the above surprises, with completion tracking wired up by default. You can also bundle media into the package for offline or restricted-network delivery.