What is inside a SCORM zip
SCORM.com, run by Rustici Software, explains that a package delivered as a zip is called a package interchange file, the most common delivery format. The manifest, imsmanifest.xml, must sit at the root of the content, and every file needed to deliver the course should be inside the package and listed in the manifest. A conformant package also carries XML schema definition files (.xsd and .dtd) that describe the manifest grammar.
Inside, resources are either SCOs, units that communicate with the LMS, or assets, which are static content. A single package can therefore hold many HTML, script, image and media files. That is why the size of the zip and the number of files it expands into are separate questions for a host.
SCORM.com also notes that the industry norm is to avoid server-side code and databases inside packages, so a package is static files served from your uploads folder, with progress and scores sent back to the LMS plugin.
WordPress SCORM plugins as of 30 October 2026
WordPress core does not play SCORM. A search of the WordPress.org directory for "scorm" returns 26 results, including SCORM players for LearnDash and GrassBlade-linked add-ons for LearnPress, Tutor LMS, LifterLMS, MasterStudy, WP Courseware and Sensei. The table covers the options with the clearest documentation. The old SCORM Cloud plugin on WordPress.org was closed on 10 February 2021 for a security issue, so ignore tutorials that still recommend it.
| Plugin | Works with | SCORM versions | Requirements and status | Storage notes |
|---|---|---|---|---|
| CourseRelay | LearnDash 3.0+ | 1.2 and 2004; no adaptive sequencing, multi-SCO packages launch only the first SCO | Version 1.0.0, modified 28 September 2026; WordPress 5.8+, PHP 7.4+ with ZipArchive; 20+ installs | Upload via CourseRelay > Add New; runtime and completion data in the WordPress database; PHP execution blocked inside packages; no external account |
| CLUEVO LMS | Its own LMS | SCORM 2004 4th edition and 1.2 | Version 1.13.3, last updated 12 January 2025; WordPress 4.6+, PHP 5.6+; warns it has not been tested with the latest 3 major WordPress releases | Modules in wp-content/uploads/cluevo/modules; zip upload, URL or FTP import; uploader blocks files over the server limit |
| GrassBlade add-ons | LearnPress, Tutor LMS, LifterLMS, MasterStudy, WP Courseware, Sensei | SCORM 1.2 and 2004 plus xAPI; some listings also name cmi5 | Listings describe integration with the separate GrassBlade xAPI Companion plugin; 20+ to 200+ installs per add-on | Not documented on the listings we read |
Upload and execution limits
The PHP manual lists defaults of upload_max_filesize 2M, post_max_size 8M, max_file_uploads 20 and memory_limit 128M. post_max_size must be larger than upload_max_filesize, and if a request exceeds post_max_size PHP empties $_FILES, so the plugin sees no file at all. Hosts override these defaults, which is why you need your plan's real values.
Kinsta's PHP documentation lists post_max_size of 128M on Single 35k, 65k and 125k and 256M on Single 315k and WP 5, with 500M possible on dedicated servers, and max_execution_time of 300 seconds on every plan in its table. Extracting a large package takes time as well as memory: CLUEVO's FAQ tells users whose module fails to upload to check and raise PHP's maximum script execution time. SiteGround's knowledge base says that on shared hosting the execution limit cannot be raised for you; the options are to optimise the script or move to Cloud, where Support can raise it. If your package is larger than the web upload limit, a plugin with an FTP import path, such as CLUEVO, avoids the PHP upload limit entirely.
Storage and file counts
Each package expands into its own folder, and some plugins also keep the original archive (CLUEVO mentions a modules archive directory), so budget up to twice the zip size. Disk space is listed as 10 GB on Kinsta Single 35k, 65k, 125k and 315k, and 10 GB, 50 GB and 100 GB on SiteGround StartUp, GrowBig and GoGeek. SiteGround also caps inodes, meaning files, folders and email messages, at 200,000, 400,000 and 600,000 per account.
Count before you upload: zipinfo -1 course.zip | wc -l prints the number of entries in the archive. Worked example with hypothetical packages: 12 compliance modules of 150 MB and 2,500 files each add 1.8 GB and 30,000 files if extracted only, or about 3.6 GB if the archives are kept too. That fits GrowBig comfortably, but would take over a third of a 10 GB plan and 15% of StartUp's inode cap before WordPress, plugins, backups or email are counted.
| Plan | Disk | File-related cap | Upload-related limit stated |
|---|---|---|---|
| SiteGround StartUp | 10 GB | 200,000 inodes per account | Not published on pages read; ask Support |
| SiteGround GrowBig | 50 GB | 400,000 inodes per account | Not published on pages read; ask Support |
| Kinsta Single 35k / 65k | 10 GB | No inode cap stated on pages read | post_max_size 128M; max_execution_time 300 |
| Kinsta Single 315k | 10 GB | No inode cap stated on pages read | post_max_size 256M; max_execution_time 300 |
Caching and security
Extracted package files are static and can be served by a CDN like any other upload, but the tracking calls that record progress come from logged-in learners and must reach PHP uncached. Keep the lesson pages that launch packages out of page cache for logged-in users; SiteGround Speed Optimizer and Kinsta Edge Caching both bypass cache for logged-in users by default.
Because packages are uploaded zips, treat them as untrusted input. CourseRelay validates packages before extraction and blocks PHP execution inside them; with other plugins, ask whether the extraction folder can execute scripts. Only accept packages from authors you trust, and test new ones on staging.
Pre-upload checklist
- Unzip locally and confirm imsmanifest.xml is at the root, not inside a subfolder.
- Note the SCORM version in the manifest (1.2 or 2004) and whether it has several SCOs; some plugins launch only the first.
- Compare the zip size with upload_max_filesize and post_max_size on the plan, and memory_limit with post_max_size.
- Confirm the PHP zip extension is enabled.
- Count entries with zipinfo -1 and compare with your remaining inode headroom.
- Upload to staging first, complete the course as a test learner and confirm completion and score reach the LMS.
- Confirm backups include the package folder; restoring the database alone leaves broken lessons.
Questions before you decide
Can WordPress play SCORM without a plugin?
No. You need a SCORM player plugin that fits your LMS, such as CourseRelay for LearnDash, or an LMS with built-in SCORM support such as CLUEVO.
Why does my SCORM upload show no error but nothing happens?
If the upload is larger than post_max_size, PHP leaves the file data empty, so the plugin receives nothing. Compare the zip size with your plan's PHP limits.
What does a SCORM zip need at its root?
The imsmanifest.xml file. SCORM.com says the manifest must always exist at the root of the content, and every file the course uses should be listed in it.
Is the SCORM Cloud plugin on WordPress.org still usable?
No. Its WordPress.org listing says it was closed on 10 February 2021 for a security issue and is not available for download.
Sources & verification
Product details and prices can change. Check the linked provider before buying.
- SCORM.com: Content packaging Accessed 30 Oct 2026
- WordPress.org: CourseRelay SCORM support for LearnDash Accessed 30 Oct 2026
- WordPress.org: CLUEVO LMS Accessed 30 Oct 2026
- WordPress.org: plugin search results for SCORM Accessed 30 Oct 2026
- WordPress.org: SCORM Cloud plugin listing (closed) Accessed 30 Oct 2026
- PHP manual: core php.ini directives Accessed 30 Oct 2026
- Kinsta Docs: PHP settings by plan Accessed 30 Oct 2026
- Kinsta: Pricing Accessed 30 Oct 2026
- SiteGround: Fair use of hosting resources Accessed 30 Oct 2026
- SiteGround: Shared hosting features and plan comparison Accessed 30 Oct 2026
- SiteGround: Maximum execution time error Accessed 30 Oct 2026
- SiteGround: Speed Optimizer caching settings Accessed 30 Oct 2026
- Kinsta Docs: Edge Caching Accessed 30 Oct 2026
Sources link directly to providers. Product buttons may use separately labeled affiliate links. Read our disclosure.