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:

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.