H5P Guides

H5P Technical Overview

In this document, you'll get an overview of the various components of H5P and their responsibilities.

H5P consists of the following main components:

  1. The H5P Libraries
  2. The H5P Core
  3. The H5P Editor
  4. The H5P platform integrations
  5. The H5P Hub (coming soon)
  6. The .h5p file format

The H5P Libraries

These are the building blocks of H5P. There are currently three main types:

  1. Content type libraries are responsible for the display and behavior of H5P content for end users
  2. Editor libraries are responsible for providing custom widgets used by authors when editing H5P content
  3. API libraries are helper libraries

A library normally includes JavaScript, CSS, MultiMedia and some metadata in a file called library.json. A library shall normally not include HTML files or server-side files. Php files, for instance, are not allowed in an H5P library.

Learn more:

The H5P Core

The H5P Core is responsible for:

  • Storing and managing H5P libraries including update features
  • Validating content including purifying content (security)
  • Saving content
  • Cloning content
  • Updating content as part of updating H5P libraries
  • Loading libraries and content in order to allow the libraries to display the content
  • Providing a few API functions for the libraries
  • Making xAPI statements from the libraries available for other software
  • Validating and storing H5P content that is uploaded as H5P files

The H5P Core is divided into a server side part and a JavaScript part. The server side part will exist in many languages like PHP, Python, Java etc. The JavaScript part will be the same for all these versions of the H5P Core and we try to keep as much as possible of the functionality in JavaScript so that the part of Core that needs to be ported is as small as possible.

Learn more:

The H5P Editor

Responsible for providing editing features for H5P. It reads the data structure and semantics defined in the libraries and generates a form based on this information. It has default widgets for all data types, but libraries may replace the editor's widgets with custom widgets instead, for instance, to provide a WYSIWYG editing experience.

The H5P Editor is divided into a server side part and a JavaScript part. The server side part will exist in many languages like PHP, Python, Java etc. The JavaScript part will be the same for all these versions of the H5P Editor and we try to keep as much as possible of the functionality in JavaScript so that the part of the Editor that needs to be ported is as small as possible. 

Learn more:

The H5P Platform Integrations

The H5P platform integrations are responsible for providing the H5P Core and H5P Editor with API functions, mainly for data storage, and to use the H5P Core and H5P Editor to provide the features of H5P in a publising platform like WordPress, Drupal or Moodle.

Learn more:

The H5P Hub

A web service responsible for providing a resource bank for H5P enabled sites. It allows sites to fetch and store H5P content and fetch H5P libraries and updates for content and libraries.

The .h5p file format

Responsible for transporting H5P content including their libraries between H5P sites. May also be used for transporting only libraries.

Learn more: