Skip to content

Frappe Learning

Open-source LMS from the Frappe stack, with a deliberately minimal SCORM chapter type

Active Last commit Checked · 24 Aug 2026

The facts

Licence
AGPL-3.0
Deployment
Self-hosted
Platforms
Web · Hosted service

Standards support

Every line says where the claim came from. We do not test conformance ourselves and we issue no badge of our own.

Standards support for Frappe Learning, with the source of each claim and the date it was last confirmed.
Standard Supported Provenance Checked Note
SCORM 1.2 Yes editor-checked · 24 Aug 2026— source, opens in a new tabA 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".
SCORM 2004 Yes editor-checked · 24 Aug 2026— source, opens in a new tabwindow.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.
xAPI No editor-checked · 24 Aug 2026
cmi5 No editor-checked · 24 Aug 2026
AICC Not stated
LTI Not stated
Claimed
— the vendor states it. We have not confirmed it.
Checked
— an editor confirmed it on the date shown.
Verified
— an official registry lists it, and we link to the entry.

Editor's notes

Frappe Learning is a full LMS — courses, batches, cohorts, assignments, quizzes, certificates, live classes — built on the Frappe framework and sharing an identity and database with ERPNext. It is the natural choice for an organisation already running that stack, and it is genuinely well maintained: thousands of stars, a large fork count, and commits most days.

Its SCORM support should be understood as a chapter type, not a runtime. Reading the player, both window.API and window.API_1484_11 are declared so content of either generation will find something and initialise. Beyond that the implementation is a stub: every function returns "true", GetLastError always returns "0", and of the whole data model only completion status and cmi.suspend_data reach the server. Scores, interactions, objectives and timing are printed to the browser console and dropped.

For a lot of compliance work that is enough — the question being asked is whether someone finished the module, and bookmarking survives a reload. It is not enough where a score, an attempt history, question-level reporting or a regulator's evidence trail is required, and it is not the platform to test a package against if you want to know whether that package is correct.

Deciding today: adopt it for its own authoring and cohort features, treat imported SCORM as a secondary path, and test your specific package before committing.

Listed on scorm-tools.com

Maintainers and vendors are welcome to show the listing badge in a README or on a product page. It is free, it does not require a claim, and there is nothing to buy.

Get the embed code