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.
ProseMirror ships with a default document schema that is
quite close to CommonMark, but
allows you to define your own content schema, including exactly the
elements you need, and possibly adding your
own custom elements.
- Users get a clean, consistent interface that allows them to enter
only documents that fit the schema.
- You get clean, consistent content that you can format
ProseMirror is open-source under
ProseMirror is designed to allow customization and extension
- Support for collaborative editing
- Export and import from ProseMirror's document format to HTML or
- A clean, immutable document data structure (not the DOM) to
- Document schemas that can be modified
and extended without having to rewrite
the whole editor
- A rich set of
editing commands that can
appear in the menu or be bound to keys, and the ability to define
- Two menu styles (bar
and tooltip) in the
distribution, and a programming interface to implement your own
pieces of the document, optionally styling them, and keeping track of
where that piece is even after the document changes
- The ability to enable and
define input rules, making
things (text shortcuts, wrapping in markup) happen whenever certain
strings are typed
- Changes are first-class values and can be stored, inspected,
- The look of the editor can, to a great extent, be changed simply
by adding CSS rules
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
ProseMirror is being developed
You can find a git
mirror here as
The easiest way to install ProseMirror is
with npm. It
is currently in beta stage, meaning that you are
encouraged to try it out
issues, but that you are still likely to run into bugs.
Discussing the project, or asking questions, is best done on
Bugs should be reported through
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
by these 414 excellent individuals and
Get a feel for the editor's possibilities by playing with these: