All featuresOrshot Embed

A white-label design editor. Inside your product.

Your users design inside your app, under your brand. Hosted, multi-tenant, and every design renders by API.

React & Vue SDKs · JWT auth · Webhooks

Full Studio via iframe, React & Vue

Templates, layers, text, images, multipage. Drop-in React and Vue components, or a plain iframe.

Multi-tenant ready

Per-user template storage, JWT-scoped sessions and isolated data, built for platforms with many end users.

White-label

Custom title, icon, accent color. Remove Orshot branding on higher tiers.

Video Timelines, Audio, Subtitles ready

A white-label video editor in the same embed. Renders to MP4, WebM or GIF.

Integrate

Copy, paste, your users are designing.

Turn on Embed, choose what users can do, and drop in an iframe or the React or Vue component.

  • Enable Embed in workspace settings in one click
  • Configure what users can and can't do
  • Copy the embed code or use the React/Vue SDK
  • Open with a specific template via URL params
Integration guide
<iframe
  src="https://orshot.com/embeds/YOUR_EMBED_ID?userId=user_123"
  title="Design editor"
  allow="clipboard-write"
  style="width: 100%; height: 720px; border: none;"
></iframe>

React install: npm i @orshot/embed-react

import { OrshotEmbed } from "@orshot/embed-react";

export function Editor() {
  return (
    <div style={{ height: 720 }}>
      <OrshotEmbed
        embedId="YOUR_EMBED_ID"
        templateId="TEMPLATE_ID"
        modifications={{ headline: "Summer sale" }}
        onTemplateUpdate={(t) => save(t)}
      />
    </div>
  );
}

Vue install: npm i @orshot/embed-vue

<script setup>
import { OrshotEmbed } from "@orshot/embed-vue";
</script>

<template>
  <div style="height: 720px">
    <OrshotEmbed
      embed-id="YOUR_EMBED_ID"
      template-id="TEMPLATE_ID"
      :modifications="{ headline: 'Summer sale' }"
      @template:update="save"
    />
  </div>
</template>
Multi-tenancy

One embed. Thousands of users.

Pass a userId and each user gets a private template library. Workspace templates stay shared.

  • Per-user template storage: each user sees only their own
  • Workspace templates shared across all embed users
  • JWT authentication for session security
  • User IDs hashed server-side, no PII stored
Per-user data docs
Control

Listen to events. Control from your app.

Hear every save and download, drive the editor from your code, and add buttons that call back into your app.

  • Real-time events for every user action
  • Post events to control the embed programmatically
  • Custom buttons with callbacks to your app
  • Webhook notifications for server-side workflows
Events & controls docs
window.addEventListener("message", (event) => {
  if (!event.origin.includes("orshot.com")) return;
  const { type, data } = event.data;

  switch (type) {
    case "orshot:template:update":
      saveDesign(data.id, data.pagesMeta);
      break;
    case "orshot:download:png":
    case "orshot:download:pdf":
      trackDownload(data);
      break;
  }
});
const iframe = document.querySelector("iframe");

// Fill layers by parameter name, or open another template pre-filled
iframe.contentWindow.postMessage(
  {
    type: "orshot:embed:control",
    templateId: "481",
    modifications: {
      headline: "Summer sale",
      hero_image: "https://example.com/photo.jpg",
      "page2@headline": "Only on slide 2",
    },
  },
  "*",
);
// Ask for the user's current design (png, pdf or html)
iframe.contentWindow.postMessage(
  { type: "orshot:request:template", requestId: "export-1", format: "pdf" },
  "*",
);

window.addEventListener("message", (event) => {
  if (event.data.type === "orshot:template:content") {
    upload(event.data.data.content); // data URI
  }
});
// A button you add in the dashboard, e.g. "Add to App",
// sends the rendered design straight to your page
window.addEventListener("message", (event) => {
  if (event.data.type === "orshot:custom_action") {
    const { base64, format, buttonId } = event.data;
    attachToOrder(buttonId, base64, format);
  }
});
Thinking about Konva or Fabric.js?

Konva and Fabric.js draw the canvas. You build the editor.

Both are great canvas libraries. The toolbar, layers, pages, storage and renders around them are yours to build.

KonvaFabric.jsOrshot Embed
Editing text on the canvasYou build it
Undo / redo and snap guidesYou build itYou build it
Multi-page designsYou build itYou build it
PNG, PDF and MP4 exportPNG, JPEGPNG, JPEG, SVG
Per-user templates and permissionsYou build itYou build it
Render saved designs by APIYour serversYour servers
Starter templates002,000+
See each feature coded in Konva, Fabric.js and Orshot EmbedCompared against Konva 10 and Fabric.js 7, September 2026.
Comparing img.ly or Polotno?

img.ly and Polotno sell an SDK. Orshot Embed is the running editor.

With an SDK you still host it, store each user's work and run the renders. Orshot Embed does all three for you.

img.lyPolotnoOrshot Embed
Price on the websiteSales quote$249 or $899/moFrom $39/mo
Editor hosted for youYou host itYou host it
Per-user templates and brand libraryYou build itYou build it
Per-user permissionsScopes in your codePartly your code
Render API for edited designsRun the engineSelf-host or pay per render
Zapier, Make and n8n appsNot offeredNot offered
Your own plugins and self-hostingNot offered
Moving from PolotnoMoving from img.lyPolotno prices from polotno.com; img.ly sells through sales only. Checked September 2026.

Frequently asked questions

What is a white-label editor?

A white-label editor is a design editor you embed in your own product under your own branding. Your users create and edit designs inside your app, on your domain, with your logo and colors. Orshot Embed is a white-label editor for images, videos and PDFs, and higher tiers remove Orshot branding entirely.

Can you white-label Canva?

No. Canva does not offer a white-label version of its editor that you can embed in your own product. If you want Canva-style editing inside your app, Orshot Embed gives your users a full design editor on your domain, locked to your brand, and they never see Orshot.

Does Orshot Embed include a white-label video editor?

Yes. The embedded editor includes video editing with a timeline, audio tracks and subtitles, and renders to MP4, WebM or GIF. The same embed covers image and multi-page PDF editing, so one integration handles all three formats.

How do I embed the design editor in my app?

Add it as an iframe or use the React and Vue SDKs. Authentication runs over JWT, the embed is locked to your domains, and webhooks notify your backend when users save or export. Most integrations start from a single copied snippet.

Should I build my editor on Konva or Fabric.js instead?

Only if you need your own engine. Konva and Fabric.js draw shapes on a canvas, but text editing (on Konva), undo/redo, pages, PDF and video export, per-user storage and server rendering are all left to you. Orshot Embed ships those, plus 2,000+ templates. Our Konva vs Fabric.js guide shows each feature coded in both libraries next to Orshot Embed.

Is the embedded editor multi-tenant?

Yes. Per-user data keeps each of your customers' templates and designs separate, so users never see each other's work. One Orshot workspace can serve thousands of end users through a single embed.
Ready to embed?

Your app. Their designs.

Embed starts at $39/mo. Multi-tenancy, webhooks and no branding from $160/mo.