Focus.AI Labs / Embeddable Whiteboards
Field Report — May 14, 2026
Embeddable Whiteboards
Miro, tldraw, Excalidraw, and more — what they are, how they compare, and how to drop one into your own site.
What is Miro?
Miro is the dominant SaaS collaborative whiteboard platform. Think of it as Figma for brainstorming — infinite canvas, sticky notes, diagrams, mind maps, templates, and deep integrations (Jira, Slack, Notion, Confluence).
Key facts:
- Founded: 2011 (originally RealtimeBoard)
- Business model: Freemium SaaS — free tier (3 boards), paid from $10/mo
- Scale: 70M+ users, 200K+ organizations
- Integrations: 160+ — Jira, Slack, Teams, Google, Adobe, Figma
- Use cases: Product roadmaps, design sprints, agile ceremonies, workshops, retrospectives
Embedding Miro: Miro has an official embed mode via <iframe> or a JavaScript SDK. You can embed a specific board (read-only or editable) into any webpage. The Miro Developer Platform also supports custom apps and widgets.
<!-- Miro iframe embed -->
<iframe src="https://miro.com/app/live-embed/BOARD_ID/"
width="100%" height="600"
allow="clipboard-read; clipboard-write">
</iframe>
Caveats: Paid plan needed above the free tier. Users need a Miro account to edit embedded boards. The embed feels like "someone else's app in a box."
What is tldraw?
tldraw is an open-source whiteboard library that you can drop into any web app as a native component — not an iframe, not a separate platform. It's the opposite of Miro's approach.
Key facts:
- Creator: Steve Ruiz (raised $2.7M seed in 2022)
- License: tldraw-core: Apache 2.0 / tldraw-sync: paid
- GitHub: 38K+ stars
- Philosophy: "A whiteboard for your product, not a product that is a whiteboard"
- Stack: TypeScript, React, Canvas/SVG rendering engine
Embedding tldraw: Install one npm package and you get a fully functional whiteboard component that renders into your own DOM. It's your code, your data, your users.
npm install tldraw
import { Tldraw } from 'tldraw'
import 'tldraw/tldraw.css'
function MyCanvas() {
return (
<div style={{ width: '100%', height: '600px' }}>
<Tldraw />
</div>
)
}
Real-time collaboration: tldraw has tldraw sync (paid) — a managed backend for multiplayer. Or roll your own sync with Yjs/WebSocket. tldraw stores state as JSON snapshots you can persist wherever you like.
Also worth knowing: tldraw has make-real — an experimental AI feature that turns drawings into working UI code (HTML/Tailwind). Fun, but not production-ready.
Miro vs tldraw
| Dimension | Miro | tldraw |
|---|---|---|
| Nature | Full SaaS platform | Open-source embeddable library |
| Embed approach | iframe / URL link | npm package, native React component |
| User accounts needed | Yes (Miro account to edit) | No — your app controls auth |
| Data ownership | Stored on Miro servers | Full control (JSON snapshots) |
| Real-time collab | Built-in, all plans | Via tldraw sync (paid) or self-hosted Yjs |
| Integrations | 160+ (Jira, Slack, etc.) | None — you build what you need |
| Customization | Limited (branding, templates) | Full — shapes, tools, UI, behavior all extensible |
| Pricing | Free tier; $10+/mo/seat | Free (core); sync is $25/mo or self-host |
| Best for | Teams needing a turnkey workspace with integrations | Developers embedding a canvas into their own product |
Other Tools Like These
The landscape of visual collaboration tools breaks into two camps: SaaS platforms (turnkey, multi-feature) and embeddable libraries (drop-in components). Here's the full field:
SaaS Platforms (Miro's world)
Mural
SaaSMiro's closest competitor. Strong on facilitation — timers, voting, private mode. Iframe embed is available on Business plan ($17.99/mo). Used heavily in design sprints and workshops.
FigJam
SaaSBy the Figma team. Sticky notes, stamps, music, voting, widgets. Free for up to 3 files. Embed via Figma's iframe. Best if you're already in the Figma ecosystem — your Figma components and libraries carry over.
Lucidspark
SaaSLucid's Miro/Mural competitor. Lighter than Miro but with that polished Lucid feel. Pairs with Lucidchart for the formal diagramming side.
Whimsical
SaaSBeautiful mind maps, flowcharts, wireframes, and sticky notes. Less of a "whiteboard" and more of a structured diagramming tool with a clean aesthetic. Stellar keyboard UX. No embed mode for non-enterprise plans.
Canva Whiteboard
SaaSIf you're already on Canva, the whiteboard is decent — infinite canvas, sticky notes, Canva assets. Embed is enterprise-only.
Embeddable / Open-Source Libraries (tldraw's world)
Excalidraw
Open SourceHand-drawn style, lightweight, E2E-encrypted collaboration via excalidraw.com. Can embed as iframe or install via @excalidraw/excalidraw npm package. 85K+ GitHub stars. Dead simple API — render a whiteboard in one React component. No account required for the hosted version.
npm install @excalidraw/excalidraw
import { Excalidraw } from '@excalidraw/excalidraw'
// Use directly as a React component
<Excalidraw
initialData={{ elements, appState }}
onChange={(elements, state) => saveState(elements)}
/>
When to pick over tldraw: You want the hand-drawn aesthetic. You need E2E encryption out of the box. You want the simplest possible drop-in.
draw.io (diagrams.net)
Open SourceThe veteran. Excellent for formal diagrams (flowcharts, UML, ERDs) but less of a freeform whiteboard. Embeddable via draw.io iframe integration or the mxGraph library underneath it. Great if your use case is structured diagrams rather than brainstorming.
Penpot
Open SourceOpen-source Figma alternative. Not a whiteboard per se — it's a full design tool — but includes a whiteboard mode for brainstorming. Self-hostable. Web-based, SVG-native. Worth watching but heavier than Excalidraw/tldraw for simple canvas needs.
Obsidian Canvas
If your users are in Obsidian, Canvas (.canvas JSON files) gives them an infinite canvas with cards, arrows, and embedded notes. Not embeddable externally, but notable if you're building anything Obsidian-adjacent.
How to Embed: Decision Matrix
| Your Need | Best Tool | Embed Method |
|---|---|---|
| Turn-key collaborative workspace, non-technical team | Miro | iframe / SDK — but users need accounts |
| Freeform canvas inside your React app, own data | tldraw | npm install tldraw — native React component |
| Hand-drawn sketches, E2E encryption, zero-config | Excalidraw | npm install @excalidraw/excalidraw or iframe |
| Formal diagrams (UML, flowcharts, ERDs) | draw.io | iframe embed or mxGraph library |
| Figma-native, already in Figma ecosystem | FigJam | Figma embed iframe |
| Structured mind maps & flowcharts | Whimsical | Link sharing (no iframe on free) |
| Self-hosted, needs auth/SSO control | Excalidraw or tldraw | npm package + your own backend |
How to Embed in Your Stuff
Here's the practical playbook for getting any of these into your site.
Option A: Quick iframe (any site, any framework)
Works with Miro, FigJam, Lucidspark, and Excalidraw embed. Simple but limited — the whiteboard is a black box.
<!-- Excalidraw embed (no account needed) -->
<iframe src="https://excalidraw.com/?embed=1&theme=light"
width="100%" height="500px">
</iframe>
Option B: npm package (React apps)
Works with tldraw, Excalidraw, draw.io. Full control. The whiteboard renders as part of your DOM, responds to your theme, stores data your way.
// tldraw — full-featured whiteboard
import { Tldraw } from 'tldraw'
// Excalidraw — hand-drawn style
import { Excalidraw } from '@excalidraw/excalidraw'
Option C: Headless / custom rendering
If you need to render whiteboard content without the editing UI (e.g., display saved diagrams), tldraw and Excalidraw both export their state as JSON. You can render the shapes yourself or use their static renderers.
// tldraw — get snapshot data
const editor = useEditor()
const snapshot = editor.store.getSnapshot()
const json = JSON.stringify(snapshot)
// Restore later
editor.loadSnapshot(JSON.parse(json))
Option D: Embed with collaboration
For real-time multi-user:
- Miro/FigJam: Built-in — just share the iframe/board link
- tldraw sync (paid, managed) or Yjs provider (free, self-host)
- Excalidraw: Uses E2E-encrypted rooms — no server setup needed for basic collab
Quick Start: Which One Should You Pick?
Pick tldraw if…
You're building a web app and want a whiteboard that looks and feels like your app. You need full data ownership. You're in React. You don't mind managing persistence yourself (or paying for tldraw sync).
Pick Excalidraw if…
You want the simplest possible drop-in whiteboard with a distinctive hand-drawn look. You care about E2E encryption. You don't need extensive custom tools or shapes. Smaller bundle size than tldraw.
Pick Miro / FigJam if…
Your users need a full collaborative workspace with integrations, templates, and facilitation features. You don't want to build or maintain the whiteboard infrastructure. Your users already have accounts.