Tools › E-learning
Suspend Data Decoder
Paste a learner's suspend_data (the progress a SCORM course saves in the LMS) to see what's in it, decoded from LZ-String, Base64, URL-encoding or JSON, and how close it is to each SCORM version's size limit.
About this tool What it's for, how to use it and an example
What it's for
See what a SCORM course has saved about a learner’s progress. Courses keep their place, answers and state in
cmi.suspend_data, often compressed, and the LMS hands it back on the next launch. When a learner’s progress is
lost, or a course won’t resume, the value in the LMS usually shows why: it’s cut short, empty, or over the limit.
For example, when a learner says a course keeps starting from the beginning, copy their suspend_data from the LMS (or from the Package Player’s stored values) and paste it here to see whether it decodes, and how big it is.
How to use it
Paste the value; it’s decoded as you type. The tool tries, in turn and as many layers deep as needed:
- JSON, shown laid out with indents.
- URL-encoding (
%7B%22…). - LZ-String, a compression that many course authoring tools use, in its Base64, URI-safe and UTF-16 forms.
- Base64.
The message line lists the steps that worked, such as “LZ-String (Base64), giving JSON”. The table shows the value’s size as a share of each standard’s limit: 4,096 characters in SCORM 1.2, 4,000 in SCORM 2004 2nd edition, and 64,000 in the 3rd and 4th editions. Copy takes the decoded result.
Example
Paste this:
N4IgDgTg9g5hCmBnRIBcoA2TFQHZoGYAaEAEz3jQG0BGIgJgF0BfZoA=
The message reads “56 characters. Decoded: LZ-String (Base64), giving JSON.” and the result is
{"progress": {"lesson": 3, "done": [1, 2]}} laid out over several lines. It uses 1.4% of SCORM 1.2’s limit.
Good to know
Articulate Storyline uses its own packed format, which isn’t published. The tool recognises its look (letters
and digits with ~ between parts) and says so, but doesn’t guess at it. Other courses may use their own formats
too; anything that isn’t one of the forms above is shown as it is.
An LMS may cut suspend_data short at its limit without warning, and a cut-short compressed value won’t decode at all, which is itself a sign. The limits are what the standards guarantee; many LMSs allow more, some less.
Private: this tool runs in your browser. Nothing you type, paste or choose leaves this page.
Saved you a few minutes? Say thanks with a coffee.
Something wrong with this tool, or missing from it? Report a bug or suggest a feature.