Skip to content

SCORM resume not working: why learners start from the beginning

Updated 16 October 2026

Quick fix

Resume needs the course to save the learner's place and the LMS to hand it back. Check:

  • Resume is off in the course. In Storyline, set “On restart” to “Prompt to resume” or “Always resume”. Where it is.
  • Long course or big quiz: the saved progress can go over SCORM 1.2's 4,096-character limit. What to do.
  • The course ends the attempt instead of pausing it. What to check.
  • The LMS starts a new attempt every time (in Moodle, “Force new attempt”). The setting.

Drop the zip into Alder (free, nothing is uploaded). Its test player lets you leave partway, come back as a returning learner, and see the saved progress size.

Resume is turned off in the course

In Storyline, “Never resume” means every launch starts at the first slide, even though the LMS offers to save the learner's place. If the course is tracked by slides viewed, a learner who leaves partway has to view them all again in one sitting.

  1. Turn resume on (Storyline)

    Open Home → Player → Other → Resume → On restart and choose “Prompt to resume” or “Always resume”. With “Prompt to resume”, a learner who answers no starts again, which is expected.
  2. In Captivate

    Captivate has its own version of this, “Never Send Resume Data”: see Captivate course not resuming.

The saved progress is too big

SCORM 1.2 only guarantees 4,096 characters of suspend_data, the block of text where tools like Storyline pack which slides were seen and how questions were answered. Long courses and big quizzes go over it, and the LMS refuses or cuts the save, so the learner returns to an older place or to the start. We tested this on SCORM Cloud: it refuses any SCORM 1.2 save over 4,096 characters.

  1. Bring the saved progress down

    Follow the suspend_data page to check the 4,096 limit. In Rise, the usual fix is to publish for SCORM 2004 4th Edition, which guarantees 64,000 characters: in Publish → LMS, choose SCORM 2004 in the “LMS” drop-down and pick the 4th Edition. In Captivate, see the Captivate page.

The course ends the attempt instead of pausing it

When the learner leaves, the course should set its exit value to "suspend", which means “keep my place”. If it sends anything else, the LMS may treat the visit as finished. In SCORM 2004 any other exit value ends the attempt, so the next launch is a new one. A strict SCORM 1.2 LMS also starts from the beginning; some LMSs resume anyway, which hides the problem until the course moves to another LMS.

  1. Leave the exit settings alone

    Storyline has no publish option for its exit values. They sit in the SCORM driver it adds to the package (lms/scormdriver.js), and Alder's TOOL-006 says in words what they do. Articulate only suggests editing that file when the “Exit course” trigger does not close the window.

The LMS starts a new attempt every time

In Moodle, the SCORM activity's “Force new attempt” setting set to “Always” makes each re-entry a new attempt, and the learner is not returned to where they were. Ask your LMS admin to change it (see LMS notes).

Check the zip before you upload it again (free)

Learners starting from the beginning? Check your course for this. Alder puts the matching problems first and gives you a short test script. Run it again on the new zip after a fix.

  1. Drop the published zip

    Open Alder and drop the zip. It is read in your browser; nothing is uploaded. For a Storyline course, the findings include its resume option (TOOL-005), and for Captivate, TOOL-012 if resume data is switched off.

    Script for Progress not saved: 1. Launch the course and go a few slides in. 2. Press I'm done without finishing. 3. Choose Test as a returning learner; the course should open where you left off. 4. On a long course, take the longest path too: SCORM 1.2 can save only a little progress.
    The test script Alder shows under “Test it as a learner” when you start from “Progress not saved”.
  2. Leave partway

    Click “Launch the course”, go a few slides in, and press “I'm done” without finishing. Read “Next time”. “Resumes” means the course asked the LMS to keep the learner's place. If it says “Starts over”, look for RUNTIME-010 in the findings: it names the exit value the course sent.

    What an LMS would record after leaving Alder's sample course on slide 3: Finished? No, not finished (incomplete). Passed? No pass or fail sent. Score: no score sent. Next time: Resumes, where they left off.
    Alder's sample course, left on slide 3 of 6.
  3. Test as a returning learner

    Click “Test as a returning learner”. Alder opens the course again with the data it saved and tells it this is a returning learner. It should open where you left off. If it opens on the first slide, the course is not using its saved place (resume may be off); the call log shows what it asked for and what it got.

    The call log of the returning session: the LMS set cmi.core.entry to resume and restored 28 characters of suspend_data; the course read its status, its bookmark (pass-marks) and its saved progress.
    The returning session's log: the course reads its status, bookmark and saved progress first.
  4. Take the longest path

    On a long course, go through every slide and question and watch “Saved progress (suspend_data)” beside the course. If it goes amber or red, the size limit is your cause.

One limit to know: the returning-learner test always resumes, the way an LMS does for an unfinished attempt. It does not copy an LMS that forces a new attempt, so check that setting in the LMS too.

LMS notes

  • SCORM Cloud (tested in September 2026): an unfinished SCORM 1.2 attempt that exited with “suspend” reopened with entry “resume”, and both the saved data and the bookmark came back. A completed or passed attempt reopened in review mode instead.
  • Moodle: “Force new attempt” has three choices, “No”, “When previous attempt completed, passed or failed” and “Always”. Only “Always” stops an unfinished attempt resuming. Source: Moodle's SCORM settings text.

Why it happens

A SCORM course keeps a learner's place in two fields the LMS stores for it: the bookmark (cmi.core.lesson_location in SCORM 1.2) and cmi.suspend_data. After a "suspend" exit, the LMS tells the course next time that it is a returning learner (cmi.core.entry = "resume") and hands the data back. Learners start over when any step of that round trip breaks.

How a SCORM course resumesSession 1: the learner leaves partway. The course saves their place in cmi.suspend_data and the bookmark (lesson_location) and asks the LMS to keep it with exit "suspend". The LMS keeps the data. Session 2: the LMS sets entry to "resume" and hands the data back, so the course opens where the learner left off. It breaks if resume is off in the course, the saved data is too big, or the exit is not "suspend".SESSION 1: THE LEARNER LEAVESThe course saves their placecmi.suspend_data, lesson_locationand asks the LMS to keep it:cmi.core.exit = "suspend"The LMS stores itTHE LMSKeeps the data until next timeNext launchSESSION 2: THE LEARNER RETURNSThe LMS tells the course to resumecmi.core.entry = "resume"and hands the saved data back.Opens where they left offIt breaks if resume is off, the data is toobig, or the exit isn't "suspend".
Resume is a round trip. Each step has to work for the learner to land where they left off.

Still not working?