Document Editor Playground

Six editors, one workspace

The same document,
six different editors.

Every editor below gets the same shell, the same sample documents, and the same diagnostics, so the only thing that varies is the editor itself. Type in each one, load a template, then open the output panel to see what that editor actually hands you: HTML, Markdown, or a JSON node tree.

At a glance

The differences that actually change how you build with each one.

EditorEditing modelSource of truthReads out asToolbar
01CKEditor 5Custom tree model with its own change/undo pipelineHTMLHTMLShips its own toolbar - the gray bar above the page
02TipTapProseMirror document with a strict, validating schemaHTMLHTMLJSONHeadless - every toolbar button on this page is hand-written
03Toast UI EditorMarkdown text, mirrored into a WYSIWYG ProseMirror viewMarkdownMarkdownHTMLShips its own icon toolbar plus a Markdown/WYSIWYG switch
04Editor.jsFlat array of typed blocks, each owned by its own tool pluginBlock JSONJSONHTMLPer-block plus/handle controls and an inline selection popup
05SlateNested JSON node tree you define; immutable, React-renderedNode tree (JSON)JSONHTMLNone supplied - the toolbar and renderers are written per app
06LexicalImmutable node tree updated inside transactional editor.update()Node tree (JSON)JSONHTMLHeadless core - plugins supply behavior, you supply the toolbar

The editors

1. Type in it

Each editor opens with the same Lorem Ipsum draft already loaded, so you can select text and try bold, italic, headings, and lists immediately. Every toolbar button names itself on hover.

2. Load the same template

The three sample documents - release notes, a research article, a contract - are identical across all six editors. Watch which structure survives the import and which gets flattened.

3. Read the output

The output panel on each page shows the live document as HTML, JSON, and Markdown. A grayed-out tab means that editor cannot produce that format at all - which is often the deciding factor.