This is a research guide based on cited documentation. It is not a report of firsthand testing. Our editorial method

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.

PluginWorks withSCORM versionsRequirements and statusStorage notes
CourseRelayLearnDash 3.0+1.2 and 2004; no adaptive sequencing, multi-SCO packages launch only the first SCOVersion 1.0.0, modified 28 September 2026; WordPress 5.8+, PHP 7.4+ with ZipArchive; 20+ installsUpload via CourseRelay > Add New; runtime and completion data in the WordPress database; PHP execution blocked inside packages; no external account
CLUEVO LMSIts own LMSSCORM 2004 4th edition and 1.2Version 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 releasesModules in wp-content/uploads/cluevo/modules; zip upload, URL or FTP import; uploader blocks files over the server limit
GrassBlade add-onsLearnPress, Tutor LMS, LifterLMS, MasterStudy, WP Courseware, SenseiSCORM 1.2 and 2004 plus xAPI; some listings also name cmi5Listings describe integration with the separate GrassBlade xAPI Companion plugin; 20+ to 200+ installs per add-onNot 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.

PlanDiskFile-related capUpload-related limit stated
SiteGround StartUp10 GB200,000 inodes per accountNot published on pages read; ask Support
SiteGround GrowBig50 GB400,000 inodes per accountNot published on pages read; ask Support
Kinsta Single 35k / 65k10 GBNo inode cap stated on pages readpost_max_size 128M; max_execution_time 300
Kinsta Single 315k10 GBNo inode cap stated on pages readpost_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.

  1. SCORM.com: Content packaging Accessed 30 Oct 2026
  2. WordPress.org: CourseRelay SCORM support for LearnDash Accessed 30 Oct 2026
  3. WordPress.org: CLUEVO LMS Accessed 30 Oct 2026
  4. WordPress.org: plugin search results for SCORM Accessed 30 Oct 2026
  5. WordPress.org: SCORM Cloud plugin listing (closed) Accessed 30 Oct 2026
  6. PHP manual: core php.ini directives Accessed 30 Oct 2026
  7. Kinsta Docs: PHP settings by plan Accessed 30 Oct 2026
  8. Kinsta: Pricing Accessed 30 Oct 2026
  9. SiteGround: Fair use of hosting resources Accessed 30 Oct 2026
  10. SiteGround: Shared hosting features and plan comparison Accessed 30 Oct 2026
  11. SiteGround: Maximum execution time error Accessed 30 Oct 2026
  12. SiteGround: Speed Optimizer caching settings Accessed 30 Oct 2026
  13. Kinsta Docs: Edge Caching Accessed 30 Oct 2026

Sources link directly to providers. Product buttons may use separately labeled affiliate links. Read our disclosure.

Your decision at a glance

Compare the options

Full comparison

Documentation-based guidance. No tested ranking or performance score.

Managed WordPress

Kinsta

Consider it for
Use Kinsta Single 20GB, listed at $35/month, when a WordPress course site needs published PHP-capacity controls and a staging rehearsal.
Starting cost
Single 20GB listed $35/month on 2026-09-15; first-month promotions and annual billing change the cash invoice
Before you choose
Do not treat visitor allowances as class concurrency. No plan here is verified for a specific learner count.

Checked 15 Sep 2026 · Pricing source

View Kinsta plans

Direct provider link; no affiliate tracking added by this publication. Link disclosure

Shared hosting

SiteGround

Consider it for
Use SiteGround StartUp, advertised at $2.99/month for a prepaid first 12 months then $17.99/month, when one WordPress site needs shared hosting rather than a server you administer.
Starting cost
StartUp first-term $2.99/mo prepaid 12 months, renews $17.99/mo on 2026-09-15 (world page: ex. VAT); 1 website, 10GB, ~10,000 visits marketing estimate
Before you choose
Visit marketing estimates are not class concurrency. Renewal is $17.99/mo after the prepaid term. No course-capacity test is claimed.

Checked 15 Sep 2026 · Pricing source

View SiteGround plans

Affiliate link: we may earn a commission on an eligible purchase. Link disclosure