Excalidraw

Virtual hand-drawn style whiteboard

Developer Tools & Git ★ 132.7k stars Easy setup MIT

Excalidraw is an open-source virtual whiteboard for sketching diagrams with a hand-drawn feel. The self-hosted version supports real-time collaboration through a companion server.

Key features

  • Hand-drawn diagram style
  • Real-time collaboration
  • End-to-end encrypted rooms
  • Exports to PNG and SVG

Pros & cons

Strengths

  • Delightful hand-drawn style
  • Works offline in browser
  • Very easy to use

Trade-offs

  • Collaboration needs extra server
  • No built-in persistence

Excalidraw replaces

Last reviewed Aug 25, 2026 · 684 words

Excalidraw is the whiteboard that makes every diagram look pleasantly hand-drawn, and self-hosting the core of it is almost suspiciously easy — one stateless container serving the editor. The catch worth knowing before you deploy: that container is the editor only. Your drawings live in each browser's localStorage, and the real-time collaboration you've used on excalidraw.com needs a separate room server. Neither gap is hard to close, but closing them knowingly beats discovering them after a "saved" diagram vanishes with a cleared browser cache.

The five-minute deploy, and what it contains

services:
  excalidraw:
    image: excalidraw/excalidraw:latest
    ports:
      - "8082:80"
    restart: unless-stopped

That serves the full editor: infinite canvas, the hand-drawn aesthetic, shape libraries, keyboard-driven flow, dark mode, PNG/SVG export — genuinely everything single-player, working offline once loaded, PWA-installable. What it deliberately isn't is a service: no accounts, no server-side storage, no document list. Each browser keeps its current canvas in localStorage, which survives normal restarts but is one aggressive cleanup, private window, or device switch away from gone. The operating rule: treat the canvas as a scratchpad and export anything worth keeping — of which more below, because the export format is the actual killer feature.

.excalidraw files are the real persistence layer

Save As produces a .excalidraw file — plain JSON containing every element, editable forever. Better: PNG and SVG exports can embed the scene (tick "embed scene" when exporting), so the diagram image you drop into docs doubles as its own source file — drag it back onto any Excalidraw canvas and it reopens fully editable. That one feature turns persistence from a weakness into a workflow: diagrams live in the repo next to the code they describe, versioned by Gitea like everything else, with no database to back up because the artefacts are the storage. The same JSON format is what Trilium, Obsidian, and half the note-taking world embed via plugins, so drawings made on your instance stay portable across your whole toolchain — the own-your-data property in its purest form.

Collaboration needs the second container

Live multi-cursor collaboration routes through a websocket room server (excalidraw-room) — small, stateless, one more container plus pointing the frontend at it via build-time environment (VITE_APP_WS_SERVER_URL), which in practice means the community images or a small custom build rather than the stock image. Scene data in a live session is end-to-end encrypted (the key rides in the URL fragment, never reaching the server), so even collaborating through your server, the server can't read the board. Sizing is a non-issue — rooms are relays, not renderers. The honest question is whether you need it: for a household or solo use, sending an exported file covers 90% of sharing, and the room server is the piece to add when actual simultaneous editing (pair design sessions, remote retros) is the use case. Either way the whole stack stays behind Caddy with your usual access rules — the editor page itself has no auth of its own.

Where it fits among the whiteboards

Excalidraw's sweet spot is thinking diagrams: architecture sketches, flow charts, whiteboard-session captures — anything where the hand-drawn look correctly signals "draft, argue with it". It intentionally isn't Miro (no infinite workspace-of-workspaces, templates, voting) and isn't draw.io (which wins for pixel-precise formal diagrams with stencil libraries). The three coexist happily; Excalidraw is the one that opens fastest and makes ugly-first-draft thinking feel legitimate, which is why it's the tool that actually gets used.

What I'd do

The one-liner container behind the proxy, PWA-installed on every machine, embed-scene PNG exports as the standard artefact committed next to relevant code, and the room server added only when a real pair-editing need shows up. Skip inventing persistence infrastructure the tool was designed not to need — the exported files in git are the system, and it's a better one than most apps' databases.

Compare Excalidraw

1 head-to-head comparisons.

Similar developer tools & git apps