Skip to content
EditorStack

EditorStack benchmarks

12 of 34 products have been measured by EditorStack: bundle size in run bundles-2026-09-17 and time to first editor in run tte-2026-08-20. These are measurements of cost, not rankings of quality.

What we measure, and what we do not

  • Bundle size — the JavaScript your users download for the editor core: installed alone, imported through its documented entry point, bundled with esbuild 0.25.10 (bundle, minify, format=esm, platform=browser, target=es2020, NODE_ENV=production), gzipped with zlib level 9. CSS is excluded. Peer dependencies such as React are treated as external, because your app already ships them.
  • Time to first editor — Time from navigation start until the editor’s own root element is present in the DOM, measured with performance.now() inside the page. Median of 5 runs in Chromium (Playwright build 1194), headless.

Limitations. Measured on a warm local HTTP server with no network latency and no CPU throttling. Treat these as relative costs between libraries, not as field performance. Bundle size says nothing about features: a small core that needs five plugins can end up larger than a big one that needs none. Neither number measures editing performance on large documents, accessibility or output quality. Hosted SDKs and platforms cannot be installed and bundled locally, so they are not benchmarked — that is a limit of the method, not a verdict on the product.

Every number is reproducible: the scripts are in the repository, and the build fails if a number on the site differs from the recorded run. The full method is on the methodology page.

Bundle size bundles-2026-09-17

Measured bundle size of each editor library, minified and gzipped
LibraryPackageVersionmin+gzipRawReact external
Craft.js@craftjs/core0.2.1229.2 kB89.3 kByes
Quillquill2.0.358.7 kB200.6 kBno
Editor.js@editorjs/editorjs2.31.764.3 kB237.9 kBno
Puck@measured/puck0.20.290.4 kB282.3 kByes
Lexical@lexical/react0.50.0104.9 kB317.6 kByes
Tiptap@tiptap/react3.31.3123.3 kB389.9 kByes
Plate@udecode/plate48.0.5150.8 kB500.5 kByes
CKEditor 5ckeditor548.5.1161.2 kB629.9 kBno
GrapesJSgrapesjs0.23.6294.6 kB1115.7 kBno
React Page@react-page/editor5.4.6377.2 kB1279.3 kByes
BlockNote@blocknote/react0.54.2386.1 kB1428.2 kByes
TinyMCEtinymce8.9.1393.9 kB1130.2 kBno

Run bundles-2026-09-17, measured 2026-09-17 with esbuild 0.25.10 on v22.19.0. CSS excluded.

Time to first editor tte-2026-08-20

Lines of code, dependency count and time to first rendered editor for each library
LibraryLines of codeDirect packagesTime to editor (median)Notes
GrapesJS141309 ms—
Editor.js5170 ms—
Puck163852 ms—
Craft.js21394 ms—
Plate138209 ms—
Tiptap114171 ms—
Lexical254159 ms—
React Page1261004 msRequires a bundler alias for react/jsx-runtime.js (react-dnd + React 19).

Run tte-2026-08-20, measured 2026-08-20. Chromium (Playwright build 1194), headless, 5 loads per app, median reported.

Coverage

Tested (12)

Installable libraries not yet tested (1)

21 further products are hosted SDKs, CMSs or platforms, which the method cannot measure.

Research reports