An open-source tldraw alternative
tldraw is a great SDK — and its custom license, with a paid business tier, is how it's funded. If you'd rather build on an MIT license with no fee attached, that's exactly why Quickdraw exists.
Side by side
| Quickdraw | tldraw SDK | Excalidraw | |
|---|---|---|---|
| License | MIT | Custom | MIT |
| Free for commercial use, no paid tiers | paid business license tier | ||
| React component | |||
| Works without React | |||
| React Native package | |||
| Zero-dependency core | |||
| Pressure ink + palm rejection | pressure only | ||
| Diff-based sync primitive | via excalidraw-room |
Reflects public docs as of August 2026 — see tldraw's license page. Spot an error? Tell us and we'll fix it.
Where Quickdraw differs
The license is MIT. Use it in a commercial product, modify it, redistribute it. There's no license key to manage and no tier to upgrade to later. A small "Quickdraw" mark sits in the board's corner by default; turning it off is a boolean, not a purchase.
The core doesn't need React. tldraw's SDK is a React library. Quickdraw's engine is plain ESM with zero dependencies — it runs in any web page, and the React package is a thin binding over it. There's also a React Native package with Apple Pencil pressure and palm rejection, which tldraw doesn't ship.
Sync is a data-model primitive. Every change emits a
JSON-safe diff. Send it over a WebSocket, apply it with
store.applyDiff(diff, 'remote'), and remote changes stay
out of local undo history. No sync server product required.
Where tldraw is ahead
Honesty helps you choose: tldraw has years of polish, a bigger team, a richer shape ecosystem, and a hosted sync service. If you need embedded frames, custom shape plugins, or a supported sync backend today — and the license works for you — it's a strong choice. Quickdraw covers the core whiteboard experience completely and is improving in public, with an MIT license the whole way.
Two minutes to a board
npm install @quickdrawjs/react
import { Quickdraw } from '@quickdrawjs/react'
import '@quickdrawjs/core/quickdraw.css'
export default function Board() {
return <Quickdraw theme="light" grid="dots" />
} More: documentation · Excalidraw alternative · tldraw vs Excalidraw · blog