Skip to main content

Export a course to your LMS (SCORM 1.2, SCORM 2004, cmi5, xAPI)

How to export a SCORM 1.2, SCORM 2004, cmi5 or xAPI package, which to choose, how to upload it to Moodle and SCORM Cloud, how question pools behave in an LMS, and how resume data is kept inside SCORM 1.2's 4,096-character limit.

Last updated 8 min read

Step by step

  1. Test it first

    In the course editor open Export and choose Test in a SCORM player. It runs the exported package against a built-in SCORM inspector, so you see what the LMS will see without uploading anything.

  2. Pick a language

    If the course has translations, choose the language in the Language list of the Export menu — or All translated languages in one package for a single package with a language picker (see Translate a course).

  3. Choose the format

    SCORM 1.2 package, SCORM 2004 package, cmi5 package or xAPI (Tin Can) package. A zip downloads.

  4. Upload the zip to your LMS

    Upload the zip as it is — do not unzip it. Steps for Moodle and SCORM Cloud are below.

  5. Launch it once, then relaunch

    Check that completion and score arrive in the LMS, then leave partway through and relaunch to check the learner resumes where they left off.

Which format to choose

  • SCORM 1.2 — the one every LMS accepts. Choose it unless you have a reason not to. It has a single status field (passed, failed, completed, incomplete) and a score.
  • SCORM 2004 (3rd Edition) — reports completion and success separately and a scaled score. Choose it if your LMS or reporting needs that split.
  • cmi5 — the modern xAPI-based successor to SCORM. Only for an LMS that supports cmi5 and has a learning record store behind it.
  • xAPI (Tin Can) — the classic Tin Can launch, for an LMS that launches xAPI packages with an endpoint and credentials.

Also in the Export menu: Project export, a .opencourse.zip of the whole course and its media that you can re-import or keep in version control. SCORM, cmi5 and xAPI packages are for delivery; the project export is what keeps the course editable if you ever leave.

If you would rather not upload packages at all, LTI 1.3 launches the course from your LMS while it stays hosted in Scormbusters.

Courses built on the slide canvas

Courses in the Scenes (slide) editor — including imported Storyline courses — export from the editor's Export menu: SCORM 1.2, SCORM 2004, cmi5 or xAPI (Tin Can). Before it exports, preflight runs: if anything in the course will definitely not work in an LMS, such as a trigger pointing at a deleted slide or a question with no correct answer, the export stops and the problems are listed so you can fix them. Accessibility problems do not stop it: if they are all that is left you can Export with N known issues, and the audit log records it (see Accessibility triage).

Uploading to Moodle

SCORM 1.2 verified on Moodle 4.5 (17 September 2026), including resume after a relaunch. The SCORM 2004 probe also passed there, but Moodle documents its native SCORM 2004 support as incomplete, so prefer SCORM 1.2 for Moodle.

  1. In your Moodle course, turn editing on.
  2. Add an activity or resource → SCORM package.
  3. Give it a name and drop the exported zip into Package file.
  4. Save and display, then launch it.

Moodle reopens a completed attempt in review mode on relaunch, which is correct. A learner who leaves partway gets their progress back.

Uploading to SCORM Cloud

SCORM Cloud is Rustici's reference implementation, and a good neutral check before you blame an LMS. SCORM 1.2 export verified there on 17 September 2026: status, score, interactions and resume after a full relaunch all passed.

Import the zip into your SCORM Cloud library, launch it, then relaunch to confirm resume.

Other LMSs

Canvas, Blackboard, Cornerstone, TalentLMS, Docebo and others have not been verified yet — not because anything is known to fail, but because nobody has run the check and recorded the result. Upload the zip wherever your LMS accepts a SCORM package. (In Canvas, SCORM support depends on the SCORM integration your institution has installed; if it has none, LTI 1.3 is the alternative.)

Two behaviors of real LMSs are already handled: some open the SCORM session before the course does and report it as an error, and some report a returning learner's entry mode as empty rather than "resume". The package checks whether the session works and restores progress from its own saved data, so neither sends learners back to the start.

Question pools and slide draws

A lesson can show each learner only some of its questions: in the lesson editor, the pool control (All questions / Draw N of M) sets Questions per attempt. Imported question banks from Captivate and Storyline arrive with this already set.

In an exported package the draw is made once per attempt and saved with the learner's progress, so a learner who resumes sees the same questions, and a new attempt draws again. The score counts only the questions that were drawn. Storyline slide draws on the slide canvas behave the same way, drawing slides instead of questions.

Resume data and the suspend_data limit

SCORM 1.2 guarantees only 4,096 characters of cmi.suspend_data, the field an LMS keeps for resuming, and many LMSs enforce exactly that. When a course writes more, the LMS usually truncates it silently, the saved data no longer parses, and the learner starts again from nothing. It is one of the most common reasons a SCORM course "does not resume".

Scormbusters packages keep their resume data under 3,800 characters in both SCORM versions. A multi-language package also saves the learner's chosen language there (a few characters, never dropped). On the slide canvas, where more state is saved, the package sheds the least important state first — object appearance, then layers and visited slides, then variables — and always keeps completed lessons, the score and question-pool draws.

cmi5 and xAPI packages do not use suspend_data; they save progress to the learning record store as an xAPI State document, with the learner's browser as a fallback when the LRS cannot be reached.

Part of the documentation: Deliver.

Found something here that does not match what the product does? That is a bug in the guide — see all guides or tell us from the Help Center.