A self-hosted page builder you embed — it builds the markup, you host it
BuilderJS builds the page markup; you host it in your own app — it does NOT publish or host live pages. That distinction is the whole point of this hub. BuilderJS is an embeddable page builder library: a ~140KB vanilla-JavaScript engine you mount inside any DOM node — React, Vue, Svelte, Angular, Next.js, Laravel, or plain HTML — to give your users a drag-and-drop editing surface that lives entirely inside your product. It is the editor, not a platform: there is no SaaS account, no sending, no funnels, no CRM, no hosting service behind it. Your users compose responsive landing and web pages from 42 element types and marketing blocks; the library hands you clean HTML and a lossless JSON document via getData() and load(). What you do with that output — store it, render it, serve it from your own stack — is yours to own. The license is a one-time CodeCanyon purchase: you get the full source, self-host it, and ship it inside your app with no per-seat fee and no phone-home. The live editing demo runs at builder.emotsy.com.
What an embeddable page builder library actually is
An embeddable page builder library is a drag-and-drop editing component you mount inside software you already run — not a website you log into. Think of an Elementor-style canvas experience, but embedded in YOUR app and serving YOUR users, under your brand and your DOM. BuilderJS mounts into any element you point it at and is framework-agnostic by design: the same ~140KB engine drops into a React dashboard, a Vue admin panel, a Laravel Blade page, or a single static HTML file. Your users drag from 42 element types onto a responsive canvas with 31 on-canvas overlays and tune 59 property controls in the side panel. When they save, BuilderJS gives you two things back: clean page HTML and a lossless JSON document. The JSON round-trips perfectly through getData() and load(), so a saved page reopens byte-for-byte. The library never owns your data, your users, or your servers — it only produces the markup. Where that markup is stored and served stays entirely inside the app you control.
Why a one-time license beats a SaaS subscription for embedding
If you are putting a builder inside a product you ship, ongoing per-seat SaaS pricing fights your business model — every customer you add raises your cost floor, and a vendor outage or price change becomes your outage. BuilderJS is sold as a one-time CodeCanyon purchase (item 27146783): Regular tier $52, Extended tier $99. You buy once, get the full source, and self-host. There is no monthly fee, no per-seat charge, no usage metering, and no phone-home telemetry. Contrast the embeddable-builder SaaS model: Builder.io's paid plans are charged per user per month and blend seat pricing with usage-based Agent Credits, on top of a free tier capped at five users (as of June 2026, source: https://www.builder.io/m/pricing). That is a fine model for a hosted product, but it scales your cost with your success. Owning the source means your unit economics stay flat and your roadmap is not gated by someone else's pricing page. Author support is time-boxed (roughly 6–12 months); the code itself is yours indefinitely.
What to look for in a page builder you embed
Five things separate a library you can ship from a demo you cannot. First, framework neutrality: it should mount in any DOM node without dragging in a specific framework, so it survives your next stack migration. Second, a clean data contract: a lossless save/load round-trip (JSON in, JSON out) means you can version, diff, and migrate documents safely. Third, real responsive primitives — a Grid/Cell system, not just absolute positioning — so pages actually reflow on mobile. Fourth, extensibility without forking: you should be able to register custom elements, widgets, and controls through a public API rather than patching internals you then have to re-patch on every update. Fifth, honest output: the HTML it emits should be the HTML you ship, not a runtime that phones home. BuilderJS hits all five — framework-agnostic mount, getData()/load() round-trip, a responsive Grid/Cell layout engine, Builder.registerElement for custom elements, and plain self-hosted output. The free and open-source libraries in this space are worthy tools; the trade-off is what you assemble and support yourself versus what arrives finished.
How BuilderJS fits — honestly
BuilderJS is the editor you embed, full stop. It builds responsive landing and web pages from real marketing blocks — PricingCards, forms, testimonials, headings, images, buttons, and more across 42 element types — laid out with a Grid/Cell system that reflows for mobile. When the page is done, it exports modern-CSS page HTML for web, or runs the same document through an Outlook-safe email export pipeline (flexbox-to-table, SVG-to-PNG, @media mobile-stack, MSO conditionals, CSS inlining) when you need email markup instead. What BuilderJS does NOT do is everything downstream of the markup: it does not host or publish pages, does not send email, does not run funnels, does not do CRM or automation, and does not process payments. For any vertical, the honest framing is simple — BuilderJS builds the template and markup; you bring the hosting, the sending, and the rest of your stack. To make ownership concrete, it ships reference PHP backends (MySQL/SQLite/S3 save, upload, auth, realtime) that you copy and own outright, and you can port them to Node, Go, or Python. It is multi-tenant capable through closure-captured configuration, but your app owns tenant isolation, seats, and billing.
At a glance — capabilities and categories
Engine: ~140KB vanilla-JS, framework-agnostic, mounts in any DOM node (React, Vue, Svelte, Angular, Next.js, Laravel, plain HTML). Editing surface: 42 element types, 59 property controls, 31 canvas overlays. Layout: responsive Grid/Cell system for pages that reflow on mobile. Marketing blocks: PricingCards, forms, testimonials, and standard content elements. Data: JSON-first with a lossless getData()/load() round-trip. Output: dual — modern-CSS page HTML for web, or Outlook-safe email HTML via the email export pipeline. Content starters: 30+ templates and 200+ samples, Litmus-tested across 22 email clients. Extensibility: custom Elements, Widgets, and Controls via Builder.registerElement; custom themes; i18n in 20+ locales with RTL support. Backends: reference PHP servers (MySQL/SQLite/S3, auth, upload, realtime) you copy and own, portable to other runtimes. AI: pluggable, vendor-neutral hooks you wire to your own provider. Licensing: one-time CodeCanyon purchase, full source, self-hosted, no SaaS and no per-seat fee. Live demo: builder.emotsy.com.
Explore
Frequently asked questions
-
Does BuilderJS host or publish my pages?
No. This is the core caveat: BuilderJS builds the page markup, and you host it in your own app. It does not publish, host, or serve live pages, and it has no hosting service behind it. When a user saves, the library hands you clean HTML plus a lossless JSON document via getData(); storing, rendering, and serving that output happens entirely inside the stack you already run.
-
Is BuilderJS a page builder library I embed, or a standalone platform?
It is a library you embed. BuilderJS is a ~140KB vanilla-JavaScript engine that mounts inside any DOM node in your own product — there is no separate account, dashboard, or platform to log into. You give your users an editing surface that lives under your brand and inside your app, and you own everything around it.
-
What does BuilderJS NOT do?
It is strictly the editor. BuilderJS does not send email, host or publish pages, run funnels, do CRM or automation, or process payments. For any use case, the honest framing is that BuilderJS builds the template and markup and you bring the hosting, the sending, and the rest of your stack. The reference PHP backends it ships handle save, upload, and auth — you copy and own them.
-
How is the one-time license different from a SaaS subscription?
You pay once and own the source. BuilderJS is a one-time CodeCanyon purchase (Regular $52, Extended $99) with no monthly fee, no per-seat charge, no usage metering, and no phone-home. By contrast, embeddable-builder SaaS like Builder.io charges per user per month and adds usage-based Agent Credits, with its free tier capped at five users (as of June 2026, source: https://www.builder.io/m/pricing). Author support is time-boxed to roughly 6–12 months, but the code is yours indefinitely.
-
How does BuilderJS compare to free open-source builders like GrapesJS or VvvebJS?
GrapesJS (BSD-3-Clause) and VvvebJS (Apache-2.0) are both genuinely free and open source as of June 2026 (sources: https://github.com/GrapesJS/grapesjs and https://github.com/givanz/VvvebJs). The difference is not price — it is what arrives finished. BuilderJS ships framework-agnostic with author support, builds both web pages and Outlook-safe email from one document, and includes reference backends you own. With the OSS options you assemble and support more of that yourself; both are solid choices depending on how much you want to build versus buy.
-
Can I extend BuilderJS without forking it, and which frameworks does it support?
Yes. You register custom Elements, Widgets, and Controls through the public Builder.registerElement API, add custom themes, and localize via i18n in 20+ locales with RTL — all without patching internals you would have to re-patch on update. It is framework-agnostic and mounts in any DOM node, so it runs in React, Vue, Svelte, Angular, Next.js, Laravel, or plain HTML.