What is H5P?
H5P (short for HTML5 Package) is an open standard for creating and sharing interactive learning content on the web. It is widely used in learning management systems (LMS) and educational platforms to build engaging activities such as quizzes, interactive videos, drag-and-drop exercises, and presentations.
H5P content is reusable, browser-based, and designed to work across devices without requiring additional plugins.
Typical H5P content types include:
Interactive Video
Course Presentation
Multiple Choice / True–False quizzes
Drag and Drop / Fill in the Blanks
Interactive books
Timelines, accordions, and other interactive widgets
Each activity is packaged as an .h5p file, which contains the content configuration and references to the underlying libraries that render the activity.
How H5P is developed
H5P is developed as an open-source project and maintained primarily by Joubel / H5P Group with contributions from the community.
The ecosystem consists of several parts:
1. H5P Core Framework
The core provides the runtime environment responsible for:
loading H5P packages
managing dependencies
rendering content in the browser
handling upgrades between library versions
The core is implemented mainly in JavaScript and PHP or in Typescript via
https://github.com/Lumieducation/H5P-Nodejs-library
2. Content Type Libraries
Each H5P activity type (for example Interactive Video or Multiple Choice) is implemented as a separate library.
A library contains:
JavaScript logic
CSS styling
a semantics.json file defining the editor schema
localization files
metadata (library.json)
This modular architecture allows new content types to be developed independently.
3. Authoring Tools
H5P content is usually created through editors integrated into platforms such as:
Moodle
WordPress
Drupal
Lumi.education using a custom implementation via
The editor reads the semantics.json definition of a content type and automatically generates the editing interface.
4. Packaging Format
An .h5p file is essentially a ZIP archive containing:
h5p.json (metadata)
content/content.json (activity configuration)
content/images/* (media files)
libraries/* (H5P Library files)
When uploaded, the host platform extracts the package and registers the required libraries.