Open source · v1.0.0

Drag-drop email & page builder
you ship in your product.

JSON-first · open source-ready · no framework lock-in. Drop one script tag, mount a builder, and let your users design their own pages — saved, exported, and shipped.

  • ~1,000 teams shipping
  • 4.4 CodeCanyon rating
  • 62 themes & samples
How it works

Three steps from script tag to shipped page.

  1. Mount the builder

    Add one script tag and a container div. The builder boots inside any framework — pure HTML, React, Vue, or PHP.

    new Builder({ container: '#editor' });
  2. Let users design

    Drag elements onto the canvas, edit copy in place, swap themes, upload assets. All bidirectional with JSON state.

    builder.load(THEME_JSON, THEME_TEMPLATES, THEME_CONFIG_DATA, MEDIA_URL);
  3. Save & export

    Get JSON for your database, rendered HTML for your CDN, or a full theme bundle ZIP for portability.

    const data = builder.getData(); const html = builder.getHtml();
Live in your browser

Drop one script tag, mount the editor.

Five lines of HTML + a single Builder constructor. No build step, no framework. The screenshot on the right is exactly what the snippet on the left produces.

snippet.php (excerpt — view full file →)
<link rel="stylesheet" href="/dist/builder.css">
<script src="/dist/builder.js"></script>

<div id="WidgetsContainer"></div>
<div id="MainContainer"></div>
<div id="SettingsContainer"></div>

<script>
  const builder = new Builder({
    mainContainer:     '#MainContainer',
    widgetsContainer:  '#WidgetsContainer',
    settingsContainer: '#SettingsContainer',
  });
  builder.load(THEME_JSON, THEME_TEMPLATES, THEME_CONFIG_DATA, MEDIA_URL);
</script>
View full snippet.php

What ships in the package

  • 35 working examples basic · backend · cookbook
  • 62 themes & samples standard + extended
  • 8 cookbook recipes copy-paste chrome variants
  • 6 backend recipes PHP · MySQL · S3 · Auth
  • v1.0.0 engine version latest, May 2026
API at a glance

The methods + events you'll reach for first.

Six methods cover > 90 % of typical integration. Four events feed every reactive UI you'll wire on top. Click any row to jump into the doc page.

Events

  • document:changed Fires after every canvas mutation. Throttle if listening for autosave.
    builder.events.on('document:changed', () => save(builder.getData()));
  • document:saved Fires after Builder.save() resolves. Use to clear dirty-state indicators.
    builder.events.on('document:saved', () => dirtyDot.classList.remove('on'));
  • mode:changed Fires when design ↔ preview flips. Driven by setMode() OR shortcut.
    builder.events.on('mode:changed', m => previewBtn.classList.toggle('on', m.to === 'preview'));
  • element:added / element:removed Fires when blocks enter or leave the canvas. Reflect into your own outline panel.
    builder.events.on('element:added',   ev => outline.add(ev));
    builder.events.on('element:removed', ev => outline.remove(ev));

Full reference in /docs/ — including elements, controls, overlays, and the I18n locale-pack contract.

Made for developers

No magic. No lock-in.

  • Pure HTML / JS

    Drop one script tag. No framework lock-in, no build step, no `node_modules` to vendor. Works in React, Vue, Laravel, Rails, plain PHP.

    Open the builder
  • Extend everything

    Subclass `Element`, `Control`, or `Widget` to add custom blocks. Every primitive is documented in the design system and matched in code.

    See the design system
  • Open source-ready

    PSR-12 sample backend, full developer docs in-package, MIT-style demo. Read the source before you buy — no surprises after.

    Read the docs
Questions

Frequently asked questions.

Pre-purchase answers covering license, framework support, bundle size, and the rest.

  • Is BuilderJS open source?

    The demo (demo/) and example code ship MIT-style. The engine source (src/) is part of the buyer-package — you receive the full source on purchase, with lifetime updates and 12 months support.

  • Does it work with React, Vue, or Svelte?

    Yes. BuilderJS mounts inside any DOM node. The container can be any framework's render target. See examples/cookbook/ for 8 chrome variants you can drop into any framework.

  • Can I use it commercially?

    Yes. The license permits commercial use in your products with no per-seat or per-end-user fees. See LICENSE.md in the buyer-package.

  • What backend does it require?

    None for read-only or client-side-only use. For save/load, any HTTP backend works — examples/backend/ ships PHP + SQLite/MySQL/S3 references; port to Node/Go/Python in ~20 LOC.

  • How is BuilderJS different from TinyMCE or GrapesJS?

    JSON-first round-trip + a real theme system + production-grade backend recipes. See the comparison table earlier on this page.

  • What's the bundle size?

    Engine: ~140 KB minified + gzipped. Plus the theme bundle (~5–30 KB per theme) and demo CSS (~80 KB) if you use the showcase chrome. All three lazy-loadable.

  • Does it support i18n?

    Yes. Built-in I18n.t() API; ship custom locale packs. The full i18n integration example lives at examples/extensions/4-i18n-locale-pack/ (Phase C ships the full walkthrough; pre-Phase-C the page renders a placeholder).

  • Can my users save their own designs?

    Yes. builder.getData() returns serializable JSON; builder.load(data, ...) restores the design. Your backend stores it. See examples/backend/1-mysql/.

  • What chrome variants come with BuilderJS?

    8 ready-to-paste cookbook variants — minimal, compact 2-col, compact 3-col, rich 3-col with header, sidebar-only, canvas-only, mobile, and card. Each is a 4-file directory you copy verbatim. See examples/cookbook/.

  • Is there a free trial?

    The full live builder runs at /builder.php — no signup, no payment, all features. Try it before you buy.