Self-hosted page builder

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