Skip to content
EditorStackPlayground

BlockNote review: a Notion-style block editor for React, assembled

BlockNote is a Notion-style block editor for React built on ProseMirror and Tiptap, shipping slash menus, drag handles and formatting toolbars ready-made; its core is MPL-2.0, while AI, multi-column and export packages are GPL-3.0 or commercially licensed.

Last verified · MPL-2.0 · from $195/mo · Official site · Repository

TL;DR

  • BlockNote is a block-based rich-text editor for React, built on ProseMirror and Tiptap, that ships the Notion-style interface — slash menu, side menu with a drag handle, formatting toolbar — instead of leaving it to you.
  • The core is MPL-2.0 and usable in closed-source products; the XL packages for AI, multi-column layouts and PDF, DOCX, ODT and email export are GPL-3.0 or commercial, with the commercial licence in a Business tier vendor-published at $195 per month billed yearly.
  • We measured @blocknote/react 0.54.2 with the Mantine-based view at 386.1 kB gzip, React external. The documented npm install failed with ERESOLVE on npm 10 until we added --legacy-peer-deps.

BlockNote quick facts

Quick facts about BlockNote
TypeLibrary
LicenceMPL-2.0
First release2022-08
LanguageTypeScript
FrameworksReact, Vue
SSR supportnone
Bundle size (min+gzip)386.1 kB gzip
Pricingfrom $195/mo
Self-hostedYes
White labelYes
npm weekly downloads545,506
GitHub stars10,185
Latest version0.54.2
Last verified2026-09-17

What BlockNote is, and who it is for

BlockNote answers a request product teams make constantly: "an editor like Notion's". Documents are organised into blocks, a + button and a drag handle appear beside whichever block you hover, a slash menu inserts new ones, and a formatting toolbar appears on selection. All of that is in the package rather than on your backlog.

Underneath, the documentation says BlockNote "is built on top of the widely used ProseMirror and TipTap", and @blocknote/core depends on @tiptap/core directly. So the useful way to place it is as Tiptap with the interface already built and the block model already decided — which is exactly the comparison in Tiptap vs BlockNote.

It suits React products with document-style content: wikis, notes, project docs, AI writing surfaces. It suits poorly products outside React, products with a tight JavaScript budget on the editing route, and products that need a different interaction model from the one it ships.

Licensing: MPL core, copyleft XL packages

The npm registry is precise here. @blocknote/core, @blocknote/react, @blocknote/mantine and the other core packages carry MPL-2.0. The @blocknote/xl-* packages — AI, multi-column layouts and the PDF, DOCX, ODT, email and Typst exporters — carry "GPL-3.0 OR PROPRIETARY".

The vendor's pricing page states the consequence: the MPL-2.0 core "allows you to use BlockNote in commercial and closed-source applications - even without a subscription", while the XL packages are dual-licensed, and the commercial licence for them comes with the Business tier and covers one application.

MPL-2.0 is file-level copyleft: modifications to BlockNote's own files must be shared, your application code does not. That is a lighter obligation than the GPL attached to CKEditor 5 and TinyMCE, and a heavier one than Tiptap's MIT.

Getting started

The file from our benchmark application, unedited: fourteen lines, following the documented quick start with one stylesheet import and initial content.

import { createRoot } from 'react-dom/client';
import { useCreateBlockNote } from '@blocknote/react';
import { BlockNoteView } from '@blocknote/mantine';
import '@blocknote/mantine/style.css';

function App() {
  const editor = useCreateBlockNote({
    initialContent: [
      { type: 'heading', content: 'Hello editor' },
      { type: 'paragraph', content: 'Type here.' },
    ],
  });
  return <BlockNoteView editor={editor} />;
}

createRoot(document.getElementById('app')).render(<App />);
The BlockNote benchmark application showing a large heading and a paragraph with no visible toolbar until the user hovers or selects

BlockNote 0.54.2 from the code above, screenshotted from our own build. Nothing is visible at rest: per the documentation, the side menu appears on hover, the formatting toolbar on text selection and suggestion menus on a trigger character.

Two integration costs surfaced while building it, and both are recorded rather than smoothed over.

The documented install failed. npm install @blocknote/core @blocknote/react @blocknote/mantine in a fresh directory, on npm 10.8.2, stopped with ERESOLVE unable to resolve dependency tree. The conflict is in BlockNote's optional, Yjs-related @y/* peer dependencies. --legacy-peer-deps resolved it, and both our measurement scripts now pass that flag for BlockNote.

Stylesheet imports need the style export condition. BlockNote's CSS resolves through a package-exports condition that esbuild does not enable unless configured to. That is a bundler setting rather than a BlockNote defect, but it is worth checking in whatever build tool you use.

The application ran, but we have not published a timing for it: it was measured on a different machine from the time to first editor benchmark, and timings from two machines are not comparable.

Strengths

The Notion-style interface is included. Slash menu, side menu with drag handle and formatting toolbar are documented components of the default view, behind fourteen lines of setup. Building the same on Tiptap is the project BlockNote already finished.

Collaboration in the free tier. The documentation describes Yjs-based real-time collaboration, and the pricing page lists it, with comments, under the free Community tier.

Custom schemas. You can add your own block types, inline content and text styles rather than being limited to the defaults.

Localisation. Locales ship in @blocknote/core/locales and are passed to the editor as a dictionary.

A choice of UI kit. Besides the Mantine view we measured, @blocknote/shadcn and @blocknote/ariakit are published first-party.

Limitations

Heavy in its documented form. 386.1 kB gzip with the Mantine view, React external — the second-heaviest bundle in our benchmark, behind TinyMCE. We did not measure the shadcn or Ariakit views, which may differ.

React only. No first-party Vue or Angular package. Non-React products should look at Tiptap or the finished editors instead.

The valuable extras are copyleft. AI, multi-column layouts and every exporter are GPL-3.0 or commercial. A closed-source product that needs PDF export is a Business-tier customer.

Install friction on npm. The ERESOLVE failure above is the kind of thing that costs an afternoon the first time and nothing afterwards, but it should not happen on a documented command.

Pre-1.0. The version line is 0.54.2, so treat the public API as one that can still move.

The interaction model is decided. Blocks with handles and a slash menu. If your product needs a different editing experience, you are working against the library rather than with it.

Pricing

Vendor-published on the day we checked. Community: free, including all blocks and UI components, drag-and-drop editing, slash menus, real-time collaboration and comments, with XL packages free for open-source projects under GPL-3.0. Business: $195 per month billed yearly ($2,340 per year), which includes the commercial licence for the XL packages for one application and standard support. Enterprise: custom.

For where BlockNote sits against its neighbours, see BlockNote vs Editor.js and the rich-text editor comparison.

Who BlockNote fits, and who it does not

Good fit

  • React products that want a Notion-style editing experience — slash menu, drag handles, block toolbars — working on day one
  • Collaborative documents, since Yjs-based real-time collaboration is in the free tier rather than a paid service
  • Closed-source products that can accept MPL-2.0 terms for the core and do not need the GPL-licensed XL packages

Poor fit

  • Non-React applications, because there is no first-party Vue or Angular package
  • Bundle-sensitive routes: the documented React and Mantine setup measured 386.1 kB gzip, among the heaviest in our benchmark
  • Closed-source products that need AI, multi-column layouts or PDF and DOCX export without buying the commercial XL licence

BlockNote against its nearest neighbours

The closest products in the dataset by category, with the facts most people open three tabs to compare. Bundle sizes marked in kilobytes are our own measurements.

BlockNote compared with the nearest products in the dataset
ProductLicenceBundlePrice fromSelf-hosted
BlockNoteMPL-2.0386.1 kB gzipfrom $195/moYes
LexicalMIT104.9 kB gzipFree (open source)Yes
PlateMIT150.8 kB gzipFree (open source)Yes
TiptapMIT123.3 kB gzipFree tier, paid plans undisclosedYes

Alternatives to BlockNote

Each comparison below is a full write-up, not a feature grid: where each tool wins, and what moving between them costs.

Frequently asked questions

Is BlockNote free for commercial use?
The core packages are MPL-2.0, and the vendor states they can be used in commercial and closed-source applications without a subscription. The XL packages — AI, multi-column, exporters — are GPL-3.0 or commercial, so closed-source use of those needs the commercial licence included in the Business tier.
How big is BlockNote?
We measured @blocknote/react 0.54.2 plus @blocknote/mantine and its Mantine dependencies at 386.1 kB gzip (1,428.2 kB raw), React external and CSS excluded. That is the documented quick-start setup, and it includes a complete editor interface.
Does BlockNote work with Vue or Angular?
Not first-party. There is no @blocknote/vue or @blocknote/angular package; npm lists community Vue packages, which we have not evaluated.
Does BlockNote work with Next.js?
Client-side only. The documentation says BlockNote should only be rendered on the client and shows loading it through next/dynamic with ssr disabled.
BlockNote or Tiptap?
BlockNote is built on Tiptap and adds the interface Tiptap deliberately omits. Choose BlockNote for a Notion-style editor now; choose Tiptap when the interface must be entirely your own. Our head-to-head covers the trade.

Sources and verification

Last verified: . Facts on this page were checked against the sources below on the date shown next to each one.

  1. npm registry metadata for @blocknote/core (MPL-2.0, first published August 2022, latest 0.54.2) — accessed 2026-09-17
  2. npm registry metadata for @blocknote/react (MPL-2.0, latest 0.54.2) — accessed 2026-09-17
  3. npm registry metadata for @blocknote/xl-ai (licence 'GPL-3.0 OR PROPRIETARY'; the other xl-* packages carry the same field) — accessed 2026-09-17
  4. BlockNote pricing page (MPL-2.0 core, dual-licensed XL packages, vendor-published Business tier) — accessed 2026-09-17
  5. BlockNote documentation introduction (built on ProseMirror and Tiptap; documents organised into blocks) — accessed 2026-09-17
  6. BlockNote getting started (install command, Mantine peer packages, client-only rendering) — accessed 2026-09-17
  7. BlockNote with Next.js (render client-side only) — accessed 2026-09-17
  8. BlockNote side menu (block drag handle) — accessed 2026-09-17
  9. BlockNote custom schemas (custom blocks, inline content and styles) — accessed 2026-09-17
  10. BlockNote real-time collaboration with Yjs — accessed 2026-09-17
  11. BlockNote localisation — accessed 2026-09-17
  12. BlockNote AI (provided by the copyleft-licensed @blocknote/xl-ai package) — accessed 2026-09-17
  13. npm search for BlockNote Vue packages (community packages only; no @blocknote/vue) — accessed 2026-09-17