Self-hosted page builders
18 products in this dataset run entirely on infrastructure you control, so page data never leaves your network — the deciding factor for regulated industries and for teams whose procurement blocks new sub-processors.
Self-hosting moves the cost from a licence line to an operations line. The question is not whether you can run it, but who patches it, who runs the asset storage behind it, and what your uptime target is for the editor as opposed to the published pages.
18 of 18 products
| Framework | Website | |||||||
|---|---|---|---|---|---|---|---|---|
| BlockNote | Library | React, Vue | MPL-2.0 | Yes | Yes | from $195/mo | 386.1 kB | blocknotejs.org |
| CKEditor 5 | Library | Any framework | GPL-2.0-or-later OR commercial | Yes | Unverified | from $144/mo | 161.2 kB | ckeditor.com |
| Craft.js | Library | React | MIT | Yes | Yes | Free (open source) | 29.2 kB · 94 ms to editor | craft.js.org |
| Directus | Headless CMS | Any framework | BSL-1.1 | Yes | Yes | from $99/mo | Not benchmarked | directus.io |
| Editor.js | Library | Any framework | Apache-2.0 | Yes | Yes | Free (open source) | 64.3 kB · 70 ms to editor | editorjs.io |
| Elementor | Platform | Unverified | GPL-3.0 | Yes | Unverified | from $59/yr | Not benchmarked | elementor.com |
| GrapesJS plugins ↗ | Library | Any framework | BSD-3-Clause | Yes | Yes | Free (open source) | 294.6 kB · 309 ms to editor | grapesjs.com |
| GrapesJS Studio SDK plugins ↗ | Commercial SDK | Any framework | Proprietary | Yes | Yes | Free tier, paid plans undisclosed | Not benchmarked | grapesjs.com |
| Lexical | Library | Any framework | MIT | Yes | Yes | Free (open source) | 104.9 kB · 159 ms to editor | lexical.dev |
| PageKit plugins ↗ | Commercial SDK | Any framework | Proprietary | Yes | Yes | from $199 one-time | Not benchmarked | pagekit.gjs.market |
| Plate | Library | React | MIT | Yes | Yes | Free (open source) | 150.8 kB · 209 ms to editor | platejs.org |
| Puck | Library | React | MIT | Yes | Yes | Free (open source) | 90.4 kB · 852 ms to editor | puckeditor.com |
| Quill | Library | Any framework | BSD-3-Clause | Yes | Yes | Free (open source) | 58.7 kB | quilljs.com |
| React Page | Library | React | MIT | Yes | Yes | Free (open source) | 377.2 kB · 1004 ms to editor | react-page.github.io |
| Silex | Library | Any framework | GPL-3.0 OR MPL-2.0 | Yes | Yes | Free (open source) | Not benchmarked | silex.me |
| TinyMCE | Library | Any framework | GPL-2.0-or-later OR commercial | Yes | Unverified | from $79/mo | 393.9 kB | tiny.cloud |
| Tiptap | Library | Any framework | MIT | Yes | Yes | Free tier, paid plans undisclosed | 123.3 kB · 171 ms to editor | tiptap.dev |
| Zillapage | Platform | Unverified | Proprietary | Yes | Unverified | Undisclosed | Not benchmarked | codecanyon.net |
What is in this list
- BlockNoteBlockNote 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.
- CKEditor 5CKEditor 5 is a finished rich-text editor with a toolbar, a plugin architecture and first-party React, Vue and Angular integrations, dual-licensed under GPL-2.0-or-later for self-hosted use or under commercial terms, with collaboration, AI and email tooling sold as premium features.
- Craft.jsCraft.js is an MIT-licensed React framework for building your own page editor: it supplies the drag-and-drop layer, node tree and state management, and leaves the entire editor UI to you. First published to npm in December 2019.
- DirectusDirectus is a self-hostable data platform and headless CMS licensed under BSL 1.1, free to self-host for organisations under $5M in annual revenue, with visual editing delivered as live-preview and editable-overlay features rather than a drag-and-drop page canvas.
- Editor.jsEditor.js is an Apache-2.0 licensed block-style content editor that outputs clean JSON instead of HTML, aimed at article and document authoring rather than page layout. First published to npm in February 2019.
- ElementorElementor is a WordPress page builder plugin sold as an annual licence from about $59 per year for one site, included here because agencies routinely weigh it against building a builder into their own product.
- GrapesJSGrapesJS is a BSD-3-licensed, framework-agnostic web page builder engine that you embed in your own application and extend through plugins, first published to npm in January 2016.
- GrapesJS Studio SDKGrapesJS Studio SDK is the commercial, licence-key product from the GrapesJS team: a ready-made editor UI, project storage and asset handling built on the open-source engine, first published to npm in July 2024.
- LexicalLexical is Meta's MIT-licensed extensible text editor framework, published to npm as version 0.1.0 in January 2022 and built around an immutable editor state with a plugin architecture rather than a supplied interface.
- PageKitPageKit is a self-hosted, white-label website builder built on GrapesJS and sold by GJS.Market under one-time licence tiers, aimed at agencies and SaaS products that need a branded builder without a per-seat subscription.
- PlatePlate is an MIT-licensed React rich-text editor framework built on Slate, shipping headless plugins plus copy-in shadcn/ui components for editors that need document editing rather than page layout. First published to npm in July 2021.
- PuckPuck is an MIT-licensed visual editor for React that renders your own React components inside the canvas and stores page data as JSON, first published to npm in June 2023.
- QuillQuill is a BSD-3-Clause rich-text editor maintained by Slab, with a built-in toolbar and themes, a Delta document format and a module API; version 2.0, rewritten in TypeScript, shipped in April 2024, and every framework wrapper for it is community-maintained.
- React PageReact Page is an MIT-licensed, cell-and-row based content editor for React that ships a grid layout system and a plugin API, first published to npm in November 2019.
- SilexSilex is a free/libre website builder from the non-profit Silex Labs, dual-licensed GPL-3.0 or MPL-2.0 and built on top of GrapesJS, aimed at static sites with dynamic data.
- TinyMCETinyMCE is a long-established WYSIWYG editor whose licence moved from MIT in version 6 to GPL-2.0-or-later in version 7, and since 8.3 to GPL-2.0-or-later or Tiny's self-hosted commercial terms, with every self-hosted TinyMCE 8 install required to set a licence key.
- TiptapTiptap is an MIT-licensed headless rich-text editor framework built on ProseMirror, shipping no UI of its own and exposing extensions instead; its React binding first appeared on npm in February 2021.
- ZillapageZillapage is a self-hosted PHP landing page and e-commerce builder sold as a one-time-licence script through code marketplaces, rather than a library you embed in an application.
Comparisons within this category
- BlockNote vs Editor.js
- CKEditor 5 vs TinyMCE
- Craft.js vs React Page
- Editor.js vs Lexical
- Editor.js vs Plate
- Editor.js vs Puck
- Editor.js vs Tiptap
- GrapesJS vs Craft.js
- GrapesJS vs Editor.js
- GrapesJS vs GrapesJS Studio SDK
- GrapesJS vs Puck
- GrapesJS vs Silex
- Lexical vs Quill
- PageKit vs GrapesJS Studio SDK
- PageKit vs Zillapage
- Plate vs Lexical
- Plate vs Tiptap
- Puck vs Craft.js
- Puck vs React Page
- Quill vs Tiptap
- Tiptap vs BlockNote
- Tiptap vs CKEditor 5
- Tiptap vs Lexical
Use cases and guides
- Build vs buy: should you build a visual editor or license one?
- Building a drag-and-drop landing page builder into your SaaS
- How to embed a page builder in a React application
- Adding a visual editor to a Next.js application
- Visual editor options for Vue applications
- White-label website builder for agencies: the real options
- GrapesJS in React: an editor component that survives StrictMode
Not sure this is the right list? The Editor Finder combines several requirements at once and explains each match.
Membership of this list is computed from the dataset, not curated by hand, so it changes when the data changes. See the methodology for the rule behind each flag, or take the raw data from the dataset page. The full table across every category is in the editor database.