[{"data":1,"prerenderedAt":1853},["ShallowReactive",2],{"footer-categories":3,"app-search-categories":227,"standard-cmi5":237},[4,30,55,80,105,130,155,180,205],{"id":5,"title":6,"extension":7,"faq":8,"icon":21,"intro":22,"meta":23,"name":24,"order":25,"slug":26,"stem":27,"tagline":28,"__hash__":29},"categories\u002Fcategories\u002Fauthoring-tools.yml","SCORM authoring tools and course frameworks","yml",[9,12,15,18],{"q":10,"a":11},"Which authoring tools publish cmi5?","Far fewer than claim to. cmi5 needs the full AU lifecycle — launch, session identifier, moveOn rules — not just an xAPI endpoint. The standards matrix on each listing shows what we could verify and where the claim came from; the cmi5 hub page lists the tools together.\n",{"q":13,"a":14},"Do I need a paid authoring tool at all?","Not necessarily. If your courses are text, images and simple assessment, an open-source framework or a markdown-to-SCORM converter produces a perfectly conformant package. Paid suites earn their money on complex interactions, branching simulation, review workflows and support.\n",{"q":16,"a":17},"What is the difference between SCORM 1.2 and 2004 output?","1.2 is simpler, universally supported, and limited: one completion status, a coarse data model. 2004 adds sequencing and navigation, a separate success\u002Fcompletion distinction, and richer objectives — at the cost of LMSs implementing it inconsistently. Publish 1.2 unless something specific requires 2004.\n",{"q":19,"a":20},"Can I move a course between authoring tools?","Rarely without rework. Published packages are portable; source projects generally are not. That lock-in is the strongest argument for the code-first frameworks in this category, where the source is plain text you own.\n","i-lucide-pen-tool","The authoring tool decides what standard your course speaks, long before anyone uploads it. That makes\n\"which standards does it publish?\" the first question worth asking, and the one vendor comparison pages\nanswer least clearly — plenty of tools advertise xAPI support that turns out to mean a statement endpoint\nrather than a conformant launch.\n\nThree quite different things live in this category. **GUI authoring tools** are the familiar commercial\nsuites: you assemble slides, interactions and quizzes, then publish a package. **Code-first frameworks**\nhand you a build pipeline instead, which is the right shape when courses are versioned in git and reviewed\nlike software. **Markdown and document converters** sit between the two, turning writing into a package\nwith the least ceremony.\n\nTwo practical notes. Publishing SCORM 1.2 remains the safest default for reaching old LMSs, and most tools\nstill offer it alongside 2004 — check which edition. And accessibility varies enormously between tools that\nclaim WCAG conformance; if that matters to your client, test the published output rather than trusting the\nbrochure.\n",{},"Authoring tools & course frameworks","1","authoring-tools","categories\u002Fauthoring-tools","Where the course gets made — and where its SCORM output is decided.","CkWCyRM7Yrc2GVdbc65rAQjKCeNcgRzCqKcYYXPQVQk",{"id":31,"title":32,"extension":7,"faq":33,"icon":46,"intro":47,"meta":48,"name":49,"order":50,"slug":51,"stem":52,"tagline":53,"__hash__":54},"categories\u002Fcategories\u002Fconverters-migration.yml","SCORM converters and migration tools",[34,37,40,43],{"q":35,"a":36},"How do I convert PowerPoint to SCORM?","Either with a self-serve converter that wraps the exported slides in a player and manifest, or by rebuilding the deck in an authoring tool. The first is minutes and cheap; the second gives you real interactions, narration and accessibility. Both appear in this directory.\n",{"q":38,"a":39},"Does converting a deck preserve animations and narration?","It depends entirely on the export path. Tools that go through PDF or images lose both. Tools that drive PowerPoint itself can keep timings and audio. Check the listing, and test with your most complicated slide rather than your simplest.\n",{"q":41,"a":42},"Can I convert an existing SCORM package to xAPI?","Partly. Wrappers exist that intercept SCORM API calls and re-emit them as xAPI statements, which preserves completion and score. What they cannot do is give you the richer verbs that make xAPI worth having — that needs authoring for xAPI in the first place.\n",{"q":44,"a":45},"Is SCORM 1.2 to 2004 conversion safe?","Structurally, usually. Behaviourally, test it. 2004's stricter data model rejects values 1.2 tolerated, and sequencing defaults can change how a multi-SCO course navigates.\n","i-lucide-repeat","Most SCORM work does not start from a blank canvas. It starts with a PowerPoint deck that has been through\nfour rounds of review, a folder of MP4s, an H5P activity, or a course built for a platform the client has\nsince left. The tools here move that content across the gap.\n\nThey divide by what goes in. **Document and deck converters** wrap slides into a package, usually adding a\nplayer shell, navigation and a completion rule. **Video and media wrappers** do the same for a single asset,\nwhere the only real question is what counts as \"complete\". **Format bridges** move between the standards\nthemselves — SCORM to xAPI, SCORM 1.2 to 2004, H5P to SCORM — and are the fiddliest, because the two ends\ndisagree about what a result means.\n\nThe honest caveat for the whole category: a converter can guarantee a conformant package, but it cannot\ninvent instructional design. A converted deck is a deck in an LMS. That is often exactly what a compliance\nmodule needs, and rarely what a flagship course needs — worth being clear about before the budget is set.\n",{},"Converters & migration","2","converters-migration","categories\u002Fconverters-migration","Turning what you already have — decks, video, H5P, old packages — into something an LMS accepts.","l5wpzElL1rBxqlsmtpMVsuvZRxfSFas4hwwMc2CXT5o",{"id":56,"title":57,"extension":7,"faq":58,"icon":71,"intro":72,"meta":73,"name":74,"order":75,"slug":76,"stem":77,"tagline":78,"__hash__":79},"categories\u002Fcategories\u002Fplayers-runtimes-debuggers.yml","SCORM players, runtimes and debuggers",[59,62,65,68],{"q":60,"a":61},"What is the difference between a SCORM player and a SCORM runtime?","A runtime is a library that implements the SCORM API surface a course calls; a player is a whole application that loads a package, hosts it in an iframe and provides that runtime. Every player contains a runtime, but you can embed a runtime without a player.\n",{"q":63,"a":64},"Do I need a full LMS just to check a package works?","No. An in-browser debugger will unzip the package locally, serve it, and show you every API call it makes. That catches the majority of packaging faults — missing manifest entries, wrong SCORM version, completion never being set — in a minute rather than a deployment cycle.\n",{"q":66,"a":67},"Why does my course work in one player but not in an LMS?","Usually one of three things: the LMS enforces the data-model constraints the player relaxes (string lengths, vocabularies, read-only elements), the LMS restricts cross-origin access to the API object, or the course relies on a sequencing behaviour the LMS implements differently. Tools with LMS quirk profiles exist specifically to reproduce these differences.\n",{"q":69,"a":70},"Which JavaScript runtime should I embed in a new project?","Look for one that supports both SCORM 1.2 and 2004, is still receiving commits, and has an explicit persistence interface so you can decide where learner state goes. The listings here show the standards matrix and the last commit date for exactly that comparison.\n","i-lucide-play-circle","A SCORM package is inert until something gives it an API to talk to. That something is a runtime: the\nJavaScript object a course looks for on `window.API` (SCORM 1.2) or `window.API_1484_11` (SCORM 2004),\nwhich answers `LMSInitialize`, `GetValue`, `SetValue` and `Commit` and persists the data model somewhere.\n\nThe tools here fall into three groups that are easy to confuse. **Runtimes and API wrappers** are libraries\nyou embed — either in a course, to talk to whatever LMS it lands in, or in your own application, to play the\nrole of the LMS. **Players** are complete applications that unzip a package, serve it, and drive it end to\nend. **Debuggers** are players with the lid off: they show the API call transcript, the current CMI data\nmodel, suspend data, sequencing decisions and the moment something returns error 101.\n\nIf you are testing whether a package works before it reaches a client's LMS, start with a debugger. If you\nare building a product that must host SCORM content, start with a runtime and read its persistence adapter\ncarefully — that is where most integrations go wrong.\n",{},"Players, runtimes & debuggers","3","players-runtimes-debuggers","categories\u002Fplayers-runtimes-debuggers","Run a SCORM package outside an LMS — and watch what it actually does.","hcDF7H9nETO_B5A3g2eWnh5kzICgufiyMse4cjh7gHk",{"id":81,"title":82,"extension":7,"faq":83,"icon":96,"intro":97,"meta":98,"name":99,"order":100,"slug":101,"stem":102,"tagline":103,"__hash__":104},"categories\u002Fcategories\u002Ftesting-validation-conformance.yml","SCORM testing, validation and conformance tools",[84,87,90,93],{"q":85,"a":86},"How do I test a SCORM package without an LMS?","Use an in-browser debugger or a local test harness: both provide the SCORM API, record every call, and show you the resulting data model. For automated checks, a harness that can be scripted lets you assert on completion and score in CI.\n",{"q":88,"a":89},"Is there an official SCORM conformance test?","Yes — ADL publishes conformance test suites for SCORM 1.2 and SCORM 2004, and a separate suite for xAPI. They are the reference for whether an implementation is conformant. They are exacting and slow, which is why lighter validators exist for day-to-day work.\n",{"q":91,"a":92},"What should be in a SCORM QA checklist?","At minimum: the package imports cleanly, the correct SCORM version is declared, initialise and terminate are called, completion and success statuses are set as intended, score is reported in the right range, suspend data survives a resume, and the package behaves when the LMS returns an error. Testing against more than one LMS catches the rest.\n",{"q":94,"a":95},"Why does the same package pass one validator and fail another?","Validators differ in strictness and in which optional parts of the specification they enforce. A package can be schema-valid and still break in an LMS that applies stricter data-model rules — which is why manifest validation and runtime testing are two different jobs.\n","i-lucide-check-check","Most SCORM failures are found late, by the wrong person, in production. The course was signed off, uploaded\nto the client's LMS, and then learners' completions did not record — and now the problem is a support ticket\nrather than a build step.\n\nThe tools in this category move that discovery earlier. **Manifest validators** check `imsmanifest.xml`\nagainst the schema and the common packaging mistakes (missing resources, wrong `scormType`, broken hrefs,\nidentifiers that collide). **Test harnesses** drive a package programmatically and assert on what it sent —\nuseful in CI, where a regression in a course template can otherwise ship silently. **Conformance test\nsuites**, notably ADL's, are the formal article: they exercise the full data model and sequencing behaviour\na conformant implementation must support. **Test packages** are the inverse — known-good and known-bad\ncontent you fire at an LMS to find out what *it* actually implements.\n\nA note on the word \"certified\": conformance certification is granted by the bodies that own the\nspecifications, not by tools and not by us. Where a product appears in an official registry we link to it\nand mark the fact `registry-verified`; everything else is a vendor's own claim or our own check.\n",{},"Testing, validation & conformance","4","testing-validation-conformance","categories\u002Ftesting-validation-conformance","Prove a package is correct before a client's LMS proves it isn't.","NiGuliqtBVM9lTcU49a0WOVt0jMaZ2d1QAI3sJyZhdY",{"id":106,"title":107,"extension":7,"faq":108,"icon":121,"intro":122,"meta":123,"name":124,"order":125,"slug":126,"stem":127,"tagline":128,"__hash__":129},"categories\u002Fcategories\u002Fpackagers-sdks-libraries.yml","SCORM packagers, SDKs and libraries for developers",[109,112,115,118],{"q":110,"a":111},"Which JavaScript SCORM library should I use?","Look for one supporting SCORM 1.2 and 2004, still receiving commits, with an explicit persistence interface. The listings show licence, stars and last commit so you can judge maintenance rather than guess. Several long-abandoned wrappers still rank well in search — the badges here say plainly which.\n",{"q":113,"a":114},"Do I need a library, or can I call the SCORM API directly?","You can call it directly; it is not a large API. What libraries buy you is the tedious part — finding the API object across nested frames, handling initialisation order, normalising the differences between 1.2 and 2004, and coping with LMSs that return errors in creative ways.\n",{"q":116,"a":117},"What is the difference between a packager and an authoring tool?","A packager takes content you have already built and wraps it conformantly. An authoring tool creates the content. If you have a web app and need it to run in an LMS, you want a packager.\n",{"q":119,"a":120},"Are these production-ready?","Some are used in thousands of courses; some are a weekend project with three stars. The maintenance badge and the metrics panel on each listing exist precisely so you can tell which is which.\n","i-lucide-package","This is the developer end of the directory, and the part no other directory covers — general software\nindexes exclude libraries and CLIs, and e-learning listings only track products with a pricing page.\n\n**Packagers and CLIs** take a built web app and emit a conformant zip: manifest, resource declarations,\nthe right SCORM version, sensible identifiers. Several are bundler plugins, so a course built with Vite or\nwebpack produces a package as a build artefact rather than a manual step. **API wrappers** live on the\ncontent side and give your application a sane interface over the raw SCORM API — initialise, get, set,\ncommit, terminate — while handling the LMS quirks that make raw integration miserable. **Manifest tooling**\nparses and validates `imsmanifest.xml`, which is where a surprising share of import failures originate.\n**Framework integrations** wrap all of that for React, Vue, Angular, Svelte, Unity and Godot.\n\nWhat to look at before adopting one: does it support both SCORM 1.2 and 2004, does it expose a persistence\nboundary you can control, and is it still maintained? Every listing here carries the licence, the last\ncommit date and an honest maintenance badge, because a wrapper abandoned in 2019 can still be the right\nanswer — but you should know that going in.\n",{},"Packagers, SDKs & libraries","5","packagers-sdks-libraries","categories\u002Fpackagers-sdks-libraries","The pieces you build with when the course is an application, not a slide deck.","3KvCkFwRNYzh9-fZmEfQdmLiSCT3pp7bsS3eQcBnG6c",{"id":131,"title":132,"extension":7,"faq":133,"icon":146,"intro":147,"meta":148,"name":149,"order":150,"slug":151,"stem":152,"tagline":153,"__hash__":154},"categories\u002Fcategories\u002Flms-and-plugins.yml","Learning management systems with SCORM support",[134,137,140,143],{"q":135,"a":136},"Which LMSs support cmi5?","Genuine cmi5 support is still uncommon, and considerably rarer than the marketing suggests. The cmi5 standards page groups every listing we could verify, and flags which claims are vendor-stated rather than checked.\n",{"q":138,"a":139},"Why does my package work in one LMS and not another?","Usually strictness. A permissive LMS accepts data-model values the specification forbids; a stricter one rejects them, and the course silently stops recording. Sequencing and cross-origin access to the API object are the other two common causes.\n",{"q":141,"a":142},"Is an open-source LMS good enough for SCORM?","Often better than the alternatives, because the implementation is inspectable and its bugs are public. Moodle's SCORM module in particular has been exercised by more courses than most commercial engines.\n",{"q":144,"a":145},"Do I need an LMS at all to deliver SCORM?","No. Distribution and licensing platforms in this directory host the content and report back without a full LMS, which suits publishers selling courses into clients' own systems.\n","i-lucide-graduation-cap","Every SCORM package eventually meets an LMS, and the LMS decides whether the standard is honoured or\nmerely claimed. That gap is why this category exists in a tools directory: not to rank platforms on\nfeatures, but to record what each one actually does with a package.\n\nIncluded here are **open-source platforms** whose SCORM implementation you can read, **commercial platforms**\nwhose support you have to take on trust or test, and **plugins** that add or replace SCORM handling in a\nplatform that ships with something weaker. The plugins matter more than they look: a good deal of real-world\nSCORM behaviour on any given installation comes from a module rather than core.\n\nThe facts worth comparing are narrow and specific. Which SCORM version, and which 2004 edition. Whether\nsequencing is implemented or quietly ignored. How suspend data is stored and how much of it survives.\nWhether xAPI and cmi5 are genuinely supported or approximated. Each listing carries these with provenance,\nbecause vendor marketing and vendor documentation frequently disagree with each other.\n",{},"LMS & LMS plugins","6","lms-and-plugins","categories\u002Flms-and-plugins","Where the package finally has to run — and how well each platform actually implements the spec.","xW4Pab08lObiEGf6iWf0S-QGh8jj2jJWV3vWoKcRrFU",{"id":156,"title":157,"extension":7,"faq":158,"icon":171,"intro":172,"meta":173,"name":174,"order":175,"slug":176,"stem":177,"tagline":178,"__hash__":179},"categories\u002Fcategories\u002Fxapi-cmi5.yml","xAPI learning record stores and cmi5 tooling",[159,162,165,168],{"q":160,"a":161},"What is the difference between xAPI and cmi5?","xAPI is a statement format and a store API — deliberately unopinionated. cmi5 is a profile of xAPI that specifies how a course is launched, how a session is identified, and how completion is determined. If you need SCORM-like accountability with xAPI's reach, you need cmi5, not xAPI alone.\n",{"q":163,"a":164},"Do I need an LRS?","Only if you are using xAPI or cmi5. SCORM reports to the LMS and needs nothing extra. Once statements leave the LMS, something has to store them, and that something is an LRS.\n",{"q":166,"a":167},"Is xAPI replacing SCORM?","Not in practice, and not soon. SCORM remains what procurement asks for and what every LMS imports. xAPI is additive — it captures what SCORM cannot — and most real deployments run both.\n",{"q":169,"a":170},"How do I know an LRS is conformant?","ADL publishes a conformance test suite and maintains a list of adopters. We link that registry rather than certifying anything ourselves; listings backed by it carry the Verified chip.\n","i-lucide-share-2","SCORM records what happened inside a course, in a course's own terms, to the LMS that launched it. xAPI\nbreaks all three assumptions: any activity, anywhere, reported to any record store. cmi5 then puts the\ndiscipline back — it is an xAPI profile that restores the parts of SCORM an administrator actually needs,\na defined launch, a session, and rules for what counts as completion.\n\nThis category holds the infrastructure. **Learning record stores** receive, validate and serve statements;\nthey are ordinary databases with a specific API and specific conformance expectations, and several good\nopen-source ones exist. **Client libraries** send statements from courses and applications. **cmi5 tooling**\ncovers players, assignable-unit runtimes and the conformance test suite that decides whether an\nimplementation is real.\n\nA caution worth stating plainly, because it is the fact this directory most often has to correct: an xAPI\nendpoint is not cmi5 support. Receiving statements is the easy half. Honouring the AU lifecycle, the\nsession identifier and the moveOn rules is what makes a completion mean something — and it is what we\ncheck before recording cmi5 as supported.\n",{},"xAPI & cmi5","7","xapi-cmi5","categories\u002Fxapi-cmi5","The standards after SCORM — and the tools that actually implement them.","Z08AoeVOVPwRcuEk4GxjtdqYuXVacfkkSSQMb14CEP4",{"id":181,"title":182,"extension":7,"faq":183,"icon":196,"intro":197,"meta":198,"name":199,"order":200,"slug":201,"stem":202,"tagline":203,"__hash__":204},"categories\u002Fcategories\u002Fdistribution-licensing.yml","SCORM distribution, licensing and hosting platforms",[184,187,190,193],{"q":185,"a":186},"What is SCORM dispatch?","A small SCORM package that acts as a pointer rather than the content. The LMS imports and launches it normally; the package fetches the real course from a hosting platform and relays tracking back. The client's LMS sees an ordinary course; you keep the file.\n",{"q":188,"a":189},"Why not just send the client a zip?","You can, and for a one-off it is fine. What you lose is control of updates, any visibility of usage, and any ability to time-limit access — which is precisely what a licensing arrangement needs.\n",{"q":191,"a":192},"Does dispatch work in every LMS?","Not quite. Some LMSs sandbox course content in ways that break the proxy's connection back to its origin, and some corporate networks block the content domain. Any serious platform in this category publishes a tested-LMS list; ask for it before committing.\n",{"q":194,"a":195},"What happens when a licence expires?","Platform-dependent, and worth testing. The good implementations fail politely with a message; weaker ones leave a blank frame and an LMS recording an incomplete attempt.\n","i-lucide-send","If you sell courses, you have the publisher's problem: the client wants the content inside their own LMS,\nand the moment you hand over a zip you have handed over the asset. Every update becomes a redistribution\nexercise, and you cannot tell how many people took the course or when the licence should end.\n\nThe tools here solve it the same way. The client installs a small proxy package — a few kilobytes, a\nmanifest and a launcher — which streams the real content from the platform at run time and reports tracking\nback. The course never leaves your control, updates take effect without anyone re-importing anything, and\nlicences can carry seat counts, expiry dates and domain locks.\n\nThe vocabulary varies: dispatch, distribution, licensing, content delivery. What differentiates them in\npractice is narrower than the marketing suggests — whether the proxy works in restrictive LMSs that block\ncross-origin access, what happens when the licence expires mid-session, how tracking is reconciled if the\nconnection drops, and whether you can white-label the whole thing for your own clients.\n",{},"Distribution, licensing & hosting","8","distribution-licensing","categories\u002Fdistribution-licensing","Getting a course into someone else's LMS without giving away the course.","nkIpVD2NvqBC7m2F3MZ57C3AjDoCZ0eJjUNGd2oE9ZI",{"id":206,"title":207,"extension":7,"faq":208,"icon":218,"intro":219,"meta":220,"name":221,"order":222,"slug":223,"stem":224,"tagline":225,"__hash__":226},"categories\u002Fcategories\u002Fanalytics-tracking.yml","SCORM and xAPI analytics and tracking tools",[209,212,215],{"q":210,"a":211},"Can I get analytics from SCORM without moving to xAPI?","Yes, within limits. SCORM reports completion, score, time and a small data model — enough for drop-off and pass rates, not enough for fine-grained interaction analysis. Launch-tracking tools add a layer of their own without requiring you to re-author anything.\n",{"q":213,"a":214},"Do I need a separate analytics tool if I have an LRS?","Often, yes. Most record stores are built to store and serve statements correctly rather than to visualise them well. Some ship a reporting layer; the rest expect you to bring one.\n",{"q":216,"a":217},"What should I measure?","Start with completion rate, time to complete, and per-question failure. They are cheap, comparable across courses, and answer the question that actually gets asked — is this course working?\n","i-lucide-bar-chart-3","An LMS will tell you who completed a course. It is usually much less helpful about anything else: where\npeople dropped out, which question everybody fails, whether the course is worth its production cost, or\nwhat happened across the six systems your organisation actually uses.\n\nThe tools here fill that gap from two directions. **Statement analytics** sit on top of an xAPI record store\nand turn a stream of statements into dashboards, cohorts and reports — the natural pairing if you have\nalready adopted xAPI. **Launch and delivery tracking** works at the package level instead, recording when\nand where a course was opened and how far it got, which is the pragmatic option when the content is SCORM\nand always will be.\n\nOne thing to settle early, because it is a data-protection question and not just a technical one: how much\nof this is personally identifiable, how long it is kept, and who can see it. Learner-level analytics are\ngenuinely useful and genuinely sensitive, and the answer should be written down before the dashboard is\nbuilt rather than after someone asks.\n",{},"Analytics & tracking","9","analytics-tracking","categories\u002Fanalytics-tracking","Turning completion records into something worth reading.","eGUFwQLbgbMeYmVcG_VLX1KbidUQxzBPyNR2G2IyenU",[228,229,230,231,232,233,234,235,236],{"slug":26,"name":24},{"slug":51,"name":49},{"slug":76,"name":74},{"slug":101,"name":99},{"slug":126,"name":124},{"slug":151,"name":149},{"slug":176,"name":174},{"slug":201,"name":199},{"slug":223,"name":221},{"categories":238,"tools":301},[239,246,253,260,267,274,281,288,295],{"id":5,"title":6,"extension":7,"faq":240,"icon":21,"intro":22,"meta":245,"name":24,"order":25,"slug":26,"stem":27,"tagline":28,"__hash__":29},[241,242,243,244],{"q":10,"a":11},{"q":13,"a":14},{"q":16,"a":17},{"q":19,"a":20},{},{"id":31,"title":32,"extension":7,"faq":247,"icon":46,"intro":47,"meta":252,"name":49,"order":50,"slug":51,"stem":52,"tagline":53,"__hash__":54},[248,249,250,251],{"q":35,"a":36},{"q":38,"a":39},{"q":41,"a":42},{"q":44,"a":45},{},{"id":56,"title":57,"extension":7,"faq":254,"icon":71,"intro":72,"meta":259,"name":74,"order":75,"slug":76,"stem":77,"tagline":78,"__hash__":79},[255,256,257,258],{"q":60,"a":61},{"q":63,"a":64},{"q":66,"a":67},{"q":69,"a":70},{},{"id":81,"title":82,"extension":7,"faq":261,"icon":96,"intro":97,"meta":266,"name":99,"order":100,"slug":101,"stem":102,"tagline":103,"__hash__":104},[262,263,264,265],{"q":85,"a":86},{"q":88,"a":89},{"q":91,"a":92},{"q":94,"a":95},{},{"id":106,"title":107,"extension":7,"faq":268,"icon":121,"intro":122,"meta":273,"name":124,"order":125,"slug":126,"stem":127,"tagline":128,"__hash__":129},[269,270,271,272],{"q":110,"a":111},{"q":113,"a":114},{"q":116,"a":117},{"q":119,"a":120},{},{"id":131,"title":132,"extension":7,"faq":275,"icon":146,"intro":147,"meta":280,"name":149,"order":150,"slug":151,"stem":152,"tagline":153,"__hash__":154},[276,277,278,279],{"q":135,"a":136},{"q":138,"a":139},{"q":141,"a":142},{"q":144,"a":145},{},{"id":156,"title":157,"extension":7,"faq":282,"icon":171,"intro":172,"meta":287,"name":174,"order":175,"slug":176,"stem":177,"tagline":178,"__hash__":179},[283,284,285,286],{"q":160,"a":161},{"q":163,"a":164},{"q":166,"a":167},{"q":169,"a":170},{},{"id":181,"title":182,"extension":7,"faq":289,"icon":196,"intro":197,"meta":294,"name":199,"order":200,"slug":201,"stem":202,"tagline":203,"__hash__":204},[290,291,292,293],{"q":185,"a":186},{"q":188,"a":189},{"q":191,"a":192},{"q":194,"a":195},{},{"id":206,"title":207,"extension":7,"faq":296,"icon":218,"intro":219,"meta":300,"name":221,"order":222,"slug":223,"stem":224,"tagline":225,"__hash__":226},[297,298,299],{"q":210,"a":211},{"q":213,"a":214},{"q":216,"a":217},{},[302,328,346,360,378,395,412,424,441,460,478,492,512,534,556,582,599,613,629,645,670,686,705,722,742,765,782,809,828,843,865,883,905,924,948,964,980,994,1012,1032,1046,1066,1084,1101,1116,1135,1154,1172,1186,1202,1222,1236,1256,1270,1293,1307,1330,1345,1358,1370,1386,1405,1423,1437,1453,1467,1481,1492,1510,1523,1537,1553,1570,1587,1600,1617,1636,1650,1662,1681,1695,1711,1725,1737,1753,1765,1779,1796,1811,1823,1840],{"path":303,"name":304,"tagline":305,"website":306,"listing":307,"categories":308,"license":309,"pricing":310,"standards":313,"status":327,"openSource":315},"\u002Ftools\u002Fgamestdio-scorm","@gamestdio\u002Fscorm","A TypeScript port of the pipwerks wrapper, published once in 2019 and untouched since","https:\u002F\u002Fgithub.com\u002Fgamestdio\u002Fscorm","full",[126],"MIT",{"model":311,"source":312},"open-source","https:\u002F\u002Fgithub.com\u002Fgamestdio\u002Fscorm\u002Fblob\u002Fmaster\u002FLICENSE",{"scorm12":314,"scorm2004":320,"xapi":323,"cmi5":325,"aicc":326},{"supported":315,"provenance":316,"checkedAt":317,"source":318,"note":319},true,"editor-checked","2026-08-24","https:\u002F\u002Fgithub.com\u002Fgamestdio\u002Fscorm\u002Fblob\u002Fmaster\u002Fsrc\u002Findex.ts","The API finder walks parent and opener windows for `window.API` and sets the detected version to `1.2`; the data-model calls are passed through untyped, so `cmi.core.*` element names are the caller's responsibility.\n",{"supported":315,"editions":321,"provenance":316,"checkedAt":317,"source":318,"note":322},[],"Finds `window.API_1484_11` and prefers it over the 1.2 API when both are present. Nothing in the code distinguishes 2004 editions — the run-time signature is identical across them and sequencing is left to the LMS.\n",{"supported":324,"provenance":316,"checkedAt":317},false,{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},"stale",{"path":329,"name":330,"tagline":331,"website":332,"listing":307,"categories":333,"license":309,"pricing":334,"standards":335,"status":345,"openSource":315},"\u002Ftools\u002Fstudiolxd-scorm","@studiolxd\u002Fscorm","Headless SCORM 1.2 and 2004 runtime with React, Vue, Angular, Svelte and Web Component adapters","https:\u002F\u002Fgithub.com\u002Fstudiolxd\u002Fscorm",[126],{"model":311,"source":332},{"scorm12":336,"scorm2004":338,"xapi":343,"cmi5":344},{"supported":315,"provenance":316,"checkedAt":317,"source":337},"https:\u002F\u002Fgithub.com\u002Fstudiolxd\u002Fscorm\u002Fblob\u002Fmain\u002Fpackages\u002Fscorm\u002Fsrc\u002Fcore\u002Fscorm12-driver.ts",{"supported":315,"editions":339,"provenance":316,"checkedAt":317,"source":341,"note":342},[340],"4th","https:\u002F\u002Fgithub.com\u002Fstudiolxd\u002Fscorm\u002Fblob\u002Fmain\u002Fpackages\u002Fscorm\u002Fsrc\u002Ftypes\u002Fcommon.ts","The 2004 driver targets the window.API_1484_11 object and the 4th Edition RTE; earlier editions are not distinguished in code.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},"active",{"path":347,"name":348,"tagline":349,"website":350,"listing":307,"categories":351,"license":309,"pricing":352,"standards":353,"status":327,"openSource":315},"\u002Ftools\u002Fszenadam-scorm-api-wrapper","@szenadam\u002Fscorm-api-wrapper","A TypeScript reimplementation of the pipwerks SCORM wrapper, published to npm","https:\u002F\u002Fgithub.com\u002Fszenadam\u002Fscorm-api-wrapper",[126],{"model":311,"source":350},{"scorm12":354,"scorm2004":357},{"supported":315,"provenance":316,"checkedAt":317,"source":355,"note":356},"https:\u002F\u002Fgithub.com\u002Fszenadam\u002Fscorm-api-wrapper\u002Fblob\u002Fmaster\u002Fsrc\u002FScormApiWrapper.ts","The wrapper searches parent and opener windows for an `API` object and branches on a `1.2` case throughout get, set, status and commit.\n",{"supported":315,"editions":358,"provenance":316,"checkedAt":317,"source":355,"note":359},[],"Finds `API_1484_11` and branches on a `2004` case. The run-time API is the same across 2004 editions, so no edition is claimed here.\n",{"path":361,"name":362,"tagline":363,"website":364,"listing":307,"categories":365,"license":309,"pricing":366,"standards":367,"status":377,"openSource":315},"\u002Ftools\u002Fxapi-cmi5-library","@xapi\u002Fcmi5","A typed JavaScript client that handles the cmi5 handshake for you inside a course","https:\u002F\u002Fwww.xapijs.dev\u002Fcmi5-profile-library",[176],{"model":311},{"cmi5":368,"xapi":371,"scorm12":374,"scorm2004":375},{"supported":315,"provenance":316,"checkedAt":317,"source":369,"note":370},"https:\u002F\u002Fgithub.com\u002Fxapijs\u002Fcmi5\u002Fblob\u002Fdevelop\u002Fsrc\u002FAbstractCmi5.ts","Implements the AU side of the cmi5 handshake: it reads the launch parameters from the URL, POSTs the fetch URL for an auth token, and emits the defined statements — Initialized, Terminated, Passed, Failed, Completed, Waived — with the required context activities and extensions. The readme states compliance with the cmi5 Quartz 1st Edition specification; the statement and verb constants match it.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":372,"note":373},"https:\u002F\u002Fgithub.com\u002Fxapijs\u002Fcmi5\u002Fblob\u002Fdevelop\u002Fpackage.json","Statements are sent through @xapi\u002Fxapi, the same project's xAPI client. Statement shaping is cmi5-specific; arbitrary xAPI is possible via the allowed extension points.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"editions":376,"provenance":316,"checkedAt":317},[],"maintained",{"path":379,"name":380,"tagline":381,"website":382,"listing":307,"categories":383,"license":384,"pricing":385,"standards":386,"status":377,"openSource":315},"\u002Ftools\u002Fadl-lrs","ADL LRS","ADL's own open-source learning record store, now tracking xAPI 2.0","https:\u002F\u002Fgithub.com\u002Fadlnet\u002FADL_LRS",[176],"Apache-2.0",{"model":311},{"xapi":387,"cmi5":390,"scorm12":392,"scorm2004":393},{"supported":315,"provenance":316,"checkedAt":317,"source":388,"note":389},"https:\u002F\u002Fgithub.com\u002Fadlnet\u002FADL_LRS\u002Fblob\u002Fmaster\u002Fadl_lrs\u002Fsettings.py","settings.py declares XAPI_VERSION 2.0.0 and accepts 1.0.0 through 1.0.3 as well, negotiated by the X-Experience-API-Version header. xAPI 2.0 is IEEE 9274.1.1.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":391},"Statement storage only. There is no cmi5 launch handling in the codebase.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"editions":394,"provenance":316,"checkedAt":317},[],{"path":396,"name":397,"tagline":398,"website":399,"listing":307,"categories":400,"license":384,"pricing":401,"standards":403,"status":327,"openSource":315},"\u002Ftools\u002Fadl-scorm-2004-test-suite","ADL SCORM 2004 4th Edition Test Suite","The official conformance suite for SCORM 2004 4th Edition, frozen in 2015 and built for IE8","https:\u002F\u002Fgithub.com\u002Fadlnet\u002FSCORM-2004-4ed-Test-Suite",[101],{"model":311,"source":402},"https:\u002F\u002Fgithub.com\u002Fadlnet\u002FSCORM-2004-4ed-Test-Suite#license",{"scorm2004":404,"scorm12":408,"xapi":410,"cmi5":411},{"supported":315,"editions":405,"provenance":316,"checkedAt":317,"source":406,"note":407},[340],"https:\u002F\u002Fgithub.com\u002Fadlnet\u002FSCORM-2004-4ed-Test-Suite#readme","The suite is the 4th Edition conformance test itself, published by ADL — the body that wrote the specification. It contains an LMS test, a content package test, a SCO test and a manifest test, plus a utility that checks a package against a content-package test log.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":409},"SCORM 1.2 had its own separate test suite; this repository does not contain it.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"path":413,"name":414,"tagline":415,"website":416,"listing":307,"categories":417,"license":384,"pricing":418,"standards":420,"status":327,"openSource":315},"\u002Ftools\u002Fadl-xapiwrapper","ADL xAPIWrapper","ADL's own JavaScript wrapper for talking to an LRS, built against xAPI 1.0.1","https:\u002F\u002Fgithub.com\u002Fadlnet\u002FxAPIWrapper",[176],{"model":311,"source":419},"https:\u002F\u002Fgithub.com\u002Fadlnet\u002FxAPIWrapper\u002Fblob\u002Fmaster\u002FLICENSE",{"xapi":421},{"supported":315,"provenance":316,"checkedAt":317,"source":422,"note":423},"https:\u002F\u002Fgithub.com\u002Fadlnet\u002FxAPIWrapper\u002Fblob\u002Fmaster\u002Fsrc\u002Fxapiwrapper.js","`XAPIWrapper.prototype.xapiVersion` is set to \"1.0.1\" and that value is sent as the `X-Experience-API-Version` header on every request. The wrapper can optionally check the LRS `\u002Fabout` versions against it.\n",{"path":425,"name":426,"tagline":427,"website":428,"listing":307,"categories":429,"license":430,"pricing":431,"standards":433,"status":345,"openSource":315},"\u002Ftools\u002Fadapt-authoring-tool","Adapt Authoring Tool","Self-hosted web UI for the Adapt framework, publishing responsive HTML5 courses","https:\u002F\u002Fwww.adaptlearning.org",[26],"GPL-3.0",{"model":311,"freeTier":315,"source":432},"https:\u002F\u002Fgithub.com\u002Fadaptlearning\u002Fadapt_authoring",{"scorm12":434,"scorm2004":437},{"supported":315,"provenance":316,"checkedAt":317,"source":435,"note":436},"https:\u002F\u002Fgithub.com\u002Fadaptlearning\u002Fadapt-contrib-spoor\u002Fblob\u002Fmaster\u002Fscorm\u002F1.2\u002Fimsmanifest.xml","Tracking comes from the adapt-contrib-spoor extension, not the authoring tool itself. Spoor ships a schemaversion 1.2 manifest and the 1.2 XSDs, and 1.2 is its default output.\n",{"supported":315,"editions":438,"provenance":316,"checkedAt":317,"source":439,"note":440},[340],"https:\u002F\u002Fgithub.com\u002Fadaptlearning\u002Fadapt-contrib-spoor\u002Fblob\u002Fmaster\u002Fscorm\u002F2004\u002Fimsmanifest.xml","Spoor's 2004 manifest declares '2004 4th Edition'. Other editions require swapping the bundled schema files by hand — the extension's own documentation says so.\n",{"path":442,"name":443,"tagline":444,"website":428,"listing":307,"categories":445,"license":430,"pricing":446,"standards":448,"status":345,"openSource":315},"\u002Ftools\u002Fadapt-framework","Adapt Framework","Responsive HTML5 course framework whose SCORM output is a bundled plugin",[26],{"model":311,"source":447},"https:\u002F\u002Fgithub.com\u002Fadaptlearning\u002Fadapt_framework\u002Fblob\u002Fmaster\u002FLICENSE",{"scorm12":449,"scorm2004":452,"xapi":456},{"supported":315,"provenance":316,"checkedAt":317,"source":450,"note":451},"https:\u002F\u002Fgithub.com\u002Fadaptlearning\u002Fadapt-contrib-spoor\u002Ftree\u002Fmaster\u002Fscorm\u002F1.2","Emitted by the bundled Spoor plugin, which ships the SCORM 1.2 schema set and manifest and uses the pipwerks wrapper at run time. 1.2 is the default output.\n",{"supported":315,"editions":453,"provenance":316,"checkedAt":317,"source":454,"note":455},[340],"https:\u002F\u002Fgithub.com\u002Fadaptlearning\u002Fadapt-contrib-spoor\u002Ftree\u002Fmaster\u002Fscorm\u002F2004","Spoor ships one 2004 schema set, documented as 4th Edition, selected with `_scormVersion: \"2004\"`. Other editions require swapping the files in by hand.\n",{"supported":315,"provenance":457,"checkedAt":317,"source":458,"note":459},"vendor-stated","https:\u002F\u002Fgithub.com\u002Fadaptlearning\u002Fadapt_framework#features","Claimed in the framework README, delivered by the separate adapt-contrib-xapi plugin rather than the core. Not verified against an LRS here.\n",{"path":461,"name":462,"tagline":463,"website":464,"listing":307,"categories":465,"license":466,"pricing":467,"standards":469,"status":327,"openSource":315},"\u002Ftools\u002Fopenlrw","Apereo OpenLRW","Java learning record warehouse for xAPI, Caliper and OneRoster data, dormant since 2020","https:\u002F\u002Fgithub.com\u002FApereo-Learning-Analytics-Initiative\u002FOpenLRW",[176],"ECL-2.0",{"model":311,"source":468},"https:\u002F\u002Fgithub.com\u002FApereo-Learning-Analytics-Initiative\u002FOpenLRW\u002Fblob\u002Fmaster\u002FLICENSE",{"xapi":470,"cmi5":473,"scorm12":475,"scorm2004":476},{"supported":315,"provenance":316,"checkedAt":317,"source":471,"note":472},"https:\u002F\u002Fgithub.com\u002FApereo-Learning-Analytics-Initiative\u002FOpenLRW\u002Fblob\u002Fmaster\u002Fsrc\u002Fmain\u002Fjava\u002Forg\u002Fapereo\u002Fopenlrw\u002Fevents\u002Fxapi\u002Fendpoint\u002FXapiApiController.java","The xAPI surface is `\u002FxAPI\u002Fstatements` (POST and GET) plus an About controller and a header filter. The State, Activity Profile and Agent Profile resources are not implemented, so this is a statement store rather than a conformant LRS — do not expect a course written against a full LRS to work unchanged.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":474},"No cmi5 code or launch handling anywhere in the repository.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"editions":477,"provenance":316,"checkedAt":317},[],{"path":479,"name":480,"tagline":481,"website":482,"listing":307,"categories":483,"license":384,"pricing":484,"standards":486,"status":345,"openSource":315},"\u002Ftools\u002Fcatapult","CATAPULT","ADL's cmi5 player, content test suite and LMS test suite in one repository","https:\u002F\u002Fgithub.com\u002Fadlnet\u002FCATAPULT",[176],{"model":311,"currency":485,"freeTier":315},"USD",{"cmi5":487,"xapi":490},{"supported":315,"provenance":316,"checkedAt":317,"source":488,"note":489},"https:\u002F\u002Fgithub.com\u002Fadlnet\u002FCATAPULT\u002Fblob\u002Fmain\u002Frequirements\u002Frequirements.json","The repository ships a machine-readable index of the cmi5 specification's numbered requirements, a player that validates and launches courses against them, and two test suites. Read in source, August 2026.\n",{"supported":315,"provenance":316,"checkedAt":317,"note":491},"The player delegates xAPI handling to an external LRS rather than implementing one; it acts as a proxy enforcing the cmi5 requirements on statements passing through.\n",{"path":493,"name":494,"tagline":495,"website":496,"listing":307,"categories":497,"license":498,"pricing":499,"standards":501,"status":345,"openSource":315},"\u002Ftools\u002Fcanvas-lms","Canvas LMS","Instructure's open-source LMS — a strong LTI platform, with no SCORM engine in the repo","https:\u002F\u002Fwww.instructure.com\u002Fcanvas",[151],"AGPL-3.0",{"model":311,"freeTier":315,"source":500},"https:\u002F\u002Fgithub.com\u002Finstructure\u002Fcanvas-lms",{"scorm12":502,"scorm2004":505,"lti":506},{"supported":324,"provenance":316,"checkedAt":317,"source":503,"note":504},"https:\u002F\u002Fgithub.com\u002Finstructure\u002Fcanvas-lms\u002Fblob\u002Fmaster\u002Flib\u002Fcanvas\u002Fmigration\u002Fpackage_identifier.rb","The open-source code recognises a SCORM 1.1, 1.2 or 2004 manifest by namespace, but no converter plugin is registered for those types — only QTI, Moodle and Academic Benchmark are — so the import raises UnsupportedPackage. SCORM playback on Instructure's hosted Canvas is a separately licensed add-on and is not this repository.\n",{"supported":324,"provenance":316,"checkedAt":317,"source":503},{"supported":315,"versions":507,"provenance":316,"checkedAt":317,"source":510,"note":511},[508,509],"1.1","1.3","https:\u002F\u002Fgithub.com\u002Finstructure\u002Fcanvas-lms\u002Ftree\u002Fmaster\u002Flib\u002Flti","lib\u002Flti carries both a v1p1 signing path and the 1.3 stack — OIDC login, key storage, deep linking and LTI Advantage access tokens.\n",{"path":513,"name":514,"tagline":515,"website":516,"listing":307,"categories":517,"license":430,"pricing":518,"standards":519,"status":345,"openSource":315},"\u002Ftools\u002Fchamilo","Chamilo LMS","Full open-source LMS with SCORM 1.2 and AICC learning paths and a bundled LTI plugin","https:\u002F\u002Fchamilo.org",[151],{"model":311,"freeTier":315},{"scorm12":520,"scorm2004":523,"aicc":525,"xapi":527,"lti":530},{"supported":315,"provenance":316,"checkedAt":317,"source":521,"note":522},"https:\u002F\u002Fgithub.com\u002Fchamilo\u002Fchamilo-lms\u002Fblob\u002Fmaster\u002Fpublic\u002Fmain\u002Flp\u002FScormApi.php","The learning-path runtime (ScormApi.php, assets\u002Fvue\u002Fservices\u002FscormRuntimeApi.js) implements the SCORM 1.2 data model — lesson_status, core_exit, suspend data, interactions — and there is a SCORM export path for quizzes.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":524},"We found no SCORM 2004 runtime in the Chamilo 3 master tree: the learning-path API is 1.2-shaped and there is no API_1484_11 adapter or 2004 schema set. Treat 2004 packages as unsupported until the project says otherwise.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":526},"https:\u002F\u002Fgithub.com\u002Fchamilo\u002Fchamilo-lms\u002Fblob\u002Fmaster\u002Fpublic\u002Fmain\u002Flp\u002Faicc.class.php",{"supported":315,"provenance":457,"checkedAt":317,"source":528,"note":529},"https:\u002F\u002Fgithub.com\u002Fchamilo\u002Fchamilo-lms#readme","Claimed in the project README's feature list. The xAPI code we located in the master tree sits inside the bundled CStudio plugin rather than in core, so read this as plugin-level emission rather than a core LRS integration.\n",{"supported":315,"versions":531,"provenance":316,"checkedAt":317,"source":532,"note":533},[508,509],"https:\u002F\u002Fgithub.com\u002Fchamilo\u002Fchamilo-lms\u002Ftree\u002Fmaster\u002Fpublic\u002Fplugin\u002FImsLti","The bundled ImsLti plugin ships OAuth1.php for the 1.1 flow and jwks.php plus platform key generation for 1.3. Chamilo acts as the LTI platform consuming external tools, not as a tool provider.\n",{"path":535,"name":536,"tagline":537,"website":538,"listing":307,"categories":539,"license":498,"pricing":540,"standards":542,"status":345,"openSource":315},"\u002Ftools\u002Fclaroline","Claroline Connect","Symfony and React learning platform with a SCORM 1.2 and 2004 player plugin","https:\u002F\u002Fwww.claroline.com",[151],{"model":311,"currency":541,"freeTier":315},"EUR",{"scorm12":543,"scorm2004":546,"lti":551,"xapi":554},{"supported":315,"provenance":316,"checkedAt":317,"source":544,"note":545},"https:\u002F\u002Fgithub.com\u002Fclaroline\u002FClaroline\u002Ftree\u002F15.0\u002Fsrc\u002Fplugin\u002Fscorm","The scorm plugin's ScormManager accepts a manifest schemaversion of \"1.2\", and its player exposes window.API with the LMS* method set. Read in source, August 2026.\n",{"supported":315,"editions":547,"provenance":316,"checkedAt":317,"source":549,"note":550},[548,340],"3rd","https:\u002F\u002Fgithub.com\u002Fclaroline\u002FClaroline\u002Fblob\u002F15.0\u002Fsrc\u002Fplugin\u002Fscorm\u002FManager\u002FScormManager.php","ScormManager matches the schemaversion string against exactly \"2004 3rd Edition\" and \"2004 4th Edition\" and throws InvalidScormArchiveException on anything else — so 2004 2nd Edition packages are rejected at import. The player exposes window.API_1484_11. Read in source, August 2026.\n",{"supported":324,"versions":552,"provenance":316,"checkedAt":317,"note":553},[],"No LTI plugin or class in the repository as of August 2026.",{"supported":324,"provenance":316,"checkedAt":317,"note":555},"No xAPI or LRS code in the repository as of August 2026.",{"path":557,"name":558,"tagline":559,"website":560,"listing":307,"categories":561,"license":309,"pricing":562,"standards":564,"status":345,"openSource":315},"\u002Ftools\u002Fcoursecode","CourseCode","Code-first course framework and CLI that packages to SCORM, cmi5 and LTI 1.3","https:\u002F\u002Fcoursecodeframework.com",[26],{"model":311,"freeTier":315,"source":563},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fcoursecode",{"scorm12":565,"scorm2004":568,"cmi5":572,"xapi":575,"lti":578},{"supported":315,"provenance":316,"checkedAt":317,"source":566,"note":567},"https:\u002F\u002Fgithub.com\u002Fcourse-code-framework\u002Fcoursecode\u002Fblob\u002Fmain\u002Flib\u002Fmanifest\u002Fscorm-12-manifest.js","A dedicated 1.2 manifest generator and a matching scorm-12-driver, with the 1.2 XSDs bundled in the repository.\n",{"supported":315,"editions":569,"provenance":316,"checkedAt":317,"source":570,"note":571},[340],"https:\u002F\u002Fgithub.com\u002Fcourse-code-framework\u002Fcoursecode\u002Fblob\u002Fmain\u002Flib\u002Fmanifest\u002Fscorm-2004-manifest.js","The generator hard-codes a '2004 4th Edition' schemaversion. Earlier editions are not offered.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":573,"note":574},"https:\u002F\u002Fgithub.com\u002Fcourse-code-framework\u002Fcoursecode\u002Fblob\u002Fmain\u002Flib\u002Fmanifest\u002Fcmi5-manifest.js","Generates a cmi5.xml with AU definitions and move-on criteria; a cmi5-remote variant points the AU at an absolute CDN URL.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":576,"note":577},"https:\u002F\u002Fgithub.com\u002Fcourse-code-framework\u002Fcoursecode\u002Fblob\u002Fmain\u002Fframework\u002Fjs\u002Fdrivers\u002Fcmi5-driver.js","xAPI is reached only through the cmi5 driver (@xapi\u002Fcmi5), including State API use for suspend data and bookmarks. There is no standalone \"send statements to my LRS\" output.\n",{"supported":315,"versions":579,"provenance":316,"checkedAt":317,"source":580,"note":581},[509],"https:\u002F\u002Fgithub.com\u002Fcourse-code-framework\u002Fcoursecode\u002Fblob\u002Fmain\u002Flib\u002Fmanifest\u002Flti-tool-config.js","Emits an LTI 1.3 tool configuration and implements a launch driver using AGS. The driver deliberately rejects raw JWT handling in the browser and expects a trusted server, so this is not a drop-in static deployment.\n",{"path":583,"name":584,"tagline":585,"website":586,"listing":307,"categories":587,"license":309,"pricing":588,"standards":590,"status":377,"openSource":315},"\u002Ftools\u002Fescolalms-scorm","EscolaLMS Scorm","Laravel package that stores, plays and tracks SCORM packages over a REST API","https:\u002F\u002Fgithub.com\u002FEscolaLMS\u002FScorm",[151],{"model":311,"source":589},"https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fescolalms\u002Fscorm",{"scorm12":591,"scorm2004":594,"xapi":597,"cmi5":598},{"supported":315,"provenance":316,"checkedAt":317,"source":592,"note":593},"https:\u002F\u002Fgithub.com\u002FEscolaLMS\u002FScorm\u002Fblob\u002Fmain\u002Fsrc\u002FServices\u002FScormService.php","ScormService maps a manifest schemaversion of '1.2' to the SCORM_12 constant, and Scorm12FieldStrategy handles the 1.2 tracking fields.\n",{"supported":315,"editions":595,"provenance":316,"checkedAt":317,"source":592,"note":596},[548,340],"The version switch accepts exactly '2004 3rd Edition' and '2004 4th Edition'. A 2nd Edition manifest falls through and is rejected as an invalid package.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"path":600,"name":601,"tagline":602,"website":603,"listing":307,"categories":604,"license":605,"pricing":606,"standards":607,"status":345,"openSource":315},"\u002Ftools\u002Fforma-lms","Forma LMS","Corporate-focused PHP learning platform with its own SCORM 1.2 and 2004 player","https:\u002F\u002Fwww.formalms.org",[151],"GPL-2.0-only",{"model":311,"source":603},{"scorm12":608,"scorm2004":610},{"supported":315,"provenance":316,"checkedAt":317,"source":609},"https:\u002F\u002Fgithub.com\u002Fformalms\u002Fformalms\u002Fblob\u002Fmaster\u002Fhtml\u002FappLms\u002Fviews\u002Fplayerscorm\u002Flib\u002FSCORM\u002FAPI.js",{"supported":315,"editions":611,"provenance":316,"checkedAt":317,"source":609,"note":612},[548,340],"The player dispatches on the manifest schemaversion and accepts \"1.2\", \"2004 3rd Edition\" and \"2004 4th Edition\"; anything else is rejected as an unsupported version.\n",{"path":614,"name":615,"tagline":616,"website":617,"listing":307,"categories":618,"license":498,"pricing":619,"standards":620,"status":345,"openSource":315},"\u002Ftools\u002Ffrappe-learning","Frappe Learning","Open-source LMS from the Frappe stack, with a deliberately minimal SCORM chapter type","https:\u002F\u002Ffrappe.io\u002Flearning",[151],{"model":311,"freeTier":315,"source":617},{"scorm12":621,"scorm2004":624,"xapi":627,"cmi5":628},{"supported":315,"provenance":316,"checkedAt":317,"source":622,"note":623},"https:\u002F\u002Fgithub.com\u002Ffrappe\u002Flms\u002Fblob\u002Fdevelop\u002Ffrontend\u002Fsrc\u002Fpages\u002FSCORMChapter.vue","A window.API object is exposed, but only cmi.core.lesson_status and cmi.suspend_data are persisted; every function returns \"true\" and LMSGetLastError always returns \"0\".\n",{"supported":315,"editions":625,"provenance":316,"checkedAt":317,"source":622,"note":626},[],"window.API_1484_11 is exposed with the same minimal behaviour — completion status and suspend data only. Scores, interactions and objectives are logged to the browser console and discarded.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"path":630,"name":631,"tagline":632,"website":633,"listing":307,"categories":634,"license":430,"pricing":635,"standards":636,"status":345,"openSource":315},"\u002Ftools\u002Fh5p","H5P (core PHP library)","The framework behind H5P interactive content — not, on its own, a SCORM tool","https:\u002F\u002Fh5p.org",[26],{"model":311},{"xapi":637,"scorm12":640,"scorm2004":642,"cmi5":644},{"supported":315,"provenance":316,"checkedAt":317,"source":638,"note":639},"https:\u002F\u002Fgithub.com\u002Fh5p\u002Fh5p-php-library\u002Fblob\u002Fmaster\u002Fjs\u002Fh5p-x-api-event.js","Content types build xAPI statement objects and dispatch them on H5P's own JavaScript event bus via triggerXAPI. The library contains no HTTP transport — there is no LRS client here. Getting statements to an LRS is the host platform integration's job, not this library's.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":641},"The string \"scorm\" does not appear in this repository. SCORM export for H5P content comes from separate tools, Lumi among them.\n",{"supported":324,"editions":643,"provenance":316,"checkedAt":317},[],{"supported":324,"provenance":316,"checkedAt":317},{"path":646,"name":647,"tagline":648,"website":649,"listing":307,"categories":650,"license":430,"pricing":651,"standards":653,"status":345,"openSource":315},"\u002Ftools\u002Filias","ILIAS","German open-source LMS carrying SCORM 1.2, SCORM 2004 and cmi5 objects in core","https:\u002F\u002Fwww.ilias.de",[151],{"model":311,"source":652},"https:\u002F\u002Fgithub.com\u002FILIAS-eLearning\u002FILIAS",{"scorm12":654,"scorm2004":657,"cmi5":661,"xapi":664,"lti":666},{"supported":315,"provenance":316,"checkedAt":317,"source":655,"note":656},"https:\u002F\u002Fgithub.com\u002FILIAS-eLearning\u002FILIAS\u002Ftree\u002Ftrunk\u002Fcomponents\u002FILIAS\u002FScormAicc","The `ScormAicc` component holds the SCORM 1.2 learning-module object, import parser and per-SCO tracking tables.\n",{"supported":315,"editions":658,"provenance":316,"checkedAt":317,"source":659,"note":660},[548,340],"https:\u002F\u002Fgithub.com\u002FILIAS-eLearning\u002FILIAS\u002Fblob\u002Ftrunk\u002Fcomponents\u002FILIAS\u002FScorm2004\u002Fclasses\u002Fclass.ilObjSCORM2004LearningModule.php","Import accepts manifests whose schemaversion is \"CAM 1.3\", \"2004 3rd Edition\" or \"2004 4th Edition\"; SCORM 1.2 packages are converted to 2004 on import by an XSL transform. A sequencer ships in the same component.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":662,"note":663},"https:\u002F\u002Fgithub.com\u002FILIAS-eLearning\u002FILIAS\u002Fblob\u002Ftrunk\u002Fcomponents\u002FILIAS\u002FCmiXapi\u002FREADME.md","The `CmiXapi` component's own README states support for xAPI 1.0.3 and cmi5 \"provided that single assignable units are used\".\n",{"supported":315,"provenance":316,"checkedAt":317,"source":662,"note":665},"ILIAS is not itself an LRS. Statements are proxied through ILIAS to an external LRS so that data can be pseudonymised and reduced on the way; some reporting queries are specific to Learning Locker.\n",{"supported":315,"versions":667,"provenance":316,"checkedAt":317,"source":668,"note":669},[],"https:\u002F\u002Fgithub.com\u002FILIAS-eLearning\u002FILIAS\u002Ftree\u002Ftrunk\u002Fcomponents\u002FILIAS\u002FLTIConsumer","Both `LTIConsumer` and `LTIProvider` components are in the tree, and the consumer implements line items and grade services. We did not confirm which LTI versions are certified, so no version is claimed here.\n",{"path":671,"name":672,"tagline":673,"website":674,"listing":307,"categories":675,"license":430,"pricing":676,"standards":677,"status":327,"openSource":315},"\u002Ftools\u002Flearning-locker","Learning Locker (Community)","The best-known open-source LRS, with no commit on master since November 2021","https:\u002F\u002Fgithub.com\u002FLearningLocker\u002Flearninglocker",[176],{"model":311},{"xapi":678,"cmi5":681,"scorm12":683,"scorm2004":684},{"supported":315,"provenance":316,"checkedAt":317,"source":679,"note":680},"https:\u002F\u002Fgithub.com\u002FLearningLocker\u002Flearninglocker\u002Fblob\u002Fmaster\u002Flib\u002Fhelpers\u002FstatementForwarding.js","An xAPI 1.0.x LRS — statement, state, agent and activity profile endpoints, with statement forwarding defaulting to an X-Experience-API-Version of 1.0.3. Validation is handled by the project's own xapi-statements and xapi-validation packages.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":682},"No occurrence of cmi5 anywhere in the source. It can store statements a cmi5 course sends, but it does not implement the cmi5 launch or auth-token endpoints, so it cannot act as the cmi5 LMS.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"editions":685,"provenance":316,"checkedAt":317},[],{"path":687,"name":688,"tagline":689,"website":690,"listing":307,"categories":691,"license":430,"pricing":692,"standards":693,"status":377,"openSource":315},"\u002Ftools\u002Flearning-records-converter","Learning Records Converter","Python API that maps SCORM 2004, IMS Caliper and Matomo traces into xAPI","https:\u002F\u002Fgithub.com\u002FPrometheus-X-association\u002Flearning-records-converter",[51],{"model":311,"currency":541,"freeTier":315},{"scorm2004":694,"scorm12":698,"xapi":700,"cmi5":703},{"supported":315,"editions":695,"provenance":316,"checkedAt":317,"source":696,"note":697},[],"https:\u002F\u002Fgithub.com\u002FPrometheus-X-association\u002Flearning-records-converter\u002Fblob\u002Fmain\u002Fdata\u002Fmappers\u002Fmapping_scorm2004_to_xapi.yml","A SCORM_2004 input format with a Pydantic data model and a YAML mapper translating completion_status, entry, exit, learner identity, progress_measure, score.scaled, session_time and success_status to xAPI verbs and results. This converts runtime records, not packages, and no specific 2004 edition is distinguished. Read in source, August 2026.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":699},"The trace-format enumeration lists only SCORM_2004; there is no 1.2 data model or mapper.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":701,"note":702},"https:\u002F\u002Fgithub.com\u002FPrometheus-X-association\u002Flearning-records-converter\u002Fblob\u002Fmain\u002Fapp\u002Fcommon\u002Fenums\u002Ftrace_formats.py","xAPI is the only output format, and a profile enricher validates and annotates statements against the DASES JSON-LD profiles. Read in source, August 2026.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":704},"The README states cmi5 is treated as an xAPI profile rather than a separate input format, and there is no cmi5 mapper in the repository.\n",{"path":706,"name":707,"tagline":708,"website":709,"listing":307,"categories":710,"license":309,"pricing":711,"standards":712,"status":345,"openSource":315},"\u002Ftools\u002Flernkit","Lernkit","Code-first authoring from MDX with SCORM 1.2 export and runnable code as a lesson primitive","https:\u002F\u002Fmanykarim.github.io\u002Flernkit\u002F",[26],{"model":311},{"scorm12":713,"scorm2004":716,"cmi5":718,"xapi":720},{"supported":315,"provenance":316,"checkedAt":317,"source":714,"note":715},"https:\u002F\u002Fgithub.com\u002Fmanykarim\u002Flernkit\u002Ftree\u002Fmain\u002Fpackages\u002Fpackagers\u002Fsrc\u002Fscorm12","packages\u002Fpackagers ships a scorm12 packager with manifest templates, the SCORM 1.2 XSD set, a bundled runtime and unit tests over the manifest and the zip. The maintainer reports packages importing into SCORM Cloud and PeopleFluent; we did not reproduce that.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":717},"Announced in the repository description and planned in ADR 0015, but packages\u002Fpackagers\u002Fsrc contains only scorm12 as of this check.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":719},"Prioritised in ADR 0003 and named in the repository description, but not implemented — no cmi5 packager or launch handling in the tree.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":721},"packages\u002Ftracker ships an XapiStubAdapter alongside the working SCORM 1.2 adapter. A stub, not an emitter.\n",{"path":723,"name":724,"tagline":725,"website":726,"listing":307,"categories":727,"license":384,"pricing":728,"standards":729,"status":345,"openSource":315},"\u002Ftools\u002Flxpack-lessonkit","LessonKit","Author courses as React components, then export SCORM, xAPI or cmi5 from the same codebase","https:\u002F\u002Flessonkit.readthedocs.io\u002Fen\u002Flatest\u002F",[26],{"model":311},{"scorm12":730,"scorm2004":733,"xapi":736,"cmi5":739,"aicc":741},{"supported":315,"provenance":316,"checkedAt":317,"source":731,"note":732},"https:\u002F\u002Fgithub.com\u002Feddiethedean\u002Flessonkit\u002Fblob\u002Fmain\u002Fpackages\u002Fcli\u002Fsrc\u002Flib\u002FtargetTypes.ts","scorm12 is one of six declared package targets in the CLI, with a corresponding launch test under e2e\u002Ftests\u002Fscorm12.\n",{"supported":315,"editions":734,"provenance":316,"checkedAt":317,"source":731,"note":735},[],"A scorm2004 target exists and has its own launch test, but the repository does not state which 2004 edition the generated manifest declares, so no edition is recorded here.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":737,"note":738},"https:\u002F\u002Fgithub.com\u002Feddiethedean\u002Flessonkit\u002Ftree\u002Fmain\u002Fpackages\u002Fxapi","A dedicated @lessonkit\u002Fxapi package handles statement mapping, batching, pluggable transports and a dead-letter queue, alongside an xapi package target.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":731,"note":740},"cmi5 is a declared package target with an end-to-end launch test. Not verified against the cmi5 conformance suite by this directory.\n",{"supported":324,"provenance":316,"checkedAt":317},{"path":743,"name":744,"tagline":745,"website":746,"listing":307,"categories":747,"license":748,"pricing":749,"standards":751,"status":345,"openSource":315},"\u002Ftools\u002Fliascript","LiaScript Exporter","Turns a Markdown course into a SCORM 1.2, SCORM 2004, IMS or xAPI package from the command line","https:\u002F\u002Fliascript.github.io",[26],"BSD-3-Clause",{"model":311,"source":750},"https:\u002F\u002Fgithub.com\u002FLiaScript\u002FLiaScript-Exporter\u002Fblob\u002Fmaster\u002FLICENSE",{"scorm12":752,"scorm2004":755,"xapi":759,"cmi5":762,"aicc":764},{"supported":315,"provenance":316,"checkedAt":317,"source":753,"note":754},"https:\u002F\u002Fgithub.com\u002FLiaScript\u002FLiaScript-Exporter\u002Fblob\u002Fmaster\u002Fsrc\u002Fexport\u002Fscorm12.ts","`-f scorm1.2` is a first-class export target with its own module; the README's per-LMS recipe table recommends it for Moodle 3–5, ILIAS and OPAL, with mastery score and iframe or embed options.\n",{"supported":315,"editions":756,"provenance":316,"checkedAt":317,"source":757,"note":758},[340],"https:\u002F\u002Fgithub.com\u002FLiaScript\u002FLiaScript-Exporter\u002Fblob\u002Fmaster\u002Fsrc\u002Fexport\u002Fscorm2004.ts","The 2004 exporter hard-codes `version: '2004 4th Edition'` in the manifest configuration; no other edition is offered.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":760,"note":761},"https:\u002F\u002Fgithub.com\u002FLiaScript\u002FLiaScript-Exporter\u002Fblob\u002Fmaster\u002Fsrc\u002Fexport\u002Fxapi.ts","`-f xapi` produces a tincan-style package. Statement coverage was not audited; treat the depth of tracking as unverified.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":763},"No cmi5 export target and no occurrence of cmi5 anywhere in the source.\n",{"supported":324,"provenance":316,"checkedAt":317},{"path":766,"name":767,"tagline":768,"website":769,"listing":307,"categories":770,"license":498,"pricing":771,"standards":772,"status":345,"openSource":315},"\u002Ftools\u002Flumi","Lumi","A desktop H5P editor that exports a working SCORM 1.2 package offline","https:\u002F\u002Flumi.education",[26],{"model":311,"freeTier":315},{"scorm12":773,"scorm2004":776,"xapi":779,"cmi5":781},{"supported":315,"provenance":316,"checkedAt":317,"source":774,"note":775},"https:\u002F\u002Fgithub.com\u002FLumieducation\u002FLumi\u002Fblob\u002Fmaster\u002Fsrc\u002Fops\u002Fexport-h5p.ts","The export builds a self-contained HTML bundle, adds the pipwerks SCORM_API_wrapper plus an H5P-to-SCORM adaptor, and zips it with simple-scorm-packager against a hard-coded version of \"1.2\". Mastery score is settable in the export dialog.\n",{"supported":324,"editions":777,"provenance":316,"checkedAt":317,"note":778},[],"The SCORM version passed to the packager is fixed at 1.2; there is no 2004 option in the code or the export UI.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":780},"H5P content types emit xAPI events internally and the adaptor maps them onto SCORM calls, but Lumi has no LRS client and no xAPI output — no reference to xAPI or an LRS exists in its own source.\n",{"supported":324,"provenance":316,"checkedAt":317},{"path":783,"name":784,"tagline":785,"website":786,"listing":307,"categories":787,"license":788,"pricing":789,"standards":790,"status":345,"openSource":315},"\u002Ftools\u002Fmoodle","Moodle","The most widely deployed open-source LMS, and the SCORM behaviour most content gets tested against","https:\u002F\u002Fmoodle.org",[151],"GPL-3.0-or-later",{"model":311,"freeTier":315},{"scorm12":791,"scorm2004":794,"aicc":798,"lti":800,"xapi":804,"cmi5":807},{"supported":315,"provenance":316,"checkedAt":317,"source":792,"note":793},"https:\u002F\u002Fgithub.com\u002Fmoodle\u002Fmoodle\u002Ftree\u002Fmain\u002Fpublic\u002Fmod\u002Fscorm\u002Fdatamodels","mod_scorm ships separate scorm_12 and scorm_13 data models plus a sequencing handler; SCORM 1.2 is the better-exercised of the two.\n",{"supported":315,"editions":795,"provenance":316,"checkedAt":317,"source":796,"note":797},[548,340],"https:\u002F\u002Fgithub.com\u002Fmoodle\u002Fmoodle\u002Fblob\u002Fmain\u002Fpublic\u002Fmod\u002Fscorm\u002Fdatamodels\u002Fscormlib.php","scormlib.php accepts a schemaversion matching '2004 3rd Edition' or '2004 4th Edition'. Sequencing and navigation are implemented but have long-standing gaps; complex sequencing trees are where Moodle most often diverges from a commercial LMS.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":799},"https:\u002F\u002Fgithub.com\u002Fmoodle\u002Fmoodle\u002Fblob\u002Fmain\u002Fpublic\u002Fmod\u002Fscorm\u002Fdatamodels\u002Faicclib.php",{"supported":315,"versions":801,"provenance":316,"checkedAt":317,"source":802,"note":803},[508,509],"https:\u002F\u002Fgithub.com\u002Fmoodle\u002Fmoodle\u002Fblob\u002Fmain\u002Fpublic\u002Fmod\u002Flti\u002Flang\u002Fen\u002Flti.php","mod_lti covers LTI 1.0\u002F1.1 and 2.0 under OAuth 1.0a and LTI 1.3 Advantage under JWT. Moodle can act as both consumer and publisher of tools.\n",{"supported":324,"provenance":316,"checkedAt":317,"source":805,"note":806},"https:\u002F\u002Fgithub.com\u002Fmoodle\u002Fmoodle\u002Ftree\u002Fmain\u002Fpublic\u002Flib\u002Fxapi","Core ships an internal xAPI subsystem, but it exists to receive statements from H5P content inside Moodle. Core cannot launch an xAPI package or forward statements to an external LRS; that needs the separate Logstore xAPI plugin.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":808},"There is no cmi5 activity module in core — the activity list runs scorm, imscp, lti, h5pactivity and so on, with nothing for cmi5.\n",{"path":810,"name":811,"tagline":812,"website":813,"listing":307,"categories":814,"license":788,"pricing":815,"standards":816,"status":345,"openSource":315},"\u002Ftools\u002Fmoodle-mod-scorm","Moodle SCORM activity (mod_scorm)","The SCORM player inside Moodle — the most exercised open-source runtime there is","https:\u002F\u002Fdocs.moodle.org\u002Fen\u002FSCORM_activity",[76],{"model":311,"source":786},{"scorm12":817,"scorm2004":819,"aicc":822,"xapi":825,"cmi5":827},{"supported":315,"provenance":316,"checkedAt":317,"source":818},"https:\u002F\u002Fgithub.com\u002Fmoodle\u002Fmoodle\u002Fblob\u002Fmain\u002Fpublic\u002Fmod\u002Fscorm\u002Fdatamodels\u002Fscorm_12.php",{"supported":315,"editions":820,"provenance":316,"checkedAt":317,"source":796,"note":821},[548,340],"The manifest parser matches the schemaversion against \"2004 3rd Edition\" or \"2004 4th Edition\" and only then switches to the 1.3 data model; any other value is handled as SCORM 1.2. Sequencing is implemented but partial.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":823,"note":824},"https:\u002F\u002Fgithub.com\u002Fmoodle\u002Fmoodle\u002Fblob\u002Fmain\u002Fpublic\u002Fmod\u002Fscorm\u002Fsettings.php","AICC HACP and direct AICC URLs are still shipped, but both are disabled by default and must be enabled by an administrator.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":826},"Nothing in mod_scorm emits xAPI. Moodle sites that send xAPI do so through the separate logstore_xapi plugin.\n",{"supported":324,"provenance":316,"checkedAt":317},{"path":829,"name":830,"tagline":831,"website":832,"listing":307,"categories":833,"license":384,"pricing":834,"standards":835,"status":345,"openSource":315},"\u002Ftools\u002Fnumbas","Numbas","Browser-based maths e-assessment system that compiles exams to SCORM 2004","https:\u002F\u002Fwww.numbas.org.uk",[26],{"model":311,"freeTier":315,"source":832},{"scorm2004":836,"scorm12":840},{"supported":315,"editions":837,"provenance":316,"checkedAt":317,"source":838,"note":839},[548],"https:\u002F\u002Fgithub.com\u002Fnumbas\u002FNumbas\u002Fblob\u002Fmaster\u002Fscormfiles\u002Fimsmanifest.xml","The bundled manifest declares '2004 3rd Edition' and includes the IMS Simple Sequencing schemas. The runtime binds to window.API_1484_11 with the pipwerks wrapper pinned to version '2004'.\n",{"supported":324,"provenance":316,"checkedAt":317,"source":841,"note":842},"https:\u002F\u002Fgithub.com\u002Fnumbas\u002FNumbas\u002Fblob\u002Fmaster\u002Fruntime\u002Fscripts\u002Fscorm-storage.js","There is no 1.2 code path. scorm-storage.js sets the wrapper version to 2004 unconditionally, so an LMS that only offers the 1.2 API will not connect.\n",{"path":844,"name":845,"tagline":846,"website":847,"listing":307,"categories":848,"license":498,"pricing":849,"standards":850,"status":345,"openSource":315},"\u002Ftools\u002Fopen-edx","Open edX","The large self-hosted learning platform, with SCORM and xAPI arriving via plugins","https:\u002F\u002Fopenedx.org",[151],{"model":311,"freeTier":315},{"scorm12":851,"scorm2004":854,"xapi":857,"cmi5":860,"lti":861},{"supported":315,"provenance":316,"checkedAt":317,"source":852,"note":853},"https:\u002F\u002Fgithub.com\u002Foverhangio\u002Fopenedx-scorm-xblock","Not in edx-platform itself. SCORM comes from the separate openedx-scorm-xblock (AGPL-3.0), which its readme says ships bundled in official Tutor releases — Tutor being the standard distribution.\n",{"supported":315,"editions":855,"provenance":316,"checkedAt":317,"source":852,"note":856},[],"Same plugin, same caveats: no sequencing or rollup, and editions are not distinguished.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":858,"note":859},"https:\u002F\u002Fgithub.com\u002Fopenedx\u002Fevent-routing-backends","Provided by openedx\u002Fevent-routing-backends, which ships xAPI transformers that convert platform tracking events into statements and forward them to an LRS. The package's readme still describes this as work in progress; the transformer code is present and shipped.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":315,"versions":862,"provenance":316,"checkedAt":317,"source":863,"note":864},[508,509],"https:\u002F\u002Fgithub.com\u002Fopenedx\u002Fxblock-lti-consumer","As a consumer, through openedx\u002Fxblock-lti-consumer — LTI 1.1 with Basic Outcomes, and LTI 1.3 with Advantage services.\n",{"path":866,"name":867,"tagline":868,"website":852,"listing":307,"categories":869,"license":498,"pricing":870,"standards":871,"status":345,"openSource":315},"\u002Ftools\u002Fopenedx-scorm-xblock","Open edX SCORM XBlock","Upload a SCORM package into an Open edX course and grade it like any other block",[151],{"model":311},{"scorm12":872,"scorm2004":875,"xapi":879,"cmi5":881,"aicc":882},{"supported":315,"provenance":316,"checkedAt":317,"source":873,"note":874},"https:\u002F\u002Fgithub.com\u002Foverhangio\u002Fopenedx-scorm-xblock\u002Fblob\u002Fmaster\u002Fopenedxscorm\u002Fscormxblock.py","The block reads schemaversion from imsmanifest.xml and treats \"1.2\" as SCORM 1.2, storing cmi.core.* elements and mapping cmi.core.lesson_status to the Open edX grade.\n",{"supported":315,"editions":876,"provenance":316,"checkedAt":317,"source":877,"note":878},[],"https:\u002F\u002Fgithub.com\u002Foverhangio\u002Fopenedx-scorm-xblock\u002Fblob\u002Fmaster\u002Fopenedxscorm\u002Fstatic\u002Fjs\u002Fsrc\u002Fscorm.js","Anything whose schemaversion is not \"1.2\" is handled as SCORM 2004 and served an API_1484_11 object; completion_status, success_status, score.scaled and progress_measure are persisted. Editions are not distinguished, and sequencing is not implemented — a multi-SCO package with sequencing rules will not behave as it would in a full LMS.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":880},"Not in this block. Open edX emits xAPI through the separate event-routing-backends package.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"path":884,"name":885,"tagline":886,"website":887,"listing":307,"categories":888,"license":384,"pricing":889,"standards":891,"status":345,"openSource":315},"\u002Ftools\u002Fopenolat","OpenOLAT","Long-running Swiss open-source LMS with SCORM 1.2, QTI 2.1 and LTI 1.3 built in","https:\u002F\u002Fwww.openolat.com",[151],{"model":311,"currency":541,"freeTier":315,"source":890},"https:\u002F\u002Fwww.openolat.com\u002Fopen-source\u002F",{"scorm12":892,"scorm2004":895,"lti":898,"xapi":902,"cmi5":904},{"supported":315,"provenance":316,"checkedAt":317,"source":893,"note":894},"https:\u002F\u002Fgithub.com\u002FOpenOLAT\u002FOpenOLAT\u002Ftree\u002Fmaster\u002Fsrc\u002Fmain\u002Fjava\u002Forg\u002Folat\u002Fmodules\u002Fscorm","A full SCORM course-node type plus a server-side runtime under org.olat.modules.scorm, with SCORM12_Core and SCORM12_DocumentHandler doing the content-package parsing. Read in source, August 2026.\n",{"supported":324,"editions":896,"provenance":316,"checkedAt":317,"note":897},[],"The SCORM module contains only 1.2 content-packaging classes and no API_1484_11 endpoint anywhere in the tree. Checked against the full repository file listing, August 2026.\n",{"supported":315,"versions":899,"provenance":316,"checkedAt":317,"source":900,"note":901},[508,509],"https:\u002F\u002Fgithub.com\u002FOpenOLAT\u002FOpenOLAT\u002Ftree\u002Fmaster\u002Fsrc\u002Fmain\u002Fjava\u002Forg\u002Folat\u002Fims\u002Flti13","org.olat.ims.lti implements Basic LTI launches with outcomes; org.olat.ims.lti13 implements LTI 1.3 with deep linking, JWKS key handling and both tool and platform roles. Read in source, August 2026.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":903},"No xAPI, LRS or TinCan code in the repository. If you need statement forwarding you are writing it or buying it from a partner.\n",{"supported":324,"provenance":316,"checkedAt":317},{"path":906,"name":907,"tagline":908,"website":909,"listing":307,"categories":910,"license":911,"pricing":912,"standards":914,"status":345,"openSource":315},"\u002Ftools\u002Fopigno","Opigno LMS","Drupal distribution turned LMS, with SCORM and xAPI handled by its own modules","https:\u002F\u002Fwww.opigno.org",[151],"GPL-2.0-or-later",{"model":311,"source":913},"https:\u002F\u002Fwww.drupal.org\u002Fproject\u002Fopigno_lms",{"scorm12":915,"scorm2004":918,"xapi":921},{"supported":315,"provenance":457,"checkedAt":317,"source":916,"note":917},"https:\u002F\u002Fwww.drupal.org\u002Fproject\u002Fopigno_scorm","The Opigno SCORM module's project page states compliance with SCORM 1.2. Taken from that page; not confirmed against a conformance suite here.\n",{"supported":315,"editions":919,"provenance":457,"checkedAt":317,"source":913,"note":920},[548],"The distribution's own page says Opigno 3.x is \"SCORM compliant (1.2 and 2004 v3)\". The module page says only \"SCORM 2004\" without an edition.\n",{"supported":315,"provenance":457,"checkedAt":317,"source":922,"note":923},"https:\u002F\u002Fwww.drupal.org\u002Fproject\u002Fopigno_tincan_api","Provided by the separate Opigno TinCan API module, which emits statements to an external LRS. Its page names Learning Locker and Watershed as the LRSs it was tested against.\n",{"path":925,"name":926,"tagline":927,"website":928,"listing":307,"categories":929,"license":309,"pricing":930,"standards":932,"status":345,"openSource":315},"\u002Ftools\u002Fprism-wcag-audit","Prism","Unzips a SCORM, AICC, cmi5 or xAPI package and runs axe-core over every page in it","https:\u002F\u002Fgithub.com\u002Fdavenguyen87\u002FPrism",[101],{"model":311,"source":931},"https:\u002F\u002Fgithub.com\u002Fdavenguyen87\u002FPrism\u002Fblob\u002Fmain\u002Fpackage.json",{"scorm12":933,"scorm2004":936,"aicc":939,"cmi5":942,"xapi":945},{"supported":315,"provenance":316,"checkedAt":317,"source":934,"note":935},"https:\u002F\u002Fgithub.com\u002Fdavenguyen87\u002FPrism\u002Fblob\u002Fmain\u002Fsrc\u002Fparser\u002Fdetect.js","Package-type detection reads `imsmanifest.xml` and infers 1.2 from the schema version and namespaces. Support here means the package is parsed and its pages audited — no run-time API is implemented.\n",{"supported":315,"editions":937,"provenance":316,"checkedAt":317,"source":934,"note":938},[],"Distinguished from 1.2 by a schemaversion containing \"2004\" or by the `adlcp_v1p3`\u002F`imsss` namespaces. Editions are not differentiated.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":940,"note":941},"https:\u002F\u002Fgithub.com\u002Fdavenguyen87\u002FPrism\u002Fblob\u002Fmain\u002Fsrc\u002Fparser\u002Faicc.js","Detected by the presence of a `.crs` file, with its own parser module.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":943,"note":944},"https:\u002F\u002Fgithub.com\u002Fdavenguyen87\u002FPrism\u002Fblob\u002Fmain\u002Fsrc\u002Fparser\u002Fcmi5.js","Detected from a `cmi5.xml` at the package root. Note that the repository description omits cmi5 while the parser supports it.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":946,"note":947},"https:\u002F\u002Fgithub.com\u002Fdavenguyen87\u002FPrism\u002Fblob\u002Fmain\u002Fsrc\u002Fparser\u002Fxapi.js","Detected from a `tincan.xml` at the package root.\n",{"path":949,"name":950,"tagline":951,"website":952,"listing":307,"categories":953,"license":309,"pricing":954,"standards":955,"status":327,"openSource":315},"\u002Ftools\u002Frescorm","RESCORM","React boilerplate that ships SCORM tracking alongside the application code","https:\u002F\u002Fgithub.com\u002Fagordillo\u002FRESCORM",[126],{"model":311},{"scorm12":956,"scorm2004":959,"xapi":962,"cmi5":963},{"supported":315,"provenance":457,"checkedAt":317,"source":957,"note":958},"https:\u002F\u002Fgithub.com\u002Fagordillo\u002FRESCORM#features","Listed in the project README's feature table. We read the README and the repository layout but did not run a package against an LMS.\n",{"supported":315,"editions":960,"provenance":457,"checkedAt":317,"source":957,"note":961},[340],"The README states \"SCORM 1.2 and SCORM 2004 4th Edition support\". Not confirmed against the running code.\n",{"supported":324,"provenance":457,"checkedAt":317},{"supported":324,"provenance":457,"checkedAt":317},{"path":965,"name":966,"tagline":967,"website":968,"listing":307,"categories":969,"license":309,"pricing":970,"standards":971,"status":345,"openSource":315},"\u002Ftools\u002Fralph-lrs","Ralph","A Python xAPI LRS, CLI and data-pipeline toolbox from France Universite Numerique","https:\u002F\u002Fopenfun.github.io\u002Fralph\u002F",[176],{"model":311},{"xapi":972,"cmi5":975,"scorm12":977,"scorm2004":978},{"supported":315,"provenance":316,"checkedAt":317,"source":973,"note":974},"https:\u002F\u002Fgithub.com\u002Fopenfun\u002Fralph\u002Fblob\u002Fmain\u002Fsrc\u002Fralph\u002Fapi\u002Frouters\u002Fstatements.py","An xAPI 1.0.3 LRS built on FastAPI — the statements resource with the documented filters, plus Pydantic models for a wide set of xAPI profiles. The LRS data backend sends X-Experience-API-Version 1.0.3.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":976},"Ralph's xAPI models reference the cmi5 profile's session-id context extension, but there is no cmi5 launch or auth-token implementation. It can store what a cmi5 course sends; it cannot launch one.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"editions":979,"provenance":316,"checkedAt":317},[],{"path":981,"name":982,"tagline":983,"website":984,"listing":307,"categories":985,"license":498,"pricing":986,"standards":987,"status":345,"openSource":315},"\u002Ftools\u002Frapidcmi5","RapidCMI5","Desktop authoring tool that outputs cmi5 packages, aimed at TLA programmes","https:\u002F\u002Fgithub.com\u002FByLightSDC\u002Frapidcmi5",[176],{"model":311,"source":984},{"cmi5":988,"xapi":991},{"supported":315,"provenance":316,"checkedAt":317,"source":989,"note":990},"https:\u002F\u002Fgithub.com\u002FByLightSDC\u002Frapidcmi5\u002Fblob\u002Fmain\u002Fpackages\u002Fcommon\u002Fsrc\u002Flib\u002FcourseBuilders\u002FgenerateCmi5Xml.ts","The monorepo generates a cmi5.xml course structure with AU definitions, and ships a matching player and a container-based builder for CI.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":992,"note":993},"https:\u002F\u002Fgithub.com\u002FByLightSDC\u002Frapidcmi5\u002Fblob\u002Fmain\u002Fpackage.json","Statements are sent through @xapi\u002Fcmi5 1.4 on top of @xapi\u002Fxapi 3.0.2. xAPI here is the cmi5 transport, not a general-purpose LRS integration you configure yourself.\n",{"path":995,"name":996,"tagline":997,"website":998,"listing":307,"categories":999,"license":309,"pricing":1000,"standards":1002,"status":327,"openSource":315},"\u002Ftools\u002Freact-scorm-provider","React SCORM Provider","A React context and higher-order component over the pipwerks SCORM wrapper","https:\u002F\u002Fgithub.com\u002FS4-NetQuest\u002Freact-scorm-provider",[126],{"model":311,"source":1001},"https:\u002F\u002Fgithub.com\u002FS4-NetQuest\u002Freact-scorm-provider\u002Fblob\u002Fmaster\u002FLICENSE",{"scorm12":1003,"scorm2004":1006,"xapi":1009,"cmi5":1010,"aicc":1011},{"supported":315,"provenance":316,"checkedAt":317,"source":1004,"note":1005},"https:\u002F\u002Fgithub.com\u002FS4-NetQuest\u002Freact-scorm-provider\u002Fblob\u002Fmaster\u002Fsrc\u002Flib\u002FScormProvider.js","`ScormProvider` imports `pipwerks-scorm-api-wrapper` and branches on the detected version, reading `cmi.core.student_name` and writing `cmi.core.score.*` when the connection is 1.2.\n",{"supported":315,"editions":1007,"provenance":316,"checkedAt":317,"source":1004,"note":1008},[],"The same component reads `cmi.learner_name` and writes `cmi.score.*` on a 2004 connection. The `version` prop accepts only '1.2' or '2004'; no 2004 edition is distinguished.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"path":1013,"name":1014,"tagline":1015,"website":1016,"listing":307,"categories":1017,"license":1018,"pricing":1019,"standards":1021,"status":345,"openSource":315},"\u002Ftools\u002Fscobot","SCOBot","SCORM 1.2 and 2004 content wrapper with a mock LMS for working offline","https:\u002F\u002Fcybercussion.com\u002Fscobot",[126],"CC-BY-SA-4.0",{"model":311,"source":1020},"https:\u002F\u002Fgithub.com\u002Fcybercussion\u002FSCOBot",{"scorm12":1022,"scorm2004":1025,"xapi":1030,"cmi5":1031},{"supported":315,"provenance":316,"checkedAt":317,"source":1023,"note":1024},"https:\u002F\u002Fgithub.com\u002Fcybercussion\u002FSCOBot\u002Fblob\u002Fmain\u002Fsrc\u002Fcore\u002FSCOBot.js","The runtime branches on getAPIVersion() === '1.2' throughout SCOBot.js — interaction encoding, latency and timestamp formats, status persistence.\n",{"supported":315,"editions":1026,"provenance":316,"checkedAt":317,"source":1028,"note":1029},[1027,548,340],"2nd","https:\u002F\u002Fgithub.com\u002Fcybercussion\u002FSCOBot\u002Fblob\u002Fmain\u002Fsrc\u002Fconnector\u002FSCOBotBase.js","findAPI() discovers window.API_1484_11 and the 2004 data model is the library's native target. The specific list of editions (2nd, 3rd, 4th) is the README's claim; the code does not branch per edition.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"path":1033,"name":1034,"tagline":1035,"website":1036,"listing":307,"categories":1037,"license":309,"pricing":1038,"standards":1039,"status":345,"openSource":315},"\u002Ftools\u002Fscol-r","SCOL-R","A thin SCORM shell that proxies the API to content hosted on another domain","https:\u002F\u002Fgithub.com\u002FDidask\u002Fscol-r",[126],{"model":311,"currency":485,"freeTier":315},{"scorm12":1040,"scorm2004":1043},{"supported":315,"provenance":316,"checkedAt":317,"source":1041,"note":1042},"https:\u002F\u002Fgithub.com\u002FDidask\u002Fscol-r\u002Fblob\u002Fmaster\u002Fsrc\u002FSCORMAdapter.ts","SCORMAdapter detects window.API and calls LMSInitialize \u002F LMSSetValue on cmi.core.*; the shipped manifest declares schemaversion 1.2. Read in source, August 2026.\n",{"supported":315,"editions":1044,"provenance":316,"checkedAt":317,"source":1041,"note":1045},[],"The same adapter detects window.API_1484_11 and switches to Initialize \u002F Terminate and the 2004 data model, including cmi.progress_measure. The edition is whatever you put in the manifest's schemaversion, so no specific edition is claimed here.\n",{"path":1047,"name":1048,"tagline":1049,"website":1050,"listing":307,"categories":1051,"license":384,"pricing":1052,"standards":1054,"status":345,"openSource":315},"\u002Ftools\u002Fscorm-cloud-api-clients","SCORM Cloud API v2 clients","Rustici's generated client libraries for the SCORM Cloud REST API, in six languages","https:\u002F\u002Fcloud.scorm.com",[126],{"model":311,"source":1053},"https:\u002F\u002Fgithub.com\u002FRusticiSoftware\u002Fscormcloud-api-v2-client-java\u002Fblob\u002Fmaster\u002FLICENSE",{"scorm12":1055,"scorm2004":1058,"aicc":1060,"cmi5":1061,"xapi":1063},{"supported":315,"provenance":316,"checkedAt":317,"source":1056,"note":1057},"https:\u002F\u002Fgithub.com\u002FRusticiSoftware\u002Fscormcloud-api-v2-client-java\u002Fblob\u002Fmaster\u002Fsrc\u002Fmain\u002Fjava\u002Fcom\u002Frusticisoftware\u002Fcloud\u002Fv2\u002Fclient\u002Fmodel\u002FCourseSchema.java","The generated `CourseLearningStandardEnum` includes SCORM11, SCORM12 and the three 2004 editions, so the API reports these back per course.\n",{"supported":315,"editions":1059,"provenance":316,"checkedAt":317,"source":1056},[1027,548,340],{"supported":315,"provenance":316,"checkedAt":317,"source":1056},{"supported":315,"provenance":316,"checkedAt":317,"source":1056,"note":1062},"CMI5 is a value of the course learning-standard enum. Checked in the client's model only — we have not launched a cmi5 course end to end against the service.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":1064,"note":1065},"https:\u002F\u002Fgithub.com\u002FRusticiSoftware\u002Fscormcloud-api-v2-client-java\u002Fblob\u002Fmaster\u002Fsrc\u002Fmain\u002Fjava\u002Fcom\u002Frusticisoftware\u002Fcloud\u002Fv2\u002Fclient\u002Fapi\u002FXapiApi.java","A full `XapiApi` plus statement, activity, agent and credential models are generated, covering the LRS endpoints SCORM Cloud exposes.\n",{"path":1067,"name":1068,"tagline":1069,"website":1070,"listing":307,"categories":1071,"license":1072,"pricing":1073,"standards":1076,"status":345,"openSource":324},"\u002Ftools\u002Fscorm-lab","SCORM Lab","Drop a package in the browser and watch every API call it makes","https:\u002F\u002Fscorm-lab.com",[76,101],"proprietary",{"model":1074,"currency":1075,"freeTier":315,"source":1070},"free","GBP",{"scorm12":1077,"scorm2004":1078,"xapi":1080,"cmi5":1081,"aicc":1082,"lti":1083},{"supported":315,"provenance":457,"source":1070},{"supported":315,"editions":1079,"provenance":457,"source":1070},[1027,548,340],{"supported":324,"provenance":457,"source":1070},{"supported":324,"provenance":457,"source":1070},{"supported":324},{"supported":324},{"path":1085,"name":1086,"tagline":1087,"website":1088,"listing":307,"categories":1089,"license":309,"pricing":1090,"standards":1091,"status":345,"openSource":315},"\u002Ftools\u002Fscorm-validator","SCORM Validator","A small Streamlit app that opens a package zip and reports structural faults","https:\u002F\u002Fgithub.com\u002Fswdmartinez\u002FSCORM-Validator",[101],{"model":311},{"scorm12":1092,"scorm2004":1095,"aicc":1098,"xapi":1099,"cmi5":1100},{"supported":315,"provenance":316,"checkedAt":317,"source":1093,"note":1094},"https:\u002F\u002Fgithub.com\u002Fswdmartinez\u002FSCORM-Validator\u002Fblob\u002Fmain\u002Fvalidator\u002Fmanifest_parser.py","Packaging-level checks only: manifest presence, well-formed XML, required elements, referenced files present, adlcp:scormType set, SCO launch href. Nothing about run-time behaviour is examined.\n",{"supported":315,"editions":1096,"provenance":316,"checkedAt":317,"source":1093,"note":1097},[],"detect_version distinguishes 1.2 from 2004 by the content-packaging namespace on the manifest root, not by the declared schemaversion, so it cannot tell 2004 editions apart and does not attempt to.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"path":1102,"name":1103,"tagline":1104,"website":1105,"listing":307,"categories":1106,"license":309,"pricing":1107,"standards":1108,"status":345,"openSource":315},"\u002Ftools\u002Fscorm-lms-dhodges47","SCORM-LearningManagementSystem","A small .NET SCORM LMS and player you can read end to end","https:\u002F\u002Fgithub.com\u002Fdhodges47\u002FSCORM-LearningManagementSystem",[76],{"model":311,"source":1105},{"scorm12":1109,"scorm2004":1112},{"supported":315,"provenance":316,"checkedAt":317,"source":1110,"note":1111},"https:\u002F\u002Fgithub.com\u002Fdhodges47\u002FSCORM-LearningManagementSystem\u002Fblob\u002Fmaster\u002FOpenSourceSCORMLMS\u002Fwwwroot\u002Fjs\u002FOutermostLMSV5.js","All eight 1.2 functions are implemented client-side and persisted through an API controller into cmi_core, cmi_objectives and cmi_interactions tables.\n",{"supported":315,"editions":1113,"provenance":457,"checkedAt":317,"source":1114,"note":1115},[],"https:\u002F\u002Fgithub.com\u002Fdhodges47\u002FSCORM-LearningManagementSystem#readme","The README claims \"some support for SCORM 2004\". In the adapter an API_1484_11 object is registered and the 2004 method names are aliased onto the 1.2 implementations, so 2004 content initialises against a 1.2-shaped data model. Not independently confirmed with 2004 content.\n",{"path":1117,"name":1118,"tagline":1119,"website":1120,"listing":307,"categories":1121,"license":1122,"pricing":1123,"standards":1124,"status":327,"openSource":315},"\u002Ftools\u002Fpipwerks-scorm-manifests","SCORM-Manifests","Boilerplate imsmanifest.xml files for single-SCO SCORM 1.2 and 2004 packages","https:\u002F\u002Fgithub.com\u002Fpipwerks\u002FSCORM-Manifests",[126],"none",{"model":311},{"scorm12":1125,"scorm2004":1128,"xapi":1132,"cmi5":1133,"aicc":1134},{"supported":315,"provenance":316,"checkedAt":317,"source":1126,"note":1127},"https:\u002F\u002Fgithub.com\u002Fpipwerks\u002FSCORM-Manifests\u002Fblob\u002Fmaster\u002FSCORM%201.2%20Manifest\u002Fimsmanifest.xml","Manifest declares schema \"ADL SCORM\" \u002F schemaversion \"1.2\" and ships the four SCORM 1.2 XSDs in a SCORM-schemas subfolder.\n",{"supported":315,"editions":1129,"provenance":316,"checkedAt":317,"source":1130,"note":1131},[340],"https:\u002F\u002Fgithub.com\u002Fpipwerks\u002FSCORM-Manifests\u002Fblob\u002Fmaster\u002FSCORM%202004%20Manifest\u002Fimsmanifest.xml","schemaversion is literally \"2004 4th Edition\"; the adlseq, adlnav and imsss namespaces are declared and the matching schemas are bundled. No 2nd or 3rd Edition variant is provided.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"path":1136,"name":1137,"tagline":1138,"website":1139,"listing":307,"categories":1140,"license":1122,"pricing":1141,"standards":1142,"status":1153,"openSource":315},"\u002Ftools\u002Fscorm-to-xapi-wrapper","SCORM-to-xAPI Wrapper","ADL's drop-in APIWrapper.js that re-emits SCORM calls as xAPI statements","https:\u002F\u002Fgithub.com\u002Fadlnet\u002FSCORM-to-xAPI-Wrapper",[51],{"model":311,"source":1139},{"scorm12":1143,"scorm2004":1146,"xapi":1150},{"supported":315,"provenance":316,"checkedAt":317,"source":1144,"note":1145},"https:\u002F\u002Fgithub.com\u002Fadlnet\u002FSCORM-to-xAPI-Wrapper\u002Ftree\u002Fmaster\u002FSCORM1.2","A SCORM1.2 wrapper is present, but the README states in capitals that this version is out of date and directs readers to the 2004 wrapper instead. That warning has stood since the repository was archived.\n",{"supported":315,"editions":1147,"provenance":316,"checkedAt":317,"source":1148,"note":1149},[],"https:\u002F\u002Fgithub.com\u002Fadlnet\u002FSCORM-to-xAPI-Wrapper\u002Ftree\u002Fmaster\u002FSCORM2004","The 2004 wrapper is the maintained-as-of-archival path. No edition is specified in the repository.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":1151,"note":1152},"https:\u002F\u002Fgithub.com\u002Fadlnet\u002FSCORM-to-xAPI-Wrapper\u002Fblob\u002Fmaster\u002FSCORMToXAPIFunctions.js","Statements follow the xAPI SCORM Profile, which the README itself describes as being in draft. Sending requires the ADL xAPIWrapper and an LRS endpoint configured in the file.\n","archived",{"path":1155,"name":1156,"tagline":1157,"website":1158,"listing":307,"categories":1159,"license":1072,"pricing":1160,"standards":1164,"status":345,"openSource":324},"\u002Ftools\u002Fscormbridge","SCORMBridge","License your SCORM course into a client's LMS without handing over the file","https:\u002F\u002Fscormbridge.app",[201],{"model":1161,"priceFrom":1162,"currency":1075,"period":1163,"freeTier":315,"source":1158},"freemium",49,"month",{"scorm12":1165,"scorm2004":1166,"xapi":1168,"cmi5":1169,"aicc":1170,"lti":1171},{"supported":315,"provenance":457,"source":1158},{"supported":315,"editions":1167,"provenance":457,"source":1158},[1027,548,340],{"supported":324},{"supported":324},{"supported":324},{"supported":324},{"path":1173,"name":1174,"tagline":1175,"website":1176,"listing":307,"categories":1177,"license":309,"pricing":1178,"standards":1179,"status":327,"openSource":315},"\u002Ftools\u002Fscormify","SCORMify","Sixty lines of JavaScript that turn a folder of HTML into a SCORM 1.2 package","https:\u002F\u002Fgithub.com\u002FLitmos\u002FSCORMify",[126],{"model":311,"currency":485,"freeTier":315},{"scorm12":1180,"scorm2004":1183},{"supported":315,"provenance":316,"checkedAt":317,"source":1181,"note":1182},"https:\u002F\u002Fgithub.com\u002FLitmos\u002FSCORMify\u002Fblob\u002Fmaster\u002Fsrc\u002Fimsmanifest.xml","The bundled manifest declares schemaversion 1.2 and scormify.js calls LMSInitialize, LMSSetValue on cmi.core.* and LMSFinish. Verified by reading the source, August 2026.\n",{"supported":324,"editions":1184,"provenance":316,"checkedAt":317,"note":1185},[],"No API_1484_11 lookup and no 2004 data-model elements anywhere in the source.",{"path":1187,"name":1188,"tagline":1189,"website":1190,"listing":307,"categories":1191,"license":384,"pricing":1192,"standards":1193,"status":345,"openSource":315},"\u002Ftools\u002Fsql-lrs","SQL LRS","An xAPI learning record store that runs on SQLite or your existing SQL database","https:\u002F\u002Fgithub.com\u002Fyetanalytics\u002Flrsql",[176],{"model":311},{"xapi":1194,"cmi5":1197,"scorm12":1199,"scorm2004":1200},{"supported":315,"provenance":316,"checkedAt":317,"source":1195,"note":1196},"https:\u002F\u002Fgithub.com\u002Fyetanalytics\u002Flrsql\u002Fblob\u002Fmain\u002Fsrc\u002Ftest\u002Flrsql\u002Fconformance_test.clj","Supports xAPI 1.0.3 and 2.0.0, selected per request by the X-Experience-API-Version header. The repository's own test suite runs the ADL LRS conformance suite against a live instance for both versions, so the claim is checkable rather than asserted.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":1198},"There is no cmi5 code in the repository. An LRS is a prerequisite for cmi5 and will happily store the statements a cmi5 course sends, but the launch side — fetch URL, AU session state, move-on evaluation — is not here and needs a separate cmi5 launcher.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"editions":1201,"provenance":316,"checkedAt":317},[],{"path":1203,"name":1204,"tagline":1205,"website":1206,"listing":307,"categories":1207,"license":466,"pricing":1208,"standards":1210,"status":345,"openSource":315},"\u002Ftools\u002Fsakai","Sakai","Higher-education LMS with an in-tree SCORM player built on the ADL reference code","https:\u002F\u002Fwww.sakailms.org",[151],{"model":311,"source":1209},"https:\u002F\u002Fgithub.com\u002Fsakaiproject\u002Fsakai\u002Fblob\u002Fmaster\u002FLICENSE",{"scorm12":1211,"scorm2004":1214,"lti":1218},{"supported":315,"provenance":316,"checkedAt":317,"source":1212,"note":1213},"https:\u002F\u002Fgithub.com\u002Fsakaiproject\u002Fsakai\u002Ftree\u002Fmaster\u002Fscormplayer\u002Fscorm-api\u002Fsrc\u002Fjava\u002Forg\u002Fadl\u002Fapi\u002Fecmascript","The bundled `scormplayer` module implements `SCORM12APIInterface` alongside the ADL data-model classes it was derived from.\n",{"supported":315,"editions":1215,"provenance":316,"checkedAt":317,"source":1216,"note":1217},[548],"https:\u002F\u002Fgithub.com\u002Fsakaiproject\u002Fsakai\u002Ftree\u002Fmaster\u002Fscormplayer\u002Fscorm-impl\u002Fadl\u002Fsrc\u002Fjava\u002Forg\u002Fadl\u002Fsequencer\u002Fimpl","`SCORM13APIInterface`, `SCORM_2004_DM` and a full `ADLSequencer` are present; the conformance package committed as a test fixture is a SCORM 2004 3rd Edition PITE test.\n",{"supported":315,"versions":1219,"provenance":316,"checkedAt":317,"source":1220,"note":1221},[508,509],"https:\u002F\u002Fgithub.com\u002Fsakaiproject\u002Fsakai\u002Ftree\u002Fmaster\u002Flti","The `lti` module carries both the legacy Basic LTI code and an `org.sakaiproject.lti13` package implementing LTI 1.3 Advantage services.\n",{"path":1223,"name":1224,"tagline":1225,"website":1226,"listing":307,"categories":1227,"license":430,"pricing":1228,"standards":1230,"status":377,"openSource":315},"\u002Ftools\u002Ftrax-lrs","TRAX LRS","A deliberately minimal self-hosted xAPI Learning Record Store built on Laravel","https:\u002F\u002Ftraxlrs.com",[176],{"model":311,"freeTier":315,"source":1229},"https:\u002F\u002Fwww.traxlrs.com\u002F",{"xapi":1231,"cmi5":1234},{"supported":315,"provenance":316,"checkedAt":317,"source":1232,"note":1233},"https:\u002F\u002Fgithub.com\u002Ftrax-project\u002Ftrax3-core","The gateway requires an X-Experience-API-Version header and answers 1.0.3. Statements, states, activity profiles and agent profiles are all implemented. There is no xAPI 2.0 handling in 3.1.\n",{"supported":324,"provenance":316,"checkedAt":317,"source":1232,"note":1235},"3.1 names a 'cmi5-token' auth guard and installs a cmi5\u002Ftokens table, but the guard falls through to Basic authentication and no cmi5 launch handling is implemented in trax3-core. Recorded as unsupported until a launch can be observed end to end.\n",{"path":1237,"name":1238,"tagline":1239,"website":1240,"listing":307,"categories":1241,"license":309,"pricing":1242,"standards":1244,"status":345,"openSource":315},"\u002Ftools\u002Ftessera","Tessera","Author a course as Svelte pages, then export the same source as SCORM, cmi5 or xAPI","https:\u002F\u002Ftesseralearn.dev",[126],{"model":311,"source":1243},"https:\u002F\u002Fgithub.com\u002Fredmodd\u002Ftessera",{"scorm12":1245,"scorm2004":1247,"xapi":1250,"cmi5":1253},{"supported":315,"provenance":316,"checkedAt":317,"source":1246},"https:\u002F\u002Fgithub.com\u002Fredmodd\u002Ftessera\u002Fblob\u002Fmain\u002Fpackages\u002Ftessera-learn\u002Fsrc\u002Fplugin\u002Fexport.ts",{"supported":315,"editions":1248,"provenance":316,"checkedAt":317,"source":1246,"note":1249},[340],"The exporter writes \u003Cschemaversion>2004 4th Edition\u003C\u002Fschemaversion>; 2nd and 3rd Edition manifests are not offered.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":1251,"note":1252},"https:\u002F\u002Fgithub.com\u002Fredmodd\u002Ftessera\u002Fblob\u002Fmain\u002Fpackages\u002Ftessera-learn\u002Fsrc\u002Fruntime\u002Fxapi\u002Fversion.ts","Pinned to xAPI 1.0.3. The source states the choice explicitly and does not implement IEEE 9274.1.1 (xAPI 2.0).\n",{"supported":315,"provenance":316,"checkedAt":317,"source":1254,"note":1255},"https:\u002F\u002Fgithub.com\u002Fredmodd\u002Ftessera\u002Fblob\u002Fmain\u002Fpackages\u002Ftessera-learn\u002Fsrc\u002Fruntime\u002Fadapters\u002Fcmi5.ts","Exports a cmi5 course structure XML and implements the AU lifecycle over the xAPI 1.0.3 client. Editor-checked in source, not against the cmi5 test suite.\n",{"path":1257,"name":1258,"tagline":1259,"website":1260,"listing":307,"categories":1261,"license":384,"pricing":1262,"standards":1264,"status":327,"openSource":315},"\u002Ftools\u002Ftincanjs","TinCanJS","Rustici's original JavaScript xAPI library — still the most-linked, unchanged since 2016","http:\u002F\u002Frusticisoftware.github.io\u002FTinCanJS\u002F",[176],{"model":311,"source":1263},"https:\u002F\u002Fgithub.com\u002FRusticiSoftware\u002FTinCanJS",{"xapi":1265,"cmi5":1268},{"supported":315,"provenance":316,"checkedAt":317,"source":1266,"note":1267},"https:\u002F\u002Fgithub.com\u002FRusticiSoftware\u002FTinCanJS\u002Fblob\u002Fmaster\u002Fsrc\u002FTinCan.js","TinCan.versions() returns 1.0.2, 1.0.1, 1.0.0, 0.95 and 0.9. There is no 1.0.3 and no IEEE 9274.1.1 (xAPI 2.0) support.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":1269},"It is an LRS client only — no cmi5 launch parameters, no AU lifecycle, no course structure handling.\n",{"path":1271,"name":1272,"tagline":1273,"website":1274,"listing":307,"categories":1275,"license":430,"pricing":1276,"standards":1278,"status":345,"openSource":315},"\u002Ftools\u002Ftotara-learn","Totara Learn","Moodle-derived enterprise LMS, GPL-licensed but distributed only through a paid subscription","https:\u002F\u002Fwww.totara.com",[151],{"model":1277,"currency":485,"freeTier":324,"source":1274},"quote",{"scorm12":1279,"scorm2004":1282,"aicc":1285,"xapi":1286,"lti":1289},{"supported":315,"provenance":457,"checkedAt":317,"source":1280,"note":1281},"https:\u002F\u002Ftotara.help\u002Fdocs\u002Fadd-a-scorm-activity","Totara's own documentation says it \"fully supports the AICC and SCORM 1.2 specifications\".\n",{"supported":315,"editions":1283,"provenance":457,"checkedAt":317,"source":1280,"note":1284},[],"The same page qualifies 2004 heavily: support excludes \"Content Aggregation Model, The Run-Time Environment, Sequencing and Navigation\" extensions. Read that as basic 2004 playback without sequencing — test any 2004 package with sequencing rules before committing to it.\n",{"supported":315,"provenance":457,"checkedAt":317,"source":1280},{"supported":324,"provenance":457,"checkedAt":317,"source":1287,"note":1288},"https:\u002F\u002Ftotara.help\u002Fdocs\u002Fconfigure-xapi-with-totara","Totara documents an xAPI setup but states that it \"currently requires third-party plugins to work, and is not supported by Totara\". The plugins are the community Moodle logstore_xapi ones, and an external LRS is required. We record this as unsupported because the vendor does.\n",{"supported":315,"versions":1290,"provenance":457,"checkedAt":317,"source":1291,"note":1292},[508,509],"https:\u002F\u002Ftotara.help\u002Fdocs\u002Fexternal-tools","Documented as consumer only — \"Using Totara as a provider, i.e. exporting content to other sites, is not supported.\" LTI Advantage services are listed for 1.3.\n",{"path":1294,"name":1295,"tagline":1296,"website":1297,"listing":307,"categories":1298,"license":384,"pricing":1299,"standards":1300,"status":345,"openSource":315},"\u002Ftools\u002Funity-scorm-integration-kit","Unity-SCORM Integration Kit","Export a Unity WebGL build as a SCORM 2004 package and report progress from C#","https:\u002F\u002Fgithub.com\u002Frstals\u002FUnity-SCORM-Integration-Kit",[126],{"model":311,"source":1297},{"scorm12":1301,"scorm2004":1303},{"supported":324,"provenance":316,"checkedAt":317,"note":1302},"The exporter writes a 2004 manifest only, and the bundled API finder looks for API_1484_11. A 1.2-only LMS is not a target.\n",{"supported":315,"editions":1304,"provenance":316,"checkedAt":317,"source":1305,"note":1306},[340],"https:\u002F\u002Fgithub.com\u002Frstals\u002FUnity-SCORM-Integration-Kit\u002Fblob\u002Fmaster\u002FUnity3D-Project\u002FAssets\u002FSCORM\u002FEditor\u002FScormExport.cs","ScormExport.cs emits \u003Cschemaversion>2004 4th Edition\u003C\u002Fschemaversion> and bundles the adlcp\u002Fadlseq\u002Fadlnav v1p3 schemas.\n",{"path":1308,"name":1309,"tagline":1310,"website":1311,"listing":307,"categories":1312,"license":384,"pricing":1313,"standards":1314,"status":345,"openSource":315},"\u002Ftools\u002Fxerte","Xerte Online Toolkits","Server-hosted, template-driven authoring for institutions, with SCORM and xAPI export","https:\u002F\u002Fxerte.org.uk",[26],{"model":311,"freeTier":315},{"scorm12":1315,"scorm2004":1318,"xapi":1322,"cmi5":1325,"lti":1326},{"supported":315,"provenance":316,"checkedAt":317,"source":1316,"note":1317},"https:\u002F\u002Fgithub.com\u002Fthexerteproject\u002Fxerteonlinetoolkits\u002Ftree\u002Fdevelop\u002Flanguages\u002Fen-GB\u002Fmodules\u002Fxerte\u002Fscorm1.2","A dedicated tracking module (xttracking_scorm1.2.js) ships in the language module tree and is selected at export time.\n",{"supported":315,"editions":1319,"provenance":316,"checkedAt":317,"source":1320,"note":1321},[548],"https:\u002F\u002Fgithub.com\u002Fthexerteproject\u002Fxerteonlinetoolkits\u002Ftree\u002Fdevelop\u002Flanguages\u002Fen-GB\u002Fmodules\u002Fxerte\u002Fscorm2004.3rd","The only 2004 tracking module in the tree is scorm2004.3rd. There is no 4th Edition variant, and sequencing is not authored.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":1323,"note":1324},"https:\u002F\u002Fgithub.com\u002Fthexerteproject\u002Fxerteonlinetoolkits\u002Ftree\u002Fdevelop\u002Fmodules\u002Fsite\u002FxAPI","Ships an xAPI tracking module built on ADL's xapiwrapper, plus an xAPI dashboard for reporting back over the statements.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":315,"versions":1327,"provenance":316,"checkedAt":317,"source":1328,"note":1329},[508,509],"https:\u002F\u002Fgithub.com\u002Fthexerteproject\u002Fxerteonlinetoolkits\u002Fblob\u002Fdevelop\u002Flti13_launch.php","lti_launch.php, lti2_launch.php and lti13_launch.php sit at the project root — so LTI 1.1, LTI 2.0 and LTI 1.3 launches are all handled, though this directory records only 1.1 and 1.3.\n",{"path":1331,"name":1332,"tagline":1333,"website":1334,"listing":307,"categories":1335,"license":384,"pricing":1336,"standards":1337,"status":1153,"openSource":315},"\u002Ftools\u002Fadl-cmi5-client-library","cmi5 Client Library (ADL)","ADL's archived JavaScript wrapper and example AU for the content side of cmi5","https:\u002F\u002Fgithub.com\u002Fadlnet\u002Fcmi5-Client-Library",[176],{"model":311},{"cmi5":1338,"xapi":1341,"scorm12":1343,"scorm2004":1344},{"supported":315,"provenance":316,"checkedAt":317,"source":1339,"note":1340},"https:\u002F\u002Fgithub.com\u002Fadlnet\u002Fcmi5-Client-Library\u002Fblob\u002Fmaster\u002FExamples\u002FScripts\u002Fcmi5Wrapper.js","The wrapper builds cmi5-defined statements, honours launchMode by restricting non-normal sessions to Initialized and Terminated, sets the moveOn category and the masteryScore and progress extensions, and cites spec sections 9.5.2 and 9.5.3 inline. A sample cmi5.xml course structure is included.\n",{"supported":315,"provenance":316,"checkedAt":317,"note":1342},"Statements are sent through ADL's xapiwrapper, bundled in the repository. cmi5 sits on xAPI, so this is a dependency rather than a separate feature.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"path":1346,"name":1347,"tagline":1348,"website":1349,"listing":307,"categories":1350,"license":384,"pricing":1351,"standards":1352,"status":327,"openSource":315},"\u002Ftools\u002Fcmi5-js","cmi5.js","Rustici's JavaScript runtime for the assignable-unit side of a cmi5 course","https:\u002F\u002Fgithub.com\u002FRusticiSoftware\u002Fcmi5.js",[176],{"model":311,"currency":485,"freeTier":315},{"cmi5":1353,"xapi":1356},{"supported":315,"provenance":316,"checkedAt":317,"source":1354,"note":1355},"https:\u002F\u002Fgithub.com\u002FRusticiSoftware\u002Fcmi5.js\u002Fblob\u002F3.x\u002Fsrc\u002Findex.js","Implements the AU side: parses the launch query string, fetches LMS LaunchData and the learner preferences state, and sends the Initialized, Completed, Passed, Failed and Terminated statements with the cmi5 moveOn context category and masteryScore extension. Read in source, August 2026.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":1354,"note":1357},"Sends X-Experience-API-Version 1.0.3 on every request. It talks to an LRS only through the cmi5 statement flow, so it is not a general xAPI client.\n",{"path":1359,"name":1360,"tagline":1361,"website":1362,"listing":307,"categories":1363,"license":384,"pricing":1364,"standards":1365,"status":345,"openSource":315},"\u002Ftools\u002Fmoodle-mod-cmi5launch","cmi5launch for Moodle","ADL's Moodle activity module that launches cmi5 content via the CATAPULT player","https:\u002F\u002Fgithub.com\u002Fadlnet\u002FMoodle-mod_cmi5launch",[176],{"model":311,"source":1362},{"cmi5":1366,"xapi":1368},{"supported":315,"provenance":316,"checkedAt":317,"source":1362,"note":1367},"The module is a bridge, not a player. Launch, AU sequencing and satisfaction statements are delegated to a running instance of the ADL CATAPULT prototype player, which you host separately.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":1362,"note":1369},"Statements are read back from an external LRS for the activity and session reports. The plugin stores no statements of its own; an LRS is a hard prerequisite.\n",{"path":1371,"name":1372,"tagline":1373,"website":1374,"listing":307,"categories":1375,"license":384,"pricing":1376,"standards":1378,"status":327,"openSource":315},"\u002Ftools\u002Fdart-scorm","dart_scorm","SCORM 1.2 and 2004 bindings for Flutter and Dart web applications","https:\u002F\u002Fpub.dev\u002Fpackages\u002Fscorm",[126],{"model":311,"source":1377},"https:\u002F\u002Fgithub.com\u002Fshripal17\u002Fdart_scorm",{"scorm12":1379,"scorm2004":1381,"xapi":1384,"cmi5":1385},{"supported":315,"provenance":316,"checkedAt":317,"source":1380},"https:\u002F\u002Fgithub.com\u002Fshripal17\u002Fdart_scorm\u002Fblob\u002Fmain\u002Flib\u002Fsrc\u002Fscorm_version_extension.dart",{"supported":315,"editions":1382,"provenance":316,"checkedAt":317,"source":1380,"note":1383},[],"The package binds to the window.API_1484_11 object and passes calls straight through; no edition is asserted. The bundled example manifest declares \"2004 3rd Edition\".\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"path":1387,"name":1388,"tagline":1389,"website":1390,"listing":307,"categories":1391,"license":384,"pricing":1392,"standards":1393,"status":345,"openSource":315},"\u002Ftools\u002Felearning-module-parser","eLearning Module Parser","Java library that detects and parses SCORM, AICC, cmi5 and xAPI packages into typed metadata","https:\u002F\u002Fgithub.com\u002Fjcputney\u002Felearning-module-parser",[126],{"model":311},{"scorm12":1394,"scorm2004":1396,"aicc":1399,"cmi5":1401,"xapi":1403},{"supported":315,"provenance":457,"checkedAt":317,"source":1395},"https:\u002F\u002Fgithub.com\u002Fjcputney\u002Felearning-module-parser#supported-formats",{"supported":315,"editions":1397,"provenance":457,"checkedAt":317,"source":1395,"note":1398},[1027,548,340],"Detected by SCORM 2004 namespaces in imsmanifest.xml; the parser surfaces the declared edition along with sequencing, rollup rules and delivery controls.\n",{"supported":315,"provenance":457,"checkedAt":317,"source":1395,"note":1400},"Detected from a .crs descriptor containing a [Course] section; parses assignable units and prerequisite graphs. Parsing only — HACP communication is out of scope.\n",{"supported":315,"provenance":457,"checkedAt":317,"source":1395,"note":1402},"Reads cmi5.xml: AU metadata, move-on criteria, mastery score, launch method and launch parameters. This is course-structure parsing, not a cmi5 launch implementation — nothing here issues a fetch URL or manages an AU session.\n",{"supported":315,"provenance":457,"checkedAt":317,"source":1395,"note":1404},"tincan.xml parsing only — activity definitions, launch activity ids and URLs. It is not an LRS client and sends no statements.\n",{"path":1406,"name":1407,"tagline":1408,"website":1409,"listing":307,"categories":1410,"license":498,"pricing":1411,"standards":1412,"status":345,"openSource":315},"\u002Ftools\u002Fexelearning","eXeLearning","Free authoring tool from the Spanish education ministry, exporting SCORM, IMS CP and EPUB","https:\u002F\u002Fexelearning.net",[26],{"model":311,"freeTier":315},{"scorm12":1413,"scorm2004":1415,"xapi":1419,"cmi5":1421,"aicc":1422},{"supported":315,"provenance":316,"checkedAt":317,"source":1414},"https:\u002F\u002Fgithub.com\u002Fexelearning\u002Fexelearning\u002Fblob\u002Fmain\u002Fsrc\u002Fshared\u002Fexport\u002Fexporters\u002FScorm12Exporter.ts",{"supported":315,"editions":1416,"provenance":316,"checkedAt":317,"source":1417,"note":1418},[340],"https:\u002F\u002Fgithub.com\u002Fexelearning\u002Fexelearning\u002Fblob\u002Fmain\u002Fsrc\u002Fshared\u002Fexport\u002Fgenerators\u002FScorm2004Manifest.ts","The manifest generator writes '2004 4th Edition' as the schemaversion, with the imscp, adlcp, adlseq, adlnav and imsss namespaces declared.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":1420},"The exporters directory covers ELPX, EPUB3, HTML5, IMS Content Packaging, SCORM 1.2 and SCORM 2004. There is no xAPI or cmi5 exporter.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"path":1424,"name":1425,"tagline":1426,"website":1427,"listing":307,"categories":1428,"license":309,"pricing":1429,"standards":1430,"status":327,"openSource":315},"\u002Ftools\u002Fgrunt-scorm-manifest","grunt-scorm-manifest","Grunt task that writes an imsmanifest.xml for a single-SCO package","https:\u002F\u002Fgithub.com\u002Fraygesualdo\u002Fgrunt-scorm-manifest",[126],{"model":311,"source":1427},{"scorm12":1431,"scorm2004":1434},{"supported":315,"provenance":316,"checkedAt":317,"source":1432,"note":1433},"https:\u002F\u002Fgithub.com\u002Fraygesualdo\u002Fgrunt-scorm-manifest\u002Fblob\u002Fmaster\u002Ftasks\u002Fscorm_manifest.js","Passing version '1.2' sets schemaversion to 1.2 and switches the resource attribute to the lower-case adlcp:scormtype the 1.2 schema requires.\n",{"supported":315,"editions":1435,"provenance":316,"checkedAt":317,"source":1432,"note":1436},[548],"The task hard-codes the schemaversion string '2004 3rd Edition'. There is no 4th Edition option — '2004' and '2004v3' both produce a 3rd Edition manifest.\n",{"path":1438,"name":1439,"tagline":1440,"website":1441,"listing":307,"categories":1442,"license":309,"pricing":1443,"standards":1444,"status":345,"openSource":315},"\u002Ftools\u002Flaravel-scorm","laravel-scorm","Laravel package that unpacks SCORM zips and stores CMI tracking in your database","https:\u002F\u002Fgithub.com\u002Fdevianl2\u002Flaravel-scorm",[151],{"model":311},{"scorm12":1445,"scorm2004":1448,"xapi":1451,"cmi5":1452},{"supported":315,"provenance":316,"checkedAt":317,"source":1446,"note":1447},"https:\u002F\u002Fgithub.com\u002Fdevianl2\u002Flaravel-scorm\u002Fblob\u002Fmain\u002Fsrc\u002FManager\u002FScormManager.php","ScormManager reads \u003Cschemaversion> from the manifest and maps '1.2' to a SCORM 1.2 tracking model; ScormScoTracking persists the cmi.core elements.\n",{"supported":315,"editions":1449,"provenance":316,"checkedAt":317,"source":1446,"note":1450},[1027,548,340],"The manifest parser accepts 'CAM 1.3', '2004 3rd Edition' and '2004 4th Edition' and collapses all three into a single scorm_2004 tracking model. There is no sequencing or navigation engine, so multi-SCO 2004 packages that rely on imsss rules will not behave as they do in a full LMS.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"path":1454,"name":1455,"tagline":1456,"website":1457,"listing":307,"categories":1458,"license":309,"pricing":1459,"standards":1460,"status":327,"openSource":315},"\u002Ftools\u002Flms-lrs","lms-lrs","A NestJS and Vue reference build of an LMS with a SCORM runtime and an xAPI store","https:\u002F\u002Fgithub.com\u002Ftkosminov\u002Flms-lrs",[76],{"model":311,"source":1457},{"scorm12":1461,"scorm2004":1464},{"supported":315,"provenance":316,"checkedAt":317,"source":1462,"note":1463},"https:\u002F\u002Fgithub.com\u002Ftkosminov\u002Flms-lrs\u002Fblob\u002Fmaster\u002Flms\u002Fsrc\u002Fscorm.api.ts","A window.API object is registered, but it is the 2004 implementation with the LMS-prefixed method names aliased onto it; the data model underneath speaks cmi.completion_status rather than cmi.core.lesson_status.\n",{"supported":315,"editions":1465,"provenance":316,"checkedAt":317,"source":1462,"note":1466},[],"window.API_1484_11 is registered with Initialize\u002FGetValue\u002FSetValue\u002FCommit and a subset of the 2004 error codes; values are persisted to the NestJS service.\n",{"path":1468,"name":1469,"tagline":1470,"website":1471,"listing":307,"categories":1472,"license":1473,"pricing":1474,"standards":1475,"status":377,"openSource":315},"\u002Ftools\u002Flxhive","lxHive","Small PHP and MongoDB Learning Record Store for xAPI 1.0.x","https:\u002F\u002Fgithub.com\u002Fg3i\u002FlxHive",[176],"GPL-2.0",{"model":311},{"xapi":1476,"cmi5":1479},{"supported":315,"provenance":316,"checkedAt":317,"source":1477,"note":1478},"https:\u002F\u002Fgithub.com\u002Fg3i\u002FlxHive#readme","Implements statements, activities, state, activity profile, agents and agent profile, documented endpoint by endpoint against xAPI 1.0.2 in the README. The project states support for the specification up to 1.0.3; there is no xAPI 2.0 support. Its self-reported score against the ADL lrs-conformance-test-suite is 86.02% — a published number, not a pass.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":1480},"An LRS only. cmi5 launch, session handling and the moveOn rules are the responsibility of whatever launches the AU.\n",{"path":1482,"name":1483,"tagline":1484,"website":1485,"listing":307,"categories":1486,"license":1122,"pricing":1487,"standards":1488,"status":327,"openSource":315},"\u002Ftools\u002Fmarkdown2scorm","markdown2scorm","A Perl script that runs Markdown through pandoc and wraps the result as SCORM 1.2","https:\u002F\u002Fgithub.com\u002Fnaturalis\u002Fmarkdown2scorm",[51],{"model":311,"source":1485},{"scorm12":1489},{"supported":315,"provenance":316,"checkedAt":317,"source":1490,"note":1491},"https:\u002F\u002Fgithub.com\u002Fnaturalis\u002Fmarkdown2scorm\u002Fblob\u002Fmaster\u002Fassets\u002Fscaffold\u002Fimsmanifest.xml","The manifest template declares `\u003Cschemaversion>1.2\u003C\u002Fschemaversion>` against the adlcp_rootv1p2 namespace, and the only schema files in the repository are the 1.2 set.\n",{"path":1493,"name":1494,"tagline":1495,"website":1496,"listing":307,"categories":1497,"license":788,"pricing":1498,"standards":1499,"status":345,"openSource":315},"\u002Ftools\u002Fmoodle-mod-scormremote","mod_scormremote","Serve a SCORM package from your Moodle into someone else's LMS via a thin wrapper SCO","https:\u002F\u002Fmoodle.org\u002Fplugins\u002Fmod_scormremote",[151],{"model":311},{"scorm12":1500,"scorm2004":1503,"aicc":1507,"xapi":1508,"cmi5":1509},{"supported":315,"provenance":316,"checkedAt":317,"source":1501,"note":1502},"https:\u002F\u002Fgithub.com\u002Fcatalyst\u002Fmoodle-mod_scormremote\u002Fblob\u002FMOODLE_39_STABLE\u002Famd\u002Fsrc\u002Flayer3.js","The generated wrapper SCO is SCORM 1.2. It sets window.API to a Scorm12API instance from scorm-again and bridges the LMS* calls back across postMessage.\n",{"supported":324,"editions":1504,"provenance":316,"checkedAt":317,"source":1505,"note":1506},[],"https:\u002F\u002Fgithub.com\u002Fcatalyst\u002Fmoodle-mod_scormremote\u002Fblob\u002FMOODLE_39_STABLE\u002Fscorm-again\u002Freadme_moodle.txt","Only the scorm12 build of scorm-again is vendored, and the bridge never defines API_1484_11. The wrapper the remote LMS receives therefore speaks SCORM 1.2, whatever version the underlying course is.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"path":1511,"name":1512,"tagline":1513,"website":1514,"listing":307,"categories":1515,"license":430,"pricing":1516,"standards":1517,"status":345,"openSource":315},"\u002Ftools\u002Fmoodle-logstore-xapi","moodle-logstore_xapi","Turns Moodle log events into xAPI statements and posts them to an LRS","https:\u002F\u002Fmoodle.org\u002Fplugins\u002Fview\u002Flogstore_xapi",[176],{"model":311},{"xapi":1518,"cmi5":1521},{"supported":315,"provenance":316,"checkedAt":317,"source":1519,"note":1520},"https:\u002F\u002Fgithub.com\u002Fdavidpesce\u002Fmoodle-logstore_xapi\u002Fblob\u002Fmaster\u002Fsrc\u002Floader\u002Fmoodle_curl_lrs.php","The loader sends 'X-Experience-API-Version: 1.0.3'. This is a statement emitter only — it writes to an LRS and does not implement the read side of the specification.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":1522},"No cmi5 launch, session or state handling in the tree; statements are emitted from Moodle events, not from a cmi5 AU session.\n",{"path":1524,"name":1525,"tagline":1526,"website":1527,"listing":307,"categories":1528,"license":309,"pricing":1529,"standards":1530,"status":327,"openSource":315},"\u002Ftools\u002Fngx-scorm-wrapper","ngx-scorm-wrapper","An injectable Angular service wrapping the SCORM 1.2 and 2004 runtime APIs","https:\u002F\u002Fgithub.com\u002FDadUndead\u002Fngx-scorm-wrapper",[126],{"model":311,"currency":485,"freeTier":315},{"scorm12":1531,"scorm2004":1534},{"supported":315,"provenance":316,"checkedAt":317,"source":1532,"note":1533},"https:\u002F\u002Fgithub.com\u002FDadUndead\u002Fngx-scorm-wrapper\u002Fblob\u002Fmaster\u002Fsrc\u002Fservices\u002Fscorm-wrapper\u002Fscorm-wrapper.service.ts","The service looks for window.API and dispatches to LMSInitialize, LMSGetValue and the rest. Read in source, August 2026.\n",{"supported":315,"editions":1535,"provenance":316,"checkedAt":317,"source":1532,"note":1536},[],"Same service; a `scormVersions` list of Auto \u002F 1.2 \u002F 2004 selects between window.API and window.API_1484_11 and swaps the method names. No edition is distinguished in code, so none is claimed here.\n",{"path":1538,"name":1539,"tagline":1540,"website":1541,"listing":307,"categories":1542,"license":309,"pricing":1543,"standards":1544,"status":327,"openSource":315},"\u002Ftools\u002Fnode-scorm-packager","node-scorm-packager","Node library that writes an imsmanifest and lays out a SCORM course directory","https:\u002F\u002Fgithub.com\u002FIvacko\u002Fnode-scorm-packager",[126],{"model":311},{"scorm12":1545,"scorm2004":1548,"xapi":1551,"cmi5":1552},{"supported":315,"provenance":316,"checkedAt":317,"source":1546,"note":1547},"https:\u002F\u002Fgithub.com\u002FIvacko\u002Fnode-scorm-packager\u002Fblob\u002Fmaster\u002Flib\u002Findex.js","lib\u002Findex.js accepts version '1.2' and builds the manifest against the bundled adlcp_rootv1p2 \u002F imscp_rootv1p1p2 schemas.\n",{"supported":315,"editions":1549,"provenance":316,"checkedAt":317,"source":1546,"note":1550},[548,340],"Only the strings '2004 3rd Edition' and '2004 4th Edition' are accepted; each maps to its own bundled XSD set. No sequencing rules are emitted — the manifest is a single-SCO organisation.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"path":1554,"name":1555,"tagline":1556,"website":1557,"listing":307,"categories":1558,"license":309,"pricing":1559,"standards":1560,"status":327,"openSource":315},"\u002Ftools\u002Fpipwerks-scorm-api-wrapper","pipwerks SCORM API Wrapper","The JavaScript wrapper most SCORM courses have been built on since 2008","https:\u002F\u002Fgithub.com\u002Fpipwerks\u002Fscorm-api-wrapper",[126],{"model":311},{"scorm12":1561,"scorm2004":1564,"xapi":1567,"cmi5":1568,"aicc":1569},{"supported":315,"provenance":316,"checkedAt":317,"source":1562,"note":1563},"https:\u002F\u002Fgithub.com\u002Fpipwerks\u002Fscorm-api-wrapper\u002Fblob\u002Fmaster\u002Fsrc\u002FJavaScript\u002FSCORM_API_wrapper.js","The wrapper walks the frame chain for `window.API`, and switches its data-model calls between `cmi.core.*` and `cmi.*` on the detected version.\n",{"supported":315,"editions":1565,"provenance":316,"checkedAt":317,"source":1562,"note":1566},[],"Finds `window.API_1484_11` and uses Initialize\u002FTerminate. It does not distinguish 2004 editions — the runtime API signature is the same across them, and sequencing is left entirely to the LMS.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"path":1571,"name":1572,"tagline":1573,"website":1574,"listing":307,"categories":1575,"license":1072,"pricing":1576,"standards":1579,"status":345,"openSource":324},"\u002Ftools\u002Fppt-to-scorm","ppt-to-scorm.com","PowerPoint decks turned into packages that actually record completion","https:\u002F\u002Fppt-to-scorm.com",[51],{"model":1161,"priceFrom":1577,"currency":1075,"period":1578,"freeTier":315,"source":1574},150,"one-time",{"scorm12":1580,"scorm2004":1581,"xapi":1583,"cmi5":1584,"aicc":1585,"lti":1586},{"supported":315,"provenance":457,"source":1574},{"supported":315,"editions":1582,"provenance":457,"source":1574},[1027,548,340],{"supported":324},{"supported":324},{"supported":324},{"supported":324},{"path":1588,"name":1589,"tagline":1590,"website":1591,"listing":307,"categories":1592,"license":1122,"pricing":1593,"standards":1594,"status":327,"openSource":315},"\u002Ftools\u002Fpptx-to-scorm","pptx_to_scorm","Ruby scripts that turn PowerPoint slides into an HTML slideshow in a SCORM folder","https:\u002F\u002Fgithub.com\u002Faprajnaparamita\u002Fpptx_to_scorm",[51],{"model":311,"currency":485,"freeTier":315},{"scorm12":1595,"scorm2004":1598},{"supported":315,"provenance":316,"checkedAt":317,"source":1596,"note":1597},"https:\u002F\u002Fgithub.com\u002Faprajnaparamita\u002Fpptx_to_scorm\u002Fblob\u002Fmaster\u002Ftemplate\u002Findex.html","The output template carries a SCORM 1.2 manifest, but its only SCORM script tag is commented out and the referenced scormify.js is not present in the repository. The result is a well-formed SCORM 1.2 content package that makes no runtime API calls, so it will import but never report completion without work. Read in source, August 2026.\n",{"supported":324,"editions":1599,"provenance":316,"checkedAt":317},[],{"path":1601,"name":1602,"tagline":1603,"website":1604,"listing":307,"categories":1605,"license":309,"pricing":1606,"standards":1607,"status":377,"openSource":315},"\u002Ftools\u002Fscorm-ruby-gem","scorm (Ruby gem)","Reads, checks and builds SCORM packages from Ruby, with a small CLI alongside","https:\u002F\u002Fgithub.com\u002Fmindset\u002Fscorm",[126],{"model":311},{"scorm12":1608,"scorm2004":1611,"aicc":1614,"xapi":1615,"cmi5":1616},{"supported":315,"provenance":316,"checkedAt":317,"source":1609,"note":1610},"https:\u002F\u002Fgithub.com\u002Fmindset\u002Fscorm\u002Fblob\u002Fmaster\u002Flib\u002Fscorm\u002Fmanifest.rb","Content Aggregation Model only. The gem parses and generates imsmanifest.xml; it does not implement the run-time API.\n",{"supported":315,"editions":1612,"provenance":316,"checkedAt":317,"source":1609,"note":1613},[548],"The parser's SUPPORTED_VERSIONS constant lists '2004 3rd Edition', 'CAM 1.3' and '1.2'. A manifest declaring 2004 4th Edition is rejected unless strict parsing is disabled.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"path":1618,"name":1619,"tagline":1620,"website":1621,"listing":307,"categories":1622,"license":309,"pricing":1623,"standards":1624,"status":345,"openSource":315},"\u002Ftools\u002Fscorm-again","scorm-again","A tested JavaScript SCORM 1.2 and 2004 runtime for anything that has to host a course","https:\u002F\u002Fjcputney.github.io\u002Fscorm-again\u002F",[126],{"model":311},{"scorm12":1625,"scorm2004":1627,"aicc":1631,"xapi":1634,"cmi5":1635},{"supported":315,"provenance":316,"checkedAt":317,"source":1626},"https:\u002F\u002Fgithub.com\u002Fjcputney\u002Fscorm-again\u002Ftree\u002Fmaster\u002Fsrc\u002Fcmi\u002Fscorm12",{"supported":315,"editions":1628,"provenance":316,"checkedAt":317,"source":1629,"note":1630},[340],"https:\u002F\u002Fgithub.com\u002Fjcputney\u002Fscorm-again\u002Ftree\u002Fmaster\u002Fsrc\u002Fcmi\u002Fscorm2004","The data model and the sequencing implementation cite SCORM 2004 4th Edition throughout the source. The JavaScript API surface is identical across 2004 editions, so 3rd Edition content generally runs, but 4th Edition is what the code is written against.\n",{"supported":324,"provenance":316,"checkedAt":317,"source":1632,"note":1633},"https:\u002F\u002Fgithub.com\u002Fjcputney\u002Fscorm-again\u002Fblob\u002Fmaster\u002FMIGRATION.md","AICC support was present up to v2.x and removed in v3.0.0 on the grounds that AICC uses HACP rather than a JavaScript API. There is no AICC code in src\u002F.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"path":1637,"name":1638,"tagline":1639,"website":1640,"listing":307,"categories":1641,"license":309,"pricing":1642,"standards":1643,"status":345,"openSource":315},"\u002Ftools\u002Fscorm-godot-plugin","scorm-godot-plugin","Godot editor plugin that wires a web export to the SCORM 1.2 runtime and zips it","https:\u002F\u002Fgithub.com\u002Farahenda\u002Fscorm-godot-plugin",[126],{"model":311,"currency":485,"freeTier":315},{"scorm12":1644,"scorm2004":1647},{"supported":315,"provenance":316,"checkedAt":317,"source":1645,"note":1646},"https:\u002F\u002Fgithub.com\u002Farahenda\u002Fscorm-godot-plugin\u002Fblob\u002Fmain\u002Faddons\u002Fscorm\u002Fscorm.js","scorm.js implements the standard findAPI walk up window.parent and window.opener, then calls LMSInitialize and reads and writes cmi.core.lesson_status, cmi.core.score.raw, cmi.core.lesson_location and cmi.suspend_data. The bundled manifest declares schemaversion 1.2. Read in source, August 2026.\n",{"supported":324,"editions":1648,"provenance":316,"checkedAt":317,"note":1649},[],"No API_1484_11 lookup and no 2004 data-model elements in the addon.",{"path":1651,"name":1652,"tagline":1653,"website":1654,"listing":307,"categories":1655,"license":309,"pricing":1656,"standards":1658,"status":327,"openSource":315},"\u002Ftools\u002Fscorm-h5p-wrapper","scorm-h5p-wrapper","Web app that packs an H5P file into a self-contained SCORM 1.2 package","https:\u002F\u002Fgithub.com\u002Fsr258\u002Fscorm-h5p-wrapper",[51],{"model":311,"source":1657},"https:\u002F\u002Fgithub.com\u002Fsr258\u002Fscorm-h5p-wrapper\u002Fblob\u002Fmaster\u002FLICENSE",{"scorm12":1659},{"supported":315,"provenance":316,"checkedAt":317,"source":1660,"note":1661},"https:\u002F\u002Fgithub.com\u002Fsr258\u002Fscorm-h5p-wrapper\u002Fblob\u002Fmaster\u002Fsrc\u002Fcreator.js","`creator.js` calls simple-scorm-packager with `version: \"1.2\"` hard-coded. The bundled adaptor branches on SCORM 2004 elements as well, but no 2004 package is ever produced without editing the source.\n",{"path":1663,"name":1664,"tagline":1665,"website":1666,"listing":307,"categories":1667,"license":309,"pricing":1668,"standards":1669,"status":345,"openSource":315},"\u002Ftools\u002Fscorm-kit","scorm-kit","A nine-command CLI that lints, diffs and audits SCORM packages before upload","https:\u002F\u002Fgithub.com\u002Fparthdhanani\u002Fscorm-kit",[126],{"model":311},{"scorm12":1670,"scorm2004":1673,"cmi5":1676,"xapi":1679},{"supported":315,"provenance":316,"checkedAt":317,"source":1671,"note":1672},"https:\u002F\u002Fgithub.com\u002Fparthdhanani\u002Fscorm-kit\u002Fblob\u002Fmain\u002Fsrc\u002Flint\u002Flint.js","The linter requires schema \"ADL SCORM\" and schemaversion 1.2, and the `mock` runtime exposes `window.API` only. SCORM 1.2 is the whole target.\n",{"supported":324,"editions":1674,"provenance":316,"checkedAt":317,"note":1675},[],"A 2004 package is reported as an error by `lint`, and the mock runtime does not expose `API_1484_11`.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":1677,"note":1678},"https:\u002F\u002Fgithub.com\u002Fparthdhanani\u002Fscorm-kit\u002Fblob\u002Fmain\u002Fsrc\u002Fcmi5\u002Fcmi5.js","`cmi5 validate` and `cmi5 lint` check cmi5.xml structure — courseStructure root, IRI-shaped ids, launchMethod and moveOn enumerations, masteryScore range, AU launch URLs resolving inside the package. `cmi5 convert` wraps a SCORM 1.2 package as a cmi5 AU. This is packaging-level support; nothing here runs a cmi5 session.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":1680},"No xAPI client. The `rum` command posts its own JSON beacons to an endpoint you supply, not xAPI statements to an LRS.\n",{"path":1682,"name":1683,"tagline":1684,"website":1685,"listing":307,"categories":1686,"license":309,"pricing":1687,"standards":1688,"status":327,"openSource":315},"\u002Ftools\u002Fscorm-local","scorm-local","A SCORM 1.2 API shim that keeps CMI data in localStorage while you build content","https:\u002F\u002Fgithub.com\u002Fblvz\u002Fscorm-local",[101],{"model":311},{"scorm12":1689,"scorm2004":1692,"xapi":1693,"cmi5":1694},{"supported":315,"provenance":316,"checkedAt":317,"source":1690,"note":1691},"https:\u002F\u002Fgithub.com\u002Fblvz\u002Fscorm-local#readme","Returns an API object carrying all eight SCORM 1.2 LMS methods. The README states plainly that it is \"not compliant yet\" — values are stored and returned without data-model validation, and error codes should not be relied upon.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"path":1696,"name":1697,"tagline":1698,"website":1699,"listing":307,"categories":1700,"license":309,"pricing":1701,"standards":1702,"status":345,"openSource":315},"\u002Ftools\u002Fscorm-mcp-server","scorm-mcp-server","An MCP tool that wraps a finished HTML module into an offline SCORM package","https:\u002F\u002Fgithub.com\u002Fgiacomomaria81\u002Fscorm-mcp-server",[126],{"model":311,"source":1699},{"scorm12":1703,"scorm2004":1706,"xapi":1709,"cmi5":1710},{"supported":315,"provenance":316,"checkedAt":317,"source":1704,"note":1705},"https:\u002F\u002Fgithub.com\u002Fgiacomomaria81\u002Fscorm-mcp-server\u002Fblob\u002Fmain\u002Fsrc\u002Fconverter.ts","converter.ts emits a schemaversion 1.2 manifest with lower-case adlcp:scormtype and adlcp:masteryscore, validated against a bundled copy of the 1.2 XSDs.\n",{"supported":315,"editions":1707,"provenance":316,"checkedAt":317,"source":1704,"note":1708},[340],"The default output is a '2004 4th Edition' manifest. No 2nd or 3rd Edition option exists.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"path":1712,"name":1713,"tagline":1714,"website":1715,"listing":307,"categories":1716,"license":309,"pricing":1717,"standards":1719,"status":345,"openSource":315},"\u002Ftools\u002Fscorm-player-sheikhsulaiman","scorm-player","Browser-only SCORM 1.2 player and run-time inspector, with no server and no upload","https:\u002F\u002Fsheikhsulaiman.github.io\u002Fscorm-player\u002F",[76],{"model":311,"source":1718},"https:\u002F\u002Fgithub.com\u002Fsheikhsulaiman\u002Fscorm-player",{"scorm12":1720,"scorm2004":1723},{"supported":315,"provenance":316,"checkedAt":317,"source":1721,"note":1722},"https:\u002F\u002Fgithub.com\u002Fsheikhsulaiman\u002Fscorm-player\u002Fblob\u002Fmain\u002Fsrc\u002Fcmi.js","All eight API functions, the eleven error codes and the CMI type and vocabulary rules are implemented in src\u002Fcmi.js and src\u002Fscorm-api.js. Read in source; the project's own test suites were not run for this listing.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":1724},"Explicitly not implemented. Content probing for API_1484_11 is told so rather than being allowed to fail silently.\n",{"path":1726,"name":1727,"tagline":1728,"website":1729,"listing":307,"categories":1730,"license":309,"pricing":1731,"standards":1732,"status":377,"openSource":315},"\u002Ftools\u002Fscorm-converter-2004","scormConverter","Python script that relabels SCORM 2004 3rd Edition packages as 4th Edition","https:\u002F\u002Fgithub.com\u002FhoedlChr\u002FscormConverter",[51],{"model":311,"currency":541,"freeTier":315},{"scorm2004":1733},{"supported":315,"editions":1734,"provenance":316,"checkedAt":317,"source":1735,"note":1736},[548,340],"https:\u002F\u002Fgithub.com\u002FhoedlChr\u002FscormConverter\u002Fblob\u002Fmain\u002FParseXML.py","ParseXML.py rewrites the manifest's schemaversion element to \"2004 4th Edition\" and removes imsss:sequencing and metadata elements from the organization and its items. It does not otherwise transform the package. Read in source, August 2026.\n",{"path":1738,"name":1739,"tagline":1740,"website":1741,"listing":307,"categories":1742,"license":1743,"pricing":1744,"standards":1745,"status":327,"openSource":315},"\u002Ftools\u002Fscorm-debug","scorm_debug","Drop SCORM zips in a folder and launch each one against a 1.2 or 2004 harness locally","https:\u002F\u002Fgithub.com\u002Ffrumbert\u002Fscorm_debug",[101],"NOASSERTION",{"model":311},{"scorm12":1746,"scorm2004":1749,"xapi":1751,"cmi5":1752},{"supported":315,"provenance":316,"checkedAt":317,"source":1747,"note":1748},"https:\u002F\u002Fgithub.com\u002Ffrumbert\u002Fscorm_debug#readme","The 1.2 harness is a modified copy of the Moodle 2.6 SCORM wrapper, with added buttons to simulate unload and reload.\n",{"supported":315,"provenance":316,"checkedAt":317,"source":1747,"note":1750},"The 2004 harness is Claude Ostyn's 2007 all-in-one test wrapper, bundled as-is. No edition is declared, and there is no sequencing engine.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"path":1754,"name":1755,"tagline":1756,"website":1757,"listing":307,"categories":1758,"license":1122,"pricing":1759,"standards":1760,"status":1153,"openSource":315},"\u002Ftools\u002Fsimple-scorm-api","simple-scorm-api","One HTML file that impersonates an LMS so a SCORM 1.2 SCO can be run locally","https:\u002F\u002Fgithub.com\u002Fskfriese\u002Fsimple-scorm-api",[101],{"model":311,"source":1757},{"scorm12":1761,"scorm2004":1764},{"supported":315,"provenance":316,"checkedAt":317,"source":1762,"note":1763},"https:\u002F\u002Fgithub.com\u002Fskfriese\u002Fsimple-scorm-api\u002Fblob\u002Fmaster\u002Fsimple-api.htm","The eight 1.2 functions are implemented over an in-memory cmi.core data model seeded with a fake learner, with session_time accumulated into total_time on LMSFinish. There is no persistence between page loads.\n",{"supported":324,"provenance":316,"checkedAt":317},{"path":1766,"name":1767,"tagline":1768,"website":1769,"listing":307,"categories":1770,"license":309,"pricing":1771,"standards":1772,"status":1153,"openSource":315},"\u002Ftools\u002Fsimple-scorm-packager","simple-scorm-packager","Node package that turns a build directory into a conformant SCORM zip","https:\u002F\u002Fgithub.com\u002Flmihaidaniel\u002Fsimple-scorm-packager",[126],{"model":311,"source":1769},{"scorm12":1773,"scorm2004":1776},{"supported":315,"provenance":316,"checkedAt":317,"source":1774,"note":1775},"https:\u002F\u002Fgithub.com\u002Flmihaidaniel\u002Fsimple-scorm-packager\u002Ftree\u002Fmaster\u002Flib\u002Fschemas\u002FdefinitionFiles","The repository ships the SCORM 1.2 schema set (adlcp_rootv1p2, imscp_rootv1p1p2, imsmd_rootv1p2p1) and writes a matching manifest.\n",{"supported":315,"editions":1777,"provenance":316,"checkedAt":317,"source":1774,"note":1778},[548,340],"Separate schema directories for 2004 3rd and 4th Edition, including the imsss sequencing schemas. 2004 2nd Edition is not offered.\n",{"path":1780,"name":1781,"tagline":1782,"website":1783,"listing":307,"categories":1784,"license":309,"pricing":1785,"standards":1786,"status":327,"openSource":315},"\u002Ftools\u002Fsimplify-scorm","simplify-scorm","SCORM 1.2 and 2004 runtime APIs in plain JavaScript, for the LMS side of the fence","https:\u002F\u002Fgithub.com\u002Fgabrieldoty\u002Fsimplify-scorm",[126],{"model":311},{"scorm12":1787,"scorm2004":1790,"xapi":1794,"cmi5":1795},{"supported":315,"provenance":316,"checkedAt":317,"source":1788,"note":1789},"https:\u002F\u002Fgithub.com\u002Fgabrieldoty\u002Fsimplify-scorm\u002Fblob\u002Fmaster\u002Fsrc\u002FscormAPI.js","src\u002FscormAPI.js creates window.API with the eight LMS* methods and a CMI object matching the SCORM 1.2 data model.\n",{"supported":315,"editions":1791,"provenance":316,"checkedAt":317,"source":1792,"note":1793},[340],"https:\u002F\u002Fgithub.com\u002Fgabrieldoty\u002Fsimplify-scorm\u002Fblob\u002Fmaster\u002Fsrc\u002FscormAPI2004.compliance.md","src\u002FscormAPI2004.js creates window.API_1484_11 against the 4th Edition data model. The bundled compliance.md lists a TODO block of requirements that are not implemented, including SCO launch and several error cases. There is no sequencing or navigation engine.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"provenance":316,"checkedAt":317},{"path":1797,"name":1798,"tagline":1799,"website":1800,"listing":307,"categories":1801,"license":309,"pricing":1802,"standards":1804,"status":377,"openSource":315},"\u002Ftools\u002Fusescorm","usescorm","React hook that wraps the SCORM run-time API and keeps state in suspend data","https:\u002F\u002Fgithub.com\u002Fbloc-digital\u002Fusescorm",[126],{"model":311,"source":1803},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@blocdigital\u002Fusescorm",{"scorm12":1805,"scorm2004":1808},{"supported":315,"provenance":316,"checkedAt":317,"source":1806,"note":1807},"https:\u002F\u002Fgithub.com\u002Fbloc-digital\u002Fusescorm\u002Fblob\u002Fmain\u002Fsrc\u002FScormInstance.ts","`CMIElement1_2` and `IScorm1_2` are typed out element by element, and the instance branches on a '1.2' version case.\n",{"supported":315,"editions":1809,"provenance":316,"checkedAt":317,"source":1806,"note":1810},[],"`API_1484_11` is looked up and `CMIElement2004` is typed separately. An 'auto' mode intersects both type sets when the version is unknown.\n",{"path":1812,"name":1813,"tagline":1814,"website":1815,"listing":307,"categories":1816,"license":384,"pricing":1817,"standards":1819,"status":345,"openSource":315},"\u002Ftools\u002Fxapi-java","xAPI Java","Immutable xAPI model and Spring-based LRS client for Java, actively released","https:\u002F\u002Fgithub.com\u002FBerryCloud\u002Fxapi-java",[176],{"model":311,"source":1818},"https:\u002F\u002Fgithub.com\u002FBerryCloud\u002Fxapi-java\u002Fblob\u002Fmain\u002FLICENSE",{"xapi":1820},{"supported":315,"provenance":316,"checkedAt":317,"source":1821,"note":1822},"https:\u002F\u002Fgithub.com\u002FBerryCloud\u002Fxapi-java\u002Fblob\u002Fmain\u002Fxapi-client\u002Fsrc\u002Fmain\u002Fjava\u002Fdev\u002Flearning\u002Fxapi\u002Fclient\u002FXapiClient.java","`XapiClient` sets `X-Experience-API-Version` to 1.0.3 as a default header. The model carries the specification's validation rules, which can be relaxed individually for non-conformant activity providers.\n",{"path":1824,"name":1825,"tagline":1826,"website":1827,"listing":307,"categories":1828,"license":309,"pricing":1829,"standards":1831,"status":377,"openSource":315},"\u002Ftools\u002Fadl-lrs-conformance-test-suite","xAPI LRS Conformance Test Suite","ADL's Node.js suite that runs the MUST requirements of the xAPI spec against a live LRS","https:\u002F\u002Fgithub.com\u002Fadlnet\u002Flrs-conformance-test-suite",[101],{"model":311,"source":1830},"https:\u002F\u002Fgithub.com\u002Fadlnet\u002Flrs-conformance-test-suite\u002Fblob\u002Fmaster\u002FLICENSE",{"xapi":1832,"cmi5":1835,"scorm12":1837,"scorm2004":1838},{"supported":315,"provenance":316,"checkedAt":317,"source":1833,"note":1834},"https:\u002F\u002Fgithub.com\u002Fadlnet\u002Flrs-conformance-test-suite#readme","Tests the MUST requirements of the specification against a running LRS endpoint. A `--xapiVersion` flag selects the version to test against; the README documents 1.0.x behaviour and a 2.0 battery covering context agents and groups, RFC 3339 timestamps, `Last-Modified` headers and the removal of Alternate Request Syntax. Authentication is Basic or OAuth 1.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":1836},"It tests the LRS, not a cmi5 launch. ADL's CATAPULT project covers cmi5.\n",{"supported":324,"provenance":316,"checkedAt":317},{"supported":324,"editions":1839,"provenance":316,"checkedAt":317},[],{"path":1841,"name":1842,"tagline":1843,"website":1844,"listing":307,"categories":1845,"license":309,"pricing":1846,"standards":1847,"status":345,"openSource":315},"\u002Ftools\u002Fxapi-js","xAPI.js","Strongly typed TypeScript client for the xAPI 1.0 Statement and State APIs","https:\u002F\u002Fwww.xapijs.dev\u002Fxapi-wrapper-library",[176],{"model":311,"currency":485,"freeTier":315},{"xapi":1848,"cmi5":1851},{"supported":315,"provenance":316,"checkedAt":317,"source":1849,"note":1850},"https:\u002F\u002Fgithub.com\u002Fxapijs\u002Fxapi\u002Fblob\u002Fdevelop\u002Fsrc\u002Fconstants\u002FVersions.ts","src\u002Fconstants\u002FVersions.ts declares the supported values as \"1.0.0\" | \"1.0.1\" | \"1.0.2\" | \"1.0.3\", and the client sets X-Experience-API-Version accordingly. xAPI 2.0 is not among them. Read in source, August 2026.\n",{"supported":324,"provenance":316,"checkedAt":317,"note":1852},"Not in this package. The maintainers publish cmi5 support separately as @xapi\u002Fcmi5 in the github.com\u002Fxapijs\u002Fcmi5 repository, which is not covered by this listing.\n",1789388512392]