# ProseMirror
ProseMirror is a toolkit for building rich-text editors on the web, created by [[Marijn Haverbeke]] and released under the MIT license.
Like [[CodeMirror]], it is not an editor you drop into a page. It's a set of building blocks you assemble into your own editor, with your own rules about what a document is allowed to contain.
## The core idea
Most WYSIWYG editors let the browser's `contenteditable` do whatever it wants and then try to clean up the mess afterwards. ProseMirror does the opposite. The document is a structured tree that conforms to a schema you define, and the DOM is just a rendering of that tree. If a paste, a keystroke, or a drag would produce something the schema forbids, it never enters the document.
The architecture is largely functional and immutable:
- **Schema**: you declare the node types, marks, and nesting rules your documents allow
- **Document**: an immutable tree. Editing produces a new document, it never mutates in place
- **State**: document plus selection plus plugin state, all in one immutable value
- **Transactions**: every change is a transaction you can inspect, filter, or reject before it applies
- **Plugins**: nearly everything else is a plugin, including history, keymaps, and input rules
- **Modular packages**: you load only the pieces you need
That last point about transactions is the one people underestimate. Being able to intercept every single change before it lands is what makes real collaborative editing and reliable undo possible.
## Collaborative editing
Collaboration was designed in from the start rather than bolted on. Because every edit is an explicit, serializable step, steps from different users can be rebased against each other and replayed in a consistent order. Multiple people editing the same document in real time works, and it works predictably.
## Who uses it
ProseMirror sits underneath a lot of software people use daily without ever hearing the name. Initial development was crowdfunded by 414 backers, and ongoing work has been sponsored by organizations including The New York Times, Asana and Box. Several popular editor libraries are themselves wrappers around it.
This is the same pattern as [[CodeMirror]]: one maintainer, an enormous amount of software standing on top.
## The successor question
In 2026, Haverbeke released [[Wordgard]], a rich-text editor built from scratch using what he learned maintaining ProseMirror. Importantly, he did not call it ProseMirror 2.0, and he stated plainly that ProseMirror maintenance continues.
So if you're on ProseMirror today, you're not stranded. Keep in mind that new architectural thinking lives in [[Wordgard]], while ProseMirror stays supported.
## References
- https://prosemirror.net/
- https://prosemirror.net/docs/guide/
- https://github.com/ProseMirror
## Related
- [[Wordgard]]
- [[CodeMirror]]
- [[Marijn Haverbeke]]
- [[Open Source]]