The ID Toolbox
← Guides

How to open a SCORM package without an LMS

A SCORM zip is a folder of web files with a manifest on top. Unzip it and the course usually plays in your browser. Which file to open for Storyline and Rise, what you lose without an LMS, and the twenty lines that fix the one error that stops you.

Updated September 15, 2026

A SCORM package looks like a special format and is not one. It is a zip holding ordinary web files, with a file called imsmanifest.xml on top that tells an LMS which page to launch and what to track. Take the manifest away and what is left is a website. That is why a course usually plays perfectly well on your own machine, and why the parts that need an LMS are the only parts that break.

The two-minute version

1Unzip it

Right-click the zip and extract it to its own folder. Do not double-click your way inside the zip and try to run the course from there: Windows will open the page without its neighbors and you will get a blank screen and the wrong idea.

2Open the right file

Which file that is depends on who published the course, and the two you will meet most often are these.

  • Storyline 360: open story.html at the top of the folder. It plays. index_lms.html next to it is the version for the LMS, so start with story.html.
  • Rise 360: open scormcontent/index.html. In the export I tested it played straight off the disk. If you get the error further down this page instead, that section fixes it.
  • Anything else: open imsmanifest.xml in a text editor and look for href= on the resource element. That filename is what the LMS launches, so it is what you launch.

3Expect the tracking to do nothing

No LMS means no bookmarking, no completion, no score reported, and nothing remembered when you close the tab. The course still runs and the quiz still tells you whether you were right. It just tells nobody else, and starts from the beginning next time.

“Content launched outside of a supported LMS environment”

Some courses check for an LMS before they will start, and Rise is one of them. In my testing the same Rise package played when the file was opened from disk and showed that message when the folder was served from a local web server, so which way you open it matters.

If you hit the message, give the course something that looks like an LMS. Save this as player.html inside the unzipped folder, next to imsmanifest.xml:

<!doctype html>
<meta charset="utf-8">
<title>Local SCORM stand-in</title>
<style>html,body{margin:0;height:100%} iframe{border:0;width:100%;height:100%}</style>
<script>
  // A SCORM API that stores nothing. Enough for a course to start.
  var data = {};
  window.API = {                                  // SCORM 1.2
    LMSInitialize: function () { return "true"; },
    LMSFinish: function () { return "true"; },
    LMSGetValue: function (k) { return data[k] || ""; },
    LMSSetValue: function (k, v) { data[k] = v; return "true"; },
    LMSCommit: function () { return "true"; },
    LMSGetLastError: function () { return "0"; },
    LMSGetErrorString: function () { return "No error"; },
    LMSGetDiagnostic: function () { return ""; }
  };
  window.API_1484_11 = {                          // SCORM 2004
    Initialize: function () { return "true"; },
    Terminate: function () { return "true"; },
    GetValue: function (k) { return data[k] || ""; },
    SetValue: function (k, v) { data[k] = v; return "true"; },
    Commit: function () { return "true"; },
    GetLastError: function () { return "0"; },
    GetErrorString: function () { return "No error"; },
    GetDiagnostic: function () { return ""; }
  };
</script>
<iframe src="scormdriver/indexAPI.html"></iframe>

Then point the last line at whatever the manifest says to launch (scormdriver/indexAPI.html for Rise, index_lms.html for Storyline), serve the folder, and open player.html. Serving matters: browsers will not let a page opened from disk talk to a page inside its own frame, so this recipe needs a local server. One line, in the unzipped folder:

python -m http.server 8000

Then go to http://localhost:8000/player.html. The course starts, the fake LMS accepts everything it is told and remembers none of it, which is exactly what you want for a look.

When you need the tracking to work too

If the question is not “what is in this course” but “will it report properly”, a stand-in will not answer it. Put the package in SCORM Cloud, which is the reference implementation everyone tests against. Its free tier was three courses and ten resettable registrations when this was written, which is enough to prove a package works before you blame your LMS.

Before that, it is worth knowing whether the package is even valid. A surprising share of “my LMS will not take it” cases are a manifest promising files that are not in the zip.

When you do not want to run it at all

Often the real question is what is inside: how long the course is, what it weighs and why, whether the narration is captioned, what the quiz asks. Running the course to find that out is the slow way.

The Course File Inspector reads the package and reports the inventory: slides, narration runtime and word count, caption coverage, and what is eating the megabytes. Course Content Recovery goes further and takes the content back out as a storyboard, the questions with their answers, and the media named by slide, which is the tool to reach for when the source file is gone.

One caution before you open a stranger’s package

A SCORM package is a pile of HTML and JavaScript, and opening it runs that JavaScript on your machine, inside the browser’s sandbox. For a course from a vendor you are working with, that is fine. For a zip that arrived from someone you do not know, treat it the way you would treat any unknown web page: look at it in a browser profile you do not care about, and do not type credentials into anything it shows you.

Questions people ask

Can I just put the unzipped folder on a website?

Technically yes, since it is web files, and the course will play for anyone with the link. Two caveats worth saying out loud: nothing gets tracked, and publishing a course outside the LMS may not be yours to do. Check who owns the content before it ends up on a public URL.

Can a SCORM package be turned into a video or a PDF?

Not by any honest tool. You can record the screen while the course plays, which gives you a video of one path through it, and you can get the text and media out for a document. What you cannot do is convert the interactivity into something linear and have it still make sense.

The course plays but the quiz result slide is stuck.

That is the usual sign of a course that expects an LMS to answer it. Use the stand-in page above, which replies to everything the course asks, or upload it to SCORM Cloud where the answers are real.

Is xAPI or cmi5 the same?

Close enough for opening it. An xAPI or cmi5 package is still a zip of web files with a manifest, so the same unzip-and-launch approach works. The difference is where the tracking goes, which is a learning record store rather than the LMS, and in both cases that part does nothing locally.

Do I need to ask the vendor for anything else?

If you want to edit the course rather than watch it, yes: the package is the finished output, not the project. Lost the Storyline source file? covers what to ask for and what to do when nobody has it.

Read next

Tools in this guide