Introduction to BlockNote

NPMGitHub Repo stars

BlockNote is a block-based rich-text editor for React (opens in a new tab), focused on providing a great out-of-the-box experience with minimal setup.

With BlockNote, we want to make it easy for developers to add a next-generation text editing experience to their app, with a UX that's on-par with industry leaders like Notion, Google Docs or Coda.

Unlike other rich-text editor libraries, BlockNote organizes documents into blocks. This makes it easy for the user to organize their document, and for developers to interact with the document from code.

BlockNote has been created with extensibility in mind. You can customize the document, create custom block types and customize UX elements like menu items. Advanced users can even create their own UI from scratch and use BlockNote with vanilla JavaScript instead of React.

Why BlockNote?

There are plenty of libraries out there for creating rich-text editors. In fact, BlockNote is built on top of the widely used ProseMirror (opens in a new tab) and TipTap (opens in a new tab).

As powerful as they are, these libraries often have quite a steep learning-curve and require you to customize every single detail of your editor. This can require months of specialized work.

BlockNote instead, offers a great experience with minimal setup, including a ready-made and animated UI.

On top of that, it comes with a modern block-based design. This gives documents more structure, allow for a richer user experience while simultaneously making it easier to customize the editor's functionality.


We'd love your feedback! If you have questions, need help, or want to contribute reach out to the community on Discord (opens in a new tab) and GitHub (opens in a new tab).

Next: Set up BlockNote

See how to set up your own editor in the Quickstart. Here's a quick sneak peek in case you can't wait!

import "@blocknote/core/fonts/inter.css";
import { useCreateBlockNote } from "@blocknote/react";
import { BlockNoteView } from "@blocknote/mantine";
import "@blocknote/mantine/style.css";
export default function App() {
  // Creates a new editor instance.
  const editor = useCreateBlockNote();
  // Renders the editor instance using a React component.
  return <BlockNoteView editor={editor} />;