Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Towards open digital publishing
JavaScript CSS HTML


Substance is a toolkit for web-based content editors.

It provides generic API's:

  • Substance Document (define custom document schemas, instantiate and manipulate a document)
  • Substance Surface (Define the HTML structure of your custom editor and attach a Substance Surface on it to make it editable)

Substance also includes a reference implementation for an extensible web-editor.

  • Substance Writer

API for manipulating documents (Substance Document)

Getting started


Defining a and manipulating a Substance document


Rules that make your life easier:

  • Content tools must bind to mousedown instead of click to handle toggling. That way we can prevent the blur event to be fired on the surface.

  • The root element of a Substance Surface must be set contenteditable



  1. Running the QUnit test-suite in a browser for debugging:
$ node test/serve

Then open http://localhost:4201 in your browser.

  1. Running test-suite using Karma to generate a code coverage report.
$ karma start test/karma.conf.js

The report will be stored in the coverage folder.

Something went wrong with that request. Please try again.