---
title: "Scorm Validator"
description: "This is a couple of hundred lines of Python behind a Streamlit upload form. You give it a package zip and it tells you whether the archive is intact, whether imsmanifest.xml is at the root and parses, whether <organizations> and <resources> are present and populated, whether every file the manifest references actually exists in the zip, whether resources carry adlcp:scormType, and whether SCOs have a launch href. It also flags __MACOSX folders, which is a small thing that has broken a genuinely large number of uploads."
canonical_url: "https://scorm-tools.com/tools/scorm-validator"
last_updated: "2026-10-31T10:22:01.750Z"
---

This is a couple of hundred lines of Python behind a Streamlit upload form. You give it a package zip and it tells you whether the archive is intact, whether `imsmanifest.xml` is at the root and parses, whether `<organizations>` and `<resources>` are present and populated, whether every file the manifest references actually exists in the zip, whether resources carry `adlcp:scormType`, and whether SCOs have a launch `href`. It also flags `__MACOSX` folders, which is a small thing that has broken a genuinely large number of uploads.

Those are the right checks. Missing referenced files and manifests packaged one directory too deep account for a large share of "the LMS rejected my course" tickets, and catching them before upload is worth the two minutes it takes to run.

Its ceiling is equally clear. It is a static structural check, not a conformance suite and not a runtime. It cannot detect that a course never calls `Initialize` or writes completion to the wrong element, and it does not distinguish SCORM 2004 editions.

The maintenance picture deserves plain statement: four commits, all on 9 June 2026, and nothing since. It is a competent weekend project with a readable test suite — useful as a reference implementation or something to fork and extend, not as a tool you would build a QA process around.
