A headless, framework-agnostic rich text editor built on ProseMirror, extensible through a large set of extensions.
codex-team/editor.js
A block-style text editor for the web that saves content as clean JSON instead of HTML, extended through plugin tools.
Open-source alternative to:Notion
- Stars
- 31,970
- Forks
- 2,244
- Open issues
- 711
- Last commit
- 3 hours ago
What is it?
Editor.js is an open-source block-based editor for the web. Content is composed of blocks such as text, headings, images, lists, quotes and code, and each block type is provided by a separate tool plugin.
Instead of producing HTML markup, the editor outputs structured JSON. That data can be sanitized, stored, and rendered on any platform, including web, iOS, Android and other clients, which makes it suitable for content pipelines that need a predictable data format. Calling editor.save() returns a promise with the current content.
The project is distributed on npm as @editorjs/editorjs and is written in TypeScript. A set of official tools covers headings, quotes, images, checklists, tables, embeds and more, and an awesome list collects third-party tools.
Key features
- 01Outputs clean JSON data instead of HTML markup
- 02Block-style interface for adding and rearranging content
- 03Each block type is provided by a separate plugin tool
- 04Official tools for headings, images, tables, checklists and embeds
- 05Simple API with editor.save() for retrieving content
Use cases
- Building a rich-text content editor whose output is stored and rendered on multiple platforms
- Adding a structured article or blog editor to a web application
- Creating a custom editor by writing your own block tools
Quick start
- 1
Install Editor.js with npm
npm i @editorjs/editorjs - 2
Install the tools you need from the list in the README
- 3
Add a container div with id editorjs to your page
- 4
Import EditorJS and create an instance with your tools
Things to know
- Each block type needs a separate tool plugin, so you must install and configure the tools you want.
- Saving content requires calling editor.save() and handling the returned Promise.
Topics
FAQ
- What is editor.js?
- A block-style text editor for the web that saves content as clean JSON instead of HTML, extended through plugin tools. Editor.js is an open-source block-based editor for the web. Content is composed of blocks such as text, headings, images, lists, quotes and code, and each block type is provided by a separate tool plugin.
- Is editor.js free to use? What license does it have?
- editor.js is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is editor.js still maintained?
- Actively maintained. The last commit to editor.js was on Oct 21, 2026.
- What can I use editor.js for?
- Building a rich-text content editor whose output is stored and rendered on multiple platforms Adding a structured article or blog editor to a web application Creating a custom editor by writing your own block tools
- How do I install editor.js?
- Install Editor.js with npm: npm i @editorjs/editorjs Install the tools you need from the list in the README Add a container div with id editorjs to your page Import EditorJS and create an instance with your tools
- Where can I get editor.js?
- The source code and installation instructions are on GitHub: https://github.com/codex-team/editor.js
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A customizable TypeScript framework for building rich text editors on top of React, with a plugin-first, schema-less core.
An extensible text editor framework from Meta, with a framework-agnostic core and official React bindings.
A simple, elegant open-source Markdown editor with realtime WYSIWYG preview for Linux, macOS and Windows.
A Rust-based toolchain for web projects that provides a formatter and linter for JavaScript, TypeScript, JSX, JSON, CSS and more, via CLI and LSP.
Universal TypeScript and JavaScript logger with pretty terminal output, structured fields-first JSON, secret masking and zero runtime dependencies.