---
title: "A SCORM 1.2 package asking for the SCORM 2004 element cmi.learner_id | SCORM Lab"
canonical_url: "https://scorm-lab.com/errors/cmi-learner-id-invalid-element"
last_updated: "2026-09-22T15:37:54.480Z"
meta:
  description: "The package is running as SCORM 1.2 but its wrapper is reading a SCORM 2004 element name. SCORM 1.2 calls the same idea cmi.core.student_id."
  "og:description": "The package is running as SCORM 1.2 but its wrapper is reading a SCORM 2004 element name. SCORM 1.2 calls the same idea cmi.core.student_id."
  "og:title": "A SCORM 1.2 package asking for the SCORM 2004 element cmi.learner_id"
  "twitter:description": "Free in-browser SCORM debugger. Drop a SCORM 1.2 or 2004 .zip to inspect the API transcript, CMI data model, sequencing and lint. Nothing uploaded unless you choose to share."
  "twitter:title": "Debug any SCORM package in your browser, free"
---

# A SCORM 1.2 package asking for the SCORM 2004 element cmi.learner\_id

```
SCORM Error 101: The data model element passed to getCMIValue (cmi.learner_id) is not a valid SCORM data model element
```

The package is running as SCORM 1.2 but its wrapper is reading a SCORM 2004 element name. SCORM 1.2 calls the same idea cmi.core.student\_id.

## What it means

SCORM 1.2's cmi.core branch defines student\_id (and student\_name); SCORM 2004 dropped cmi.core entirely and renamed the same idea to cmi.learner\_id / cmi.learner\_name at the top of cmi. A 1.2 runtime has no cmi.learner\_id at all, so asking for it doesn't fail with "wrong version" — it fails exactly like asking for a made-up element, because as far as SCORM 1.2 is concerned it is one. The 1.2 RTE has no specific code for "unknown element"; it falls back to error 101, General Exception, with the element named in the message text so at least the diagnostic is legible.

## Which authoring tools produce it

Content authored or configured for SCORM 2004 — Storyline, Captivate, iSpring and Lectora all default their SCORM 2004 output to learner\_id/learner\_name — then republished or reconfigured as SCORM 1.2 without regenerating the runtime wrapper. Also common with a hand-rolled or shared SCORM wrapper reused across a 1.2 and a 2004 build, where only the manifest schemaversion was changed and the wrapper JS was not.

## How to confirm it in SCORM Lab

Check the Manifest preview's version badge first — it reads "SCORM 1.2" here, not 2004. Then open the Transcript tab: the failing GetValue call sits on a row for cmi.learner\_id with err 101; expand it for the diagnostic text quoted above. The Console tab shows the same message if the wrapper also logged it.

## The fix

Match element names to the version schemaversion actually declares. If the package is genuinely 1.2, replace cmi.learner\_id with cmi.core.student\_id (and the same pattern elsewhere: learner\_name → student\_name, completion\_status/success\_status → lesson\_status — cmi.score.scaled has no 1.2 equivalent at all, see that page). If the content was authored for 2004, re-export from the authoring tool with SCORM 2004 selected rather than hand-editing the manifest version — schemaversion 1.2 with 2004 element names isn't a real combination either tool supports.

## Worth knowing

A single misnamed call like this is often the only 2004-ism in an otherwise-correct 1.2 wrapper — check whether cmi.core.\* is used correctly everywhere else before assuming the whole runtime targets the wrong version.

[Open the package in SCORM Lab](https://scorm-lab.com/) to see this error fire in the Transcript or Console tab. It runs in your browser, and nothing is uploaded unless you choose to share it.

Still stuck after the fix? Bring the package to a [SCORM consult](https://calendar.lostendfound.com/larry/scorm-consulting).