ProseMirror is an in-browser semantic rich text editor component. This is what it might look like:

Control your Content

There is something of a gap between MarkDown textareas (limited, hard to use) and classical HTML WYSIWYG editors (content becomes a non-semantic blob). ProseMirror aims to fill this gap.

It does this by decoupling its content model from HTML. Documents are represented with a JavaScript data structure, and their structure is described by a schema that you can provide yourself. This gives you full control over the kind of elements that may appear in your document, and the way they nest and relate to each other.

ProseMirror is open-source under an MIT license.

↖ You can edit this


ProseMirror is designed to allow customization and extension throughout.


ProseMirror is open source, and you are legally free to use it commercially. Yet, writing, maintaining, supporting, and setting up infrastructure for such a project takes a lot of work and energy. Therefore...

If you are using ProseMirror to make profit, there is a social expectation that you help fund its maintenance.

ProseMirror is being developed on GitHub. Contributions are welcome.

The easiest way to install ProseMirror is with npm. It is currently in beta stage, meaning that you are encouraged to try it out and report issues.

Discussing the project, or asking questions, is best done on the forum. Bugs should be reported through the issue tracker. We aim to be an inclusive, welcoming community. To make that explicit, we have a code of conduct that applies to communication around the project.

Initial development of the software was crowd-funded by these 414 excellent individuals and organizations.


Get a feel for the editor's possibilities by playing with these: