SCORM is a technical standard for online courseware, and can be utilized in a course in many ways, from amazingly simple bookmarking to achingly complex sequencing and navigation. SCORM’s most important contribution to elearning — in my mind, anyway — is the standardization of communication between a course and an LMS, which enables course portability between LMS systems regardless of course or LMS vendor.

SCORM API Wrapper [JavaScript]

A revised version of the ADL SCORM API wrapper, intended to bring the wrapper more in line with the “Web 2.0” world.  [ read more ]

ActionScript SCORM Classes (API Wrappers)

Companion ActionScript classes for the JavaScript-based SCORM API Wrapper. Designed to simplify working with SCORM in Flash. Comes in both AS2 and AS3 flavors.
[ read more ]


Feeling stuck with a technical issue? Check out the eLearning Technology and Development Google Group.

New SCORM ebook coming soon!

I'm writing an ebook explaining how to build an HTML-based SCORM course. Subscribe to be notified when it's ready, as well as receive early bird pricing and some free goodies!

No spam, no sharing your email address, unsubscribe at any time. Powered by ConvertKit

16 thoughts on “SCORM projects”

  1. Hi — quick question. In your downloads section, you say, “Please do not hotlink or redistribute these files without my permission.”

    I’m pretty sure my this means not putting these wholesale on a different site, but we are still free to use them internally (with attribution, of course) even for a commercial product. But there’s some concern at the company I’m working for, and I wanted to be sure.

  2. Your assumptions are correct. You know how some sites are scavenger sites, re-posting other people’s files and blog posts in order to generate traffic and make money off ads? That’s what I want to avoid. By “redestributing” I generally mean don’t make my files available as a download on your site or hand it out on a CD unless it’s part of your project; in other words, don’t hand out stand-alone copies of my files.

    They’re under an MIT license, so using them in a commercial product is fine. If you have a legitimate use for my files and keep all notices intact (retain attribution), go ahead and do whatever you want with them.

  3. Hi Philip,

    That’s great work, and work that you just spared me, which always makes me happy!

    Thank you very much!

    I’m new to the SCORM scene, having been hired a few days ago only, but it already motivates me a great deal! If I come up with some good stuff that I’m allowed to share, I’ll keep you in touch!


  4. Great site/information here, appreciate your efforts.

    I was wondering, have you ever considered putting a configurable “delay” in the wrapper?

    The reason I ask is as follows:

    The users I support connect to our LMS on a number of different internet connections.

    Many are on fast ethernet, but some do connect from home, over wifi or even via cellular data networks.

    Some of these connections have higher than average latency or poor bandwidth performance.

    While my connection is good from my office location, I’ve used tools like IE Throttle to emulate a poor performing connection.

    While I expected things like videos to load slowly and stutter, I also find that some of our courses freeze up (or lock up the browser entirely). Sometimes the API also fails to load (Although our retries is only set to 99, I’ll try your setting of 500 and see if that helps in that case).

    Ultimately, though.. I’m wondering if adding a short delay between any communication causing actions may make the code better able to deal with bad connections?

    I apologize if you already have some functionality like this built into the api, If not… do you think it may be a worthwhile addition? Any recommendations on how this might best be added to the wrapper?

    (Not much of a coder myself.. I can deconstruct and tweak, but a bit weak on the “sit down and make it” side 🙂 )

    1. @dan interesting request. i’ve never come across that particular issue myself. personally, i’d leave the delay out of the wrapper and add some kind of time manager to your course code. For example, i’d probably do something like this (pseudocode):

      function delayedEvent(func){
         //timer code here
         //invoke function
         scorm.set("cmi.suspend_data", "mycustomdata");
  5. Hi Philip,

    Thank you for this great resource.

    I am new to scorm and very interested in playing around with the flash demos you’ve made available. I can’t seem to get them to connect to the lms. Is it still active or am I missing something? I’m opening the index page (locally, SCORM_AS2_demo) in a browser but no dice.

    I’m assuming it’s not possible to make a connection while testing the fla in the flash environment. When you are developing, what is the best way to test your fla? I have worked with a third party lms api which worked through wsdl calls and I was able to test directly from flash. Is this not the case with scorm?

    Man, I have a lot to learn!

    thanks again

    1. @matt you need to test in an LMS. SCORM is predicated on the availability of the SCORM API, which is a JavaScript object in the course window. So 1) you need to be in an environment that supports JavaScript (the Flash IDE does not) and 2) you need to have the SCORM API in your browser window when you test. The API is furnished by an LMS at runtime, so local testing will fail unless you’re running an LMS locally. If you’re adventurous, you can download some open-source LMSs for local testing, or you can use a service like

  6. Pingback: pipwerks » DevLearn 2010 Recap

  7. Hi again,
    Thanks for your response (back in October).
    I have two more questions and hopefully they only require quick answers.
    I am hoping to convert an online flash-based learning program into individual SCORM objects. My questions are:
    1. Do SCORM objects behave like a website? ie. In our case, a root swf loading other swf’s as well as xml files and flv video files. I’m assuming yes.
    2. Is there a recommended file size for the zip file? Since each of our modules contain up to 100M of video, I’m wondering if that is too large.
    I really appreciate your help.

  8. @matt you should post your questions to the E-Learning Technology and Development Google Group… it’s a better forum for questions and discussions.

    Quick answers:
    1. The simple answer is yes, a course is like a website but with tracking scripts added to it.
    2. There’s no official limit on ZIP size, but it’s really up to your LMS and what they permit.

  9. One last question, I promise!

    This one refers to your AS2 demo.
    I’m hoping to test it at the SCORM Cloud test track site.

    I uploaded the file ‘’
    but when I try to launch it, I get the message:
    “No deliverable activities found. Would you like to enter debug mode?”

    I also see this message:
    ‘Parser Warnings – An item element was found that references a resource/submanifest with the identifier ‘SCO_Resource_01′ that does not exist.’

    Any idea what’s going on here?

    Thanks again,

  10. Hi Philip,
    In your AS2 sample download, there is some missing information in the tag.
    I changed the indentifier to “SCO_Resource_01” with underscores and added the “interface.swf” and “swfobject.js” references and now the course works fine on Test Track. (see below)
    thanks again,

  11. Quick question with regard to your SCORM class. Are the call & responses to the LMS assumed to be instantaneous? I’m wondering if this is the case if either the client connection or the server is slow.

Comments are closed.

Scroll to Top