A sketchy-style whiteboard that also ships as a React component
Excalidraw is an MIT-licensed whiteboard that draws shapes, arrows and text as if sketched by hand, on an infinite canvas. It comes in two forms: the excalidraw.com web app, and the @excalidraw/excalidraw npm package, a React component that puts the same canvas inside another application. According to the README, Notion, Replit, CodeSandbox and Obsidian's Excalidraw plugin all embed it.
A JSON file format and a Mermaid importer
- Drawings are plain JSON: a scene saves as an
.excalidrawfile and exports to PNG, SVG or the clipboard. - Arrows stay attached: an arrow bound to a shape follows it when the shape moves, and it can carry a label. Version 0.18.0 added elbow arrows.
- Mermaid comes in as editable shapes: the editor turns a Mermaid definition into drawn elements that can then be reworked by hand.
- Encrypted collaboration on excalidraw.com: the hosted app adds live multi-user editing with end-to-end encryption, autosave to the browser, read-only share links and offline use as a PWA.
The same canvas in a React app, VS Code or Obsidian
- Add a whiteboard to an existing React app through the npm package.
- Keep documentation diagrams as
.excalidrawfiles next to the code and publish their SVG exports. - Open those files in VS Code with the extension the README links to, or in Obsidian with the Excalidraw plugin.
Collaboration stays on excalidraw.com, and the package is still 0.18
A self-hosted instance can't share drawings or host live sessions. The excalidraw/excalidraw Docker image contains the client alone, and the development docs state that self-hosting doesn't currently support sharing or collaboration. On excalidraw.com those features run on the team's own services, declared in .env.production: a WebSocket collaboration server, an API for shared links and a Firebase project. The collaboration server, excalidraw-room, sits in a separate repository, and an issue opened in May 2021 is still asking for docs on running it yourself. The same docs page says the image ships without analytics or tracking libraries.
The npm component leaves out collaboration and requires React. The README calls excalidraw.com a minimal showcase of what can be built with Excalidraw: collaboration and offline mode belong to that app, and the team plans to bring them to the package later as drop-in plugins. The package expects React 17, 18 or 19 as a peer dependency, and since 0.18.0 it ships as ESM only; the release notes warn that Create React App no longer works without a workaround. Fonts load from a CDN by default; serving them yourself means copying the package's fonts folder and setting window.EXCALIDRAW_ASSET_PATH.
The latest release, 0.18.1 from April 21, 2026, is a security patch. It backports a fix for a Mermaid XSS flaw (CVE-2025-54881) to the 0.18 line. The last release with new features, 0.18.0, dates from March 11, 2025, and the package has not reached 1.0. Between releases, the docs point to the @next npm tag for unreleased changes. The most recent commit landed on October 23, 2026.
The free version of excalidraw.com keeps one scene, in the browser. The pricing page of Excalidraw+, the project's paid plan, gives free users one infinite scene, unlimited collaborators and ten generative AI requests a day. For $6 per user per month, Excalidraw+ adds cloud storage, unlimited scenes and folders, team management and export of frames to PDF and PPTX.
