BlogComparisons

A Polotno Studio Alternative with Unlimited Loads and API

Orshot Embed is a hosted Polotno alternative: an iframe editor plus a render API from $39/month, vs a $249+ Polotno license you host yourself.

(Updated )

Polotno is a JavaScript image editor SDK for building canvas editors inside a React app. You integrate it, and your team owns the editor from there.

But Polotno is an SDK: a library you integrate, host and maintain yourself. The license starts at $249/month (Grass Roots, subject to review) and the standard Self-Serve license is $899/month. You still run the storage, database, render servers and user accounts around it.

I built Orshot because I wanted that part done for me. Orshot Embed puts a full design editor in your app with one iframe (or a React or Vue component). Hosting, storage and a REST API for rendering come with it.

Try Orshot EmbedEmbed from $39/mo, API free to try.

This is the editor your users would get: "Acme Studio" is a made-up brand running a real Orshot embed. Switch templates, edit anything, then press "Add to App" to send the design to this page the way your app would receive it. Nothing you change is saved.

Loading the editor…

Press “Add to App” in the editor and this page receives the PNG, the way your app would.

for a white-label editor
$160/mo
Orshot$160/mo
Polotno$249/mo
extra for 20,000 renders a month
$0
Orshot$0
Polotno$80
domains on one plan
5
Orshot5
Polotno1
Public prices on Sep 22, 2026, for Orshot Grow. Polotno's $249 tier needs a manual review; Self-Serve is $899/mo for one domain. Cloud Render is $0.004 per image.

What's Different

If you're evaluating Polotno SDK to embed a design editor, here's how Orshot Embed compares:

FeatureOrshot EmbedPolotno SDK
IntegrationOne iframe, or the React/Vue SDKAn SDK you build your editor around
Integration EffortPaste the embed code, configure in the dashboardYou wire up storage, accounts, saving and export
FrameworkAny stack, since it's an iframeReact inside; Vue, Angular and no-framework setups wrap it
Free OptionFree plan with 100 credits a month, about 100 images (embed from $39/mo)60-day trial on a dev server, with a "Powered by Polotno" credit
Starting Price$39/month: embed plus 1,500 credits (about 1,500 images)$249/month Grass Roots (reviewed), $899/month Self-Serve
Pricing ModelFlat plan. API renders, workflow renders and MP4 downloads count; opening the editor doesn'tFlat license. Cloud Render billed on top
Hosting and StorageFully managedYou host the editor, designs and uploads
Rendering APIREST API on every planSelf-host polotno-node, or Cloud Render at $0.004/image
User DownloadsPNG, PDF and HTML from the embed, plus MP4 on video pages, which uses renders*Built into their UI, running on your hosting
Multi-page TemplatesNative carousel/PDF support, all pages in one API callNative pages and multi-page PDF export
VideoMP4/WebM/GIF with per-layer controls and animationsMP4 encoded in the browser, or Cloud Render at $0.03/minute
White-labelYour title, icon and accent color from the dashboard. Orshot branding can be removed*Full control in code (paid license)
Per-user permissionsLock create, delete, uploads, downloads and more per user from the dashboard*, or per session in a JWT on any embed planYou build accounts and permission checks
Template ImportCanva, Figma, AIFigma, PSD, PDF and SVG import
WebhooksBuilt in: template.create, template.update, template.delete*Client-side hooks; syncing to your server is yours
Browser EventspostMessage events for saves and downloads*Store events inside your own app
Social PublishingBuilt in, 15+ platformsBuild your own

* Available on specific plans. See pricing for what each plan includes.

The Real Problems with Polotno

Based on conversations with developers who've evaluated or used Polotno:

1. It's an SDK, Not a Ready-to-Use Embed

Polotno gives you the components for a canvas editor. The product around it is yours to build. You need to:

  • Set up React (Vue, Angular and plain JS setups still load the React core)
  • Host the editor on your infrastructure
  • Store designs, uploads and fonts in your own database and bucket
  • Run rendering yourself (polotno-node drives headless Chromium through Puppeteer) or pay for Cloud Render
  • Build user accounts, and decide who can edit, delete or export what

Orshot Embed is the opposite approach. One iframe gives your users a full design editor, and Orshot hosts the editor, the designs and the uploads. Need to render at volume? The REST API is part of every plan.

2. The License Is Only the Start

Polotno's pricing is a flat license:

  • Grass Roots, $249/month: subject to manual review, for small operators (under 50 people) in lower-purchasing-power markets, with limited volume
  • Self-Serve, $899/month: unlimited use on a single domain under one brand family
  • Enterprise: custom pricing

The 60-day trial runs on a dev server only, and trial keys always show a "Powered by Polotno" credit. Their Cloud Render API is extra: $0.004 per image and $0.03 per video minute.

Orshot's embed starts at $39/month with 1,500 credits (about 1,500 images). Opening the embed, designing in it and downloading images, PDFs or HTML don't use renders. API renders, workflow renders and MP4 downloads from the embed count against your plan.

White-label, user downloads, events and webhooks start at $160/month (20,000 credits, about 20,000 images), which also adds per-user data for 50 embed users.

3. React Inside, Wrappers Outside

Polotno 4 targets React 19. Their docs cover Vue, Angular and no-framework setups, but those wrap the same React core. So React ships in your bundle either way.

Orshot Embed is framework-agnostic. It's an iframe, so it works in React, Vue, Angular, Svelte, WordPress, Webflow or anything that renders HTML:

<iframe src="https://orshot.com/embeds/YOUR_EMBED_ID" title="Orshot Embed" allow="clipboard-write" style="width: 100%; height: 600px; border: none;"></iframe>

Prefer a component? There's a React SDK (@orshot/embed-react) and a Vue SDK. The REST API works from any backend: Python, Node, PHP, Go.

4. Templates Don't Become an API on Their Own

Polotno handles multi-page designs well and exports multi-page PDFs. Filling a template with data is where the work starts.

Their variables are {name} placeholders in the design JSON. Your backend swaps in values, then renders the result itself or sends it to Cloud Render.

In Orshot, you mark any layer as dynamic and the template becomes an API endpoint. Multi-page templates work the same way: design a carousel in Studio, then generate every slide in one API call. Same for multi-page PDFs and multi-page videos.

5. Building vs Buying Takes Real Time

Polotno's site says customers save "6+ months" of internal building time by using their SDK. That's fair, but you still own the integration: storage, rendering, accounts and permissions. Building on the libraries underneath is more work again; see Konva vs Fabric.js for the same editor features coded in both.

With Orshot, you can go from signup to rendering via API in under an hour. Design a template, grab your API key, start rendering. Adding the embed is a copy and paste.

What You Get with Orshot

Beyond solving Polotno's integration overhead:

  • One-line embed - Orshot Embed drops a full design editor into your app. Users design in it without using renders. They can download PNG, PDF and HTML at no render cost*. MP4 downloads on video pages use renders from your plan.
  • Customization without code - Configure everything from your dashboard:
    • Branding - Your accent color, icon and title (Orshot branding can be removed*)
    • Template controls - Show or hide the template list, allow delete and rename, enable carousels
    • Download permissions - Turn user downloads on or off*
    • Language - 6 languages (English, Spanish, Portuguese, French, German, Russian) with optional user switching
    • Domain security - Restrict the embed to your domains
  • Per-user data and permissions* - Give each of your users a private template library and lock actions per user (create, delete, uploads, downloads and more) from the dashboard. Locks set per session in your JWT work on any plan with the embed.

Built-in webhooks - Get notified on your server when users create, update or delete templates*. Trimmed payload:

{
  "event_type": "template.update",
  "template": {
    "id": "abc123",
    "name": "Spring promo",
    "thumbnail_url": "https://..."
  },
  "workspace_id": "workspace_789",
  "user_id": "user_456",
  "timestamp": "2026-09-22T10:30:00Z"
}

Browser events via postMessage - Listen for saves and downloads in your app*:

window.addEventListener("message", (event) => {
  if (event.origin !== "https://orshot.com") return;
  const { type, data } = event.data;

  if (type === "orshot:template:update") {
    console.log("Template saved:", data.id);
    // Update your UI, trigger workflows, etc.
  }
  if (type === "orshot:download:png") {
    console.log("User downloaded a PNG");
  }
});

REST API included - Every template becomes an API endpoint. The API is part of every plan, not a separate add-on like Polotno's Cloud Render.

A capable design editor - Orshot Studio includes features your users will use:

  • Gradient text - Linear and radial gradients on any text layer, picked with Colorshot, our open source gradient picker
  • Auto-scale text - Text shrinks to fit its container
  • Smart Stacking - Position elements relative to each other for dynamic layouts
  • Video layers - Add video elements with trim, loop and mute controls
  • Dynamic layers - Mark any layer as dynamic for API/parameter overrides
  • Multi-page templates - Create carousels, slideshows, multi-page PDFs
  • Background removal - One-click AI background removal
  • Import from Canva/Figma - Bring existing designs in

Multi-page templates - Create carousels, multi-page PDFs and multi-page videos. See how it works.

Video generation - Export to MP4, WebM or GIF. Control each video layer with .trimStart, .trimEnd, .muted and .loop parameters via API. Add per-layer animations: fade ins, slide transitions, scale effects, visibility timing and staggered choreography. Learn more.

Import from anywhere - Clone from Canva, import from Figma, or use AI to generate templates. Much faster than designing from scratch.

No-code integrations - Make, Zapier, n8n. Connect to thousands of apps without writing code. Plus MCP Server for AI apps and CLI for terminal workflows.

Social Publishing - Render and post to 15+ social platforms in one API call. Publish now, schedule, or save as a draft.

* Available on specific plans. See pricing for what each plan includes.

Cost Comparison: Real Numbers

Here's what a typical embed setup costs on each, using list prices.

Scenario: 5,000 API images a month, plus your users designing and downloading in a white-label editor

Cost ComponentOrshot ($160/mo)Polotno (Self-Serve)
Plan or License$160/month$899/month
Credits Included20,000/month (about 20,000 images)Self-hosted, or pay per render on Cloud Render
5,000 Image RendersIncluded$20 on Cloud Render (5,000 × $0.004)
White-label EditorIncludedIncluded with a paid license
User DownloadsIncluded (MP4 uses renders)Built into their UI, on your hosting
Hosting, Storage, DatabaseIncludedYour cost
Per-user Libraries & Permissions50 embed usersYou build it
Monthly Total$160$919 with Cloud Render, plus your hosting

If you qualify for Grass Roots at $249 (reviewed, for small operators), the gap is smaller. Hosting, storage and rendering are still yours to run.

If you don't need white-label or user downloads, the $99 tier covers 5,000 credits a month, enough for this scenario's 5,000 images (Orshot branding stays on the embed). At 20,000 images a month, Orshot is still $160. Polotno's Cloud Render fees alone would be $80 on top of the license.

Bring Your Polotno Designs With You

You don't start over. Paste the JSON from Polotno Studio, or the store.toJSON() output your app already saves, and each design becomes an Orshot template. Text and image layers turn into API parameters on import, and you can bulk import up to 10 files at once.

Step-by-step in the Polotno import docs, and the full move, from editor to renders, in the Polotno migration guide.

When a Self-Hosted SDK Fits Better

An SDK you host is the better route if you need:

  • Code-level changes to every editor component
  • The editor and rendering on your own servers
  • PSD import or PPTX export
  • A complex design product of your own, where the editor is the product

If you want a design editor in your app without running the stack behind it, with a REST API ready for rendering, Orshot gets you there in minutes instead of weeks.

Getting Started with Orshot Embed

If you're evaluating alternatives to Polotno SDK, here's how to get an editor running in your app:

Step 1: Configure Your Embed (5 min)

Sign up for Orshot and open Orshot Embed from your workspace sidebar. Then:

  1. Enable embed and add your allowed domains (including localhost:3000 for testing)
  2. Customize branding - accent color, title, custom icon
  3. Set permissions - template visibility, carousels, and downloads*
  4. Add a webhook URL (optional)* - receive template.create, template.update and template.delete events

Step 2: Add It to Your App (2 min)

These are the pieces embed customers wire up most, from the first iframe to syncing designs to your backend:

One iframe, with a userId so each of your users gets their own templates and uploads (per-user data*), and a templateId to open a design straight away.

<iframe
  src="https://orshot.com/embeds/YOUR_EMBED_ID?userId=user_123&templateId=YOUR_TEMPLATE_ID"
  title="Orshot Embed"
  style="width: 100%; height: 700px; border: none; border-radius: 8px;"
  allow="clipboard-write"
></iframe>

Prefer a component? @orshot/embed-react mounts the same editor and hands you callbacks for its events.

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

export default function Editor() {
  return (
    <div style={{ height: "700px" }}>
      <OrshotEmbed
        embedId="YOUR_EMBED_ID"
        templateId="YOUR_TEMPLATE_ID"
        modifications={{ headline: "Spring sale" }}
        onTemplateCreate={(data) => console.log("Created:", data)}
        onError={(err) => console.error(err)}
      />
    </div>
  );
}

Listen for saves and downloads in your page to sync your database or track usage (with events on)*.

window.addEventListener("message", (event) => {
  if (event.origin !== "https://orshot.com") return;
  const { type, data } = event.data;

  if (type === "orshot:template:update") saveToYourDb(data);
  if (type === "orshot:download:pdf") trackDownload(data);
});

Fill layers from your own UI or data without reloading the editor. Keys are the parameter names in your template. Needs events on*.

const iframe = document.querySelector("iframe");

iframe.contentWindow.postMessage(
  {
    type: "orshot:embed:control",
    modifications: {
      headline: "Hello from Acme",
      "page2@image": "https://example.com/product.jpg",
    },
  },
  "*",
);

Add a webhook URL and your server gets a POST whenever a user creates, updates or deletes a template*. Trimmed:

{
  "event_type": "template.update",
  "template": {
    "id": "abc123",
    "name": "Spring promo",
    "canvas_width": 1080,
    "canvas_height": 1080,
    "thumbnail_url": "https://..."
  },
  "workspace_id": "workspace_789",
  "user_id": "user_123",
  "timestamp": "2026-09-22T10:30:00Z"
}

Turn on Require signed token and your server signs a short-lived JWT for each session. sub is the user, and permissions can lock actions for that session.

import jwt from "jsonwebtoken";

const token = jwt.sign(
  { sub: "user_123", permissions: { "template/delete": true } },
  EMBED_SIGNING_SECRET,
  { expiresIn: "15m" },
);

const src = `https://orshot.com/embeds/YOUR_EMBED_ID?token=${token}`;

Full references: events, controlling the embed, webhooks and JWT authentication. New to the embed? Start with the introduction or this walkthrough.

That's it. A full design editor in your app with webhooks and events. No React setup, no component wiring, no rendering servers.

* Available on specific plans. See pricing for what each plan includes.

Embed Features at a Glance

FeatureWhat It Does
BrandingYour accent color, title and icon. Orshot branding can be removed*
Domain restrictionsEmbed only works on your specified domains
Template controlsShow/hide templates, allow delete/rename, enable carousels
Download permissionsTurn user downloads on or off: PNG, PDF, HTML, plus MP4 on video pages*
Per-user permissionsLock actions per user from the dashboard*, or per session in your JWT (any embed plan)
Multi-language6 languages, optional user switching
WebhooksServer-side notifications for template events*
Browser eventsReal-time postMessage events for frontend integration*
Template pre-loadingOpen embed with a specific template via URL param

* Available on specific plans. See pricing for what each plan includes.

Common questions

How much does the Polotno SDK cost?

What's the difference between Polotno Studio and the Polotno SDK?

Is there an open-source alternative to Polotno?

Can I import my Polotno designs into Orshot?

Can I white-label the editor and keep each user's designs separate?

Do I need React to use Orshot Embed?

Start Building

If you've been evaluating Polotno SDK and want something ready to use, start here, or follow the Polotno migration guide. The Free plan covers the API, and the embed starts at $39/month.

You can always dig into SDK-level solutions later if you need that control, but most teams don't. Comparing other editor SDKs? See the img.ly alternative too.

Related posts