The editor framework itself
The canvas, component model, style manager, layer tree and asset manager, as a dependency in your project rather than a service you rent.
PageKit — the self-hosted GrapesJS site builder, sold as source. Get early access
Build a Webflow-like visual editor with GrapesJS — self-hosted, customizable, embeddable, and connected to your own backend. Keep your data, infrastructure, branding, frontend and publishing workflow under your control.
Before any comparison, look at the thing itself. All three of these are GrapesJS. None of them looks like the others, because the editor UI is yours to define — which is the whole reason a team picks a framework over a platform.
Open in a new tabThe official demo: canvas, blocks, layer tree, style manager and responsive device switching, straight out of the BSD-3-Clause core.
Loads a third-party page in an iframe.
Almost every disagreement about “Webflow alternatives” comes from comparing two different categories of thing. Webflow answers six questions for you in one subscription. GrapesJS answers exactly one of them — the visual editing layer — and hands you the other five to answer inside your own architecture.
One vendor supplies the editor and everything underneath it.
This is a feature, not a flaw. If you want a website and not a project, buying six answers at once is the correct trade.
You supply the product; the engine supplies the canvas.
More boxes, not fewer. Every one of them is a decision you now get to make — and have to maintain.
Webflow gives you the entire platform. GrapesJS gives you the visual editing layer you build into your own platform.
Two very different people type “Webflow alternative” into Google. One needs a website for their business. The other needs a visual editor inside a product they are building. Read the column that describes you — and if it is the left one, this page has done its job.
You want a website, not a project.
This is you when
Buy the platform. You will spend less and ship sooner, and nothing on this page changes that.
Compare the two anywayThe editor is part of your product.
This is you when
Take the engine and build the product around it. The editing layer stops being the hard part.
Start with GrapesJSNeither column is a scoreboard. They are two different jobs, and picking the wrong one is expensive in both directions.
Read this as a table of architectural positions, not a scorecard. Nearly every row is a difference in *where* something happens rather than *whether* it can. Webflow's extension points live inside Webflow; the GrapesJS editor lives inside your product. Where a capability moves quickly, the cell says so and the sources under the table go to Webflow's own documentation.
| Capability | GrapesJS | Webflow |
|---|---|---|
| What it is | Open-source visual editor framework | Hosted website platform |
| Self-hosting | Yes — it is a package in your app | Sites are served from Webflow's platform |
| Licence | BSD-3-Clause core, MIT React wrapper | Proprietary, subscription |
| Editor inside your own product | The primary use case | Not offered as an embeddable end-user editor; apps run inside the Designer |
| Backend | Your API — the Storage Manager calls it | Webflow's platform, driven through its Data API |
| Where page data lives | Your database, in your schema | Webflow's data model |
| White-labelling the editor | Panels, icons, labels and CSS are all yours | The Designer is a Webflow-branded surface |
| Custom components | Define your own component types and traits | Components and custom elements within Webflow's model |
| Design system | You define the tokens, blocks and locked regions | Native classes, variables and component workflow |
| CMS | None — bring your own | Built-in CMS with collections |
| Hosting | Your infrastructure | Webflow hosting; Webflow Cloud also runs your own app code |
| Publishing | Your pipeline — the editor emits HTML/CSS | One-click publish, managed end to end |
| Code export | HTML, CSS and a JSON project you own outright | Static export, plus DevLink component export to React |
| Extensions | npm plugins and the GJS.Market catalogue | Webflow Apps and Designer Extensions, inside the Designer |
| Email editing | MJML and newsletter presets for email templates | A website platform — check current capabilities |
| User roles and permissions | Your application — the engine has none | Workspace and site permissions, by plan |
| Multi-tenancy | Your application architecture | Sites and workspaces, on Webflow's terms |
| Data ownership | Yours, in infrastructure you run | Stored on Webflow's infrastructure |
| Cost model | No licence fee; you pay for infrastructure and engineering | Subscription — site plans plus workspace seats |
Every Webflow row was checked against Webflow's own documentation on 2026-09-03. Capabilities and plans change; the sources below are the primary ones.
Check these claims at the source
The phrase gets used as if a repository somewhere contains Webflow. It does not. What open source gives you here is a specific and genuinely valuable thing: the editing layer, with the source in your hands.
The canvas, component model, style manager, layer tree and asset manager, as a dependency in your project rather than a service you rent.
Panels, buttons, icons, labels and CSS are all addressable. You are not styling around someone else's product decisions.
It mounts inside your app, in your framework, behind your auth, on your routes.
The Storage Manager calls endpoints you write. Page data lands in your schema, joinable with everything else you store.
Define the component types your business actually has, lock what should not be edited, and ship the tokens your brand uses.
The editor runs where you run. Its availability is your availability, and its roadmap does not price you out of it.
The honest caveat
GrapesJS is not a drop-in clone of the Webflow platform. You are choosing an editor foundation — not downloading a complete replacement with hosting, a CMS, a CDN, billing and analytics already configured. Everything below the editor is a project.
“Webflow alternative” is one query hiding six different problems. Find yours — each of these links to the page that actually answers it.
You want a site, not a codebase. Another hosted builder is probably your answer, and the open-source route will cost you more than it saves.
See the open-source trade-offsYou want control over the code, the infrastructure and the architecture, and you are comfortable owning what that implies.
No-code product architectureYour customers need to build pages inside your product, under your account model and your billing.
SaaS page builder architectureYou want a controlled, branded editing experience for clients — with the parts they should not touch locked down.
White-label page builderThe editor has to look like your product, not like a tool your product happens to include.
Embed it in your appYou want visual editing on top of the CMS you already run, without replacing your content model.
Headless CMS editorYou can build a similar visual editing experience by composing GrapesJS features with your own application logic. What follows is where each capability actually comes from — including the four that come from nowhere but your own codebase.
Twelve of these ship or install. Four do not, and they are the ones that decide the size of the project.
GrapesJS does not automatically reproduce every Webflow feature, and this page will not pretend otherwise. It reproduces the editing experience; you build the platform around it.
Your application: routes, auth, billing, everything a customer logs into.
Your UI shell and your API. The editor is one screen inside it.
The builder feature you are shipping — your code, your product decisions.
GrapesJS: the editing engine and its modules.
The project document the editor reads and writes.
Your database or API, where that document lives.
Preview and publish, on your pipeline.
The engine never talks to your database. It calls the endpoints you gave it, which is what makes the rest of the stack replaceable.
How embedding actually worksEverything the application layer still owns
The reason to leave a platform is rarely a missing feature. It is that the important nouns — data, infrastructure, brand, pricing — belong to someone else. Here is where each one sits.
Run the editor and its backend wherever you already run things — your cloud, your region, your compliance boundary.
Project documents live in your database, in a schema you designed, backed up by the process you already trust.
Render published content with whatever stack you use. The editor produces HTML and CSS; what serves it is your decision.
The editor calls your endpoints. Validation, versioning and business rules stay where the rest of your logic lives.
GrapesJS, BSD-3-Clause. Free to use, free to fork, and not going to change its pricing on you.
Blocks, storage drivers, template managers and UI presets from the GJS.Market catalogue — bought once, run by you.
The editor's chrome, terminology and iconography are code you control, not a logo slot somebody rents you.
If you sell the builder to customers, the commercial model is yours to set — no platform sits between you and them.
None of this is free. It is owned, which is a different thing — you still pay for hosting, engineering and maintenance, but you pay for them once and to yourself.
This is the single capability that decides most Webflow-alternative searches. Not “can it build a page” — both can — but “can my customers build pages, in my product, behind my login, in my design language.”
Products that ship an embedded builder
Webflow's extension points face inward: apps you build run inside the Webflow Designer. GrapesJS faces the other way — the editor runs inside your product.
Once the editor lives in your product, it should stop looking like a tool you installed. Every part of its surface is code you can change.
Colours, typography, logo, iconography — the editor inherits your design system rather than importing a vendor's.
Panels can be moved, merged, replaced or removed. Nothing about the default layout is load-bearing.
Ship the component types your customers need, with the traits and constraints that make sense in your business.
“Component”, “block” and “layer” are labels. Call them what your users call them, in every language you support.
The block library is a data structure. Fill it with your sections, grouped the way your customers think.
Lock structural regions, hide the raw style controls, and expose only the decisions you want customers making.
Webflow's Designer is a Webflow-branded surface — that is what buying a platform means. Check Webflow's current plans for what their client-facing editing and branding options cover today.
GrapesJS does not ship a database and never pretended to. It ships a Storage Manager: a contract with two endpoints. Everything about persistence — schema, auth, validation, versioning — is on your side of that line.
import grapesjs from 'grapesjs';
const editor = grapesjs.init({
container: '#gjs',
storageManager: {
type: 'remote',
autosave: true,
stepsBeforeSave: 5,
options: {
remote: {
urlLoad: '/api/pages/42',
urlStore: '/api/pages/42',
// Your session, your headers, your rules.
fetchOptions: (opts) => ({ ...opts, credentials: 'include' }),
},
},
},
});Where teams put the project document
Store the project document alongside the tenant, the author and the audit row it belongs with. Join it like any other table.
The editor sends your headers and cookies. Authorization happens in the same middleware as the rest of your API.
Autosave is a setting; what a save *means* — revision, draft, snapshot — is a decision your endpoint makes.
Catalogue plugins already speak to Firestore, Directus and IndexedDB if you would rather not write the first one yourself.
The stores listed above are places teams have pointed the Storage Manager, not drivers GrapesJS bundles. A custom backend is a function you write, and that is the point.
A blank canvas is how brand guidelines die. The reason to build the editor yourself is that you can decide, per component, exactly how much freedom the person editing gets.
What you get to define
Give users the flexibility of visual editing without giving them an uncontrolled blank canvas.
Three words that get used interchangeably and should not be. Getting them straight early is most of what makes a builder feel coherent to the person using it.
Reusable, editable UI elements with defined behaviour — a pricing card that knows it is a pricing card, with traits your editor can expose.
Drag-and-drop building pieces in the library. A block is how a component gets onto the canvas; it is not the component itself.
Complete page structures made of those blocks — the starting point a customer picks before they change anything.
How they nest
Template
├── Header
├── Hero
├── Features
├── Pricing
├── Testimonials
└── FooterA template is a composition, not a file format. Every node in it stays editable.
A builder is only as good as what is in its block library on day one. These are the eight sections almost every page needs — ship them, and the blank canvas stops being a problem.
Headline, supporting line and a primary action
Two to four columns of icon, title and copy
Tiers, feature lists and per-tier actions
Quote, attribution and portrait
Question and answer pairs, expandable
A closing band with one clear next step
Responsive image grid with lightbox behaviour
Navigation columns, legal links and social
Templates are how a builder stops being intimidating. Ship a handful that already look like your brand and the blank-canvas problem disappears.
Template families teams ship
Template management is a plugin concern, not a core one — which means the storage, permissions and per-tenant visibility rules stay yours.
Components, blocks and templates are three layers of the same decision: how much do you want the person editing to be able to change?
On a hosted platform, “publish” means one thing that vendor defined. Here it means whatever your business needs it to mean — including approval steps that platforms rarely model well.
What “publish” can be wired to
GrapesJS emits HTML, CSS and a project document. Everything after that — review gates, scheduling, rollbacks, cache invalidation — is your pipeline's job, and a catalogue plugin can cover the deploy step if your target is a common one.
Audit your Webflow project
Inventory pages, templates, CMS collections, components, styles, assets and interactions. Most projects discover here that half the pages are variations of four layouts.
Define your new content model
Decide what becomes a component, what becomes a block, what becomes a template, and what belongs in your database or CMS rather than in the page at all.
Rebuild the design system
Convert recurring sections into reusable GrapesJS components and blocks. This is the step that pays for itself — the output is a system, not a pile of pages.
Connect storage
Point the Storage Manager at your API so editable project data lands in your own backend from the first page you migrate.
Rebuild publishing
Wire the editor's output into your frontend and deployment pipeline, including preview URLs and whatever approval your team needs.
Migrate incrementally
Move one template family at a time and run both systems in parallel. A staged migration is slower on paper and dramatically cheaper in practice.
Webflow exports static HTML and CSS, and DevLink can publish Webflow components into a React codebase — both are useful inputs to step 1. Neither produces a GrapesJS project, and no tool currently does.
The shape below is the honest one. Content and assets come out of Webflow; a mapping layer you write turns them into your content model; the editor works on that model from then on.
Migration is a modelling exercise, not a file conversion — which is why it is worth doing deliberately and worth doing in stages.
Once the editor is a component you control, it stops being one website and starts being a capability you can point at anything.
Ship page building as a feature of your product, with your plans, limits and billing around it.
SaaS architectureLet customers build and edit their own pages inside your app, without a support ticket.
Embedded buildersA focused tool for campaign pages, with your templates and your tracking baked in.
Landing page buildersVisual editing over content you already model, without giving up your CMS.
Headless CMS editingResell the whole builder under someone else's brand, or your own.
White-label buildersThe same engine, an MJML preset, and templates that survive Outlook.
Email template buildersLet marketing edit the pages engineering used to deploy for them.
Drag-and-drop editingOne builder, many customers, isolated data — an architecture, not a plan tier.
No-code for developersThe gap between “the editor works” and “the editor is a product” is mostly blocks, templates, storage and UI. These are real, currently listed GJS.Market products — live prices, live links.
Three of the nine rungs have no catalogue answer, and they are marked as yours rather than quietly left off the list. Those three — CMS, accounts, publishing — are the bulk of the work a hosted platform was doing for you.
Organised the way you will need them: the editor shell first, then what users drag onto the canvas, then where it all gets saved and shipped.
Complete builder shells and canvas tooling — the fastest way to stop looking like a default install.
Browse the categoryA complete consumer-grade builder UI — the closest thing in the catalogue to a Webflow-shaped experience out of the box.
A contextual, panel-free editing model for teams who want the editor to disappear behind the content.
Rulers and guides for the precision layout work designers expect from a professional canvas.
Responsive email blocks, for the day the builder has to send as well as publish.
Browse the categoryTwo bundles, depending on what you are actually building. Both assume the core is already in your project; neither is a substitute for the application work above.
Marketing sites, landing pages, campaign work
Customer-facing page building in a SaaS
SaaS builder architecturePrices come live from the marketplace at build time — nothing on this page is a cached figure.
GrapesJS — the editing engine, BSD-3-Clause.
Blocks, components and the Style Manager, extended with catalogue plugins.
Pages and templates, managed by plugins and stored by you.
The Storage Manager pointed at your API and your database.
HTML and CSS out of the editor, into your deployment pipeline.
Authentication, billing, permissions and analytics — your application, entirely.
If the editor is going in your product either way, the real question is whether you write the canvas engine yourself. Twelve capabilities, and what each one costs on each route.
| Capability | From scratch | GrapesJS |
|---|---|---|
| Editing canvas | Build | Included |
| Drag and drop | Build | Included |
| Component model | Build | Included |
| Block library | Build | Extensible |
| Style system | Build | Included |
| Layer tree | Build | Included |
| Asset manager | Build | Included |
| Commands and undo | Build | Included |
| Responsive breakpoints | Build | Included |
| Storage integration | Build | Integrate |
| Custom editor UI | Build | Extensible |
| Plugin system | Build | Extensible |
“Integrate” is the honest verdict: storage is a contract the engine defines and your backend fulfils, not a feature it ships. Verified 2026-09-03.
Build the product around the editor instead of rebuilding the editor engine.
Three columns, deliberately unequal. If you take one thing from this page, take the width of the third column — that is the project you are signing up for, and no editor framework makes it smaller.
9 responsibilities
A platform, which means most of the list below arrives already built and already running.
8 responsibilities
An editing engine. Deep in one dimension, and deliberately silent on every other.
10 responsibilities
Everything a platform was doing on your behalf. This is the honest size of the decision.
GrapesJS is not a complete Webflow replacement, and treating it as one is how these projects go wrong. It is the hardest part of the editor, given to you finished, so your team can spend its time on the third column.
You have now seen the architecture, the ownership and the size of the third column. Here is the same decision from the start of the page, with everything in between accounted for.
When the website is the deliverable.
Choose Webflow when
Then Webflow is the right tool and this page has told you so twice.
When the editor is part of what you sell.
Choose GrapesJS when
Then you are not looking for a website platform at all — you are looking for the editing layer, and this is it.
Comparing monthly figures here would be misleading in both directions. One column is a subscription that starts immediately and never ends; the other is engineering time you spend up front and infrastructure you were probably already paying for. They are not the same kind of number.
No licence fee. Real costs, mostly denominated in engineering time.
A subscription with several dimensions — per site, per seat, plus add-ons.
This page deliberately quotes no Webflow prices. Webflow restructured its plans in 2026 and the figures circulating on comparison sites disagree with each other; the link above goes to the only source that is current by definition.
Implementation
The editor is the part that is already solved. If the rest of the stack is where your timeline is disappearing, we build it — integration, components, storage, publishing and the migration plan that gets you off the platform without a cutover weekend.
Keep the visual editing experience your users love — while owning the application, backend, data and publishing workflow around it.
Tell us what you are building and get an architecture for the builder, the storage and the publishing path.
Start with GrapesJSBlocks, templates, storage drivers and complete editor shells — real products with live prices.
Explore pluginsCustom implementation when the deadline is closer than the team is large.
Talk to an expertYour product. Your editor. Your infrastructure.