Excalidraw: An Embeddable Hand-Drawn Whiteboard for React Apps
Virtual whiteboard for sketching hand-drawn like diagrams
At a glance
- What is it?
- Excalidraw is an open source, MIT-licensed whiteboard that renders hand-drawn style diagrams and ships as a React component. This review covers its core canvas, the hosted app's collaboration features, and what you trade off when you embed it.
- Who is it for?
- Adopt Excalidraw if you need a free, embeddable whiteboard for React and can accept that real-time collaboration and end-to-end encryption are not yet in the npm package. Do not adopt it if your product requires multi-user editing out of the box or if you need a non-hand-drawn aesthetic.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.
Star history
- excalidraw/excalidraw135,641 ★ · +7,619
| Repository | 2026-07-21 | 2026-11-13 |
|---|---|---|
| excalidraw/excalidraw | 128k | 135.6k |
7,619 Stars in the last 115 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
What Excalidraw Solves and Who It Is For
Excalidraw solves a narrow but common problem: giving users a freehand sketching surface that produces clean, hand-drawn looking diagrams without requiring design skill. It is for developers building React applications that need an embedded whiteboard, such as diagramming tools, note-taking apps, or planning interfaces. The hosted site excalidraw.com is a minimal showcase of what the package can do, not the product itself. The repository is the source for both the npm package and the hosted app, which means you can see exactly how the showcase is built. The target user is a frontend engineer who wants a canvas with shapes, arrows, and free-drawing, and who is willing to integrate a third-party component rather than build one from scratch.
The Core Mechanism: A Canvas with a Hand-Drawn Renderer
The package is a React component that renders an infinite, canvas-based whiteboard. The hand-drawn style is applied to every shape, including rectangles, circles, diamonds, arrows, and lines. The canvas supports zoom and panning, which are essential for an infinite surface. The data model is an open format: drawings export as a .excalidraw JSON file. This is a key architectural point. The JSON is the source of truth, so you can save, load, and share drawings outside the app. The package also supports image insertion, shape libraries, and localization, which are all features you would expect from a mature editor.
Getting It Running: Installation and Integration
Installation is straightforward for a React project. The README gives two commands. With npm: npm install react react-dom @excalidraw/excalidraw. With yarn: yarn add react react-dom @excalidraw/excalidraw. The install command includes react and react-dom alongside the package. After installation, you import the component and render it. The README does not show a code example, but the documentation at docs.excalidraw.com covers the integration details. The package is published on npm under the scoped name @excalidraw/excalidraw. For running the repository locally for development, the README points to a separate Development Guide, which is not included in the README. That separation is worth noting: the npm package is the integration path, while the repo's excalidraw-app directory contains the hosted app's source.
The Hosted App vs. The npm Package: A Feature Gap
The hosted app at excalidraw.com includes features that the npm package does not yet have. Those features are real-time collaboration, end-to-end encryption, local-first autosave to the browser, and shareable readonly links. The README states that these will be added as drop-in plugins for the npm package in the future. That is a clear limitation for anyone embedding the package today. If you need multi-user editing, you cannot get it from the package right now. You would have to build your own collaboration layer on top of the JSON format, which is a significant engineering effort. This gap is the single most important factor when deciding whether to adopt the package.
Limitations and Failure Modes
The most obvious limitation is the missing collaboration features in the npm package. The README says they are coming, but there is no timeline. Another limitation is the hand-drawn style itself. It is the project's identity, but it is also a constraint. If your product needs precise, technical diagrams with straight lines and exact angles, Excalidraw will fight you. The README lists the editor as customizable and the .excalidraw JSON format as open. You need to check whether your backend can store and parse that format, or whether you need to convert it to something else. The package is React-only, so it is the wrong tool for a non-React frontend. Finally, the README lists a wide range of tools, but it does not mention any advanced features like layers, grouping, or alignment guides. Those may exist, but the README does not confirm them, so you should verify before assuming.
Alternatives and Their Different Approaches
The main alternative is to build a whiteboard from scratch using a canvas library like Fabric.js or Konva. That approach gives you full control over rendering and interaction, but it requires you to implement every tool, the undo/redo stack, and the export format yourself. Excalidraw gives you all of that out of the box. Another alternative is to use a diagramming tool like Mermaid, which generates diagrams from text. Mermaid is not a whiteboard; it is a declarative syntax that renders to SVG. That is a different approach entirely: you type a description, and the diagram is generated. Excalidraw is freehand. The choice depends on whether your users need to sketch freely or just display a structured diagram. A third alternative is to use a commercial whiteboard SDK. The key difference is that Excalidraw is free, open source, and MIT-licensed, while commercial SDKs may have licensing costs.
Maintenance, Upgrades, and License Implications
The repository is actively maintained. The last push was on 2026-11-02, and version 0.18.1 was released earlier, on 2026-04-21. Version 0.18.0 came in March 2025, and 0.17.3 in February 2024. Releases are infrequent compared with pushes, so the npm package can lag behind the repository. The package is pre-1.0, so the API may change. The license is MIT, which is permissive. You can use it in commercial products, modify it, and distribute it, as long as you include the original copyright notice. This is a low-license-friction choice for most companies. The README mentions that the hosted app features will become plugins, so you should watch for those releases if you need collaboration. Upgrading the package may require adjusting to new component props or rendering behavior, so read the changelog before each update. The README also points to Excalidraw+ and Open Collective sponsorship.
Editorial conclusion
Adopt Excalidraw if you need a free, embeddable whiteboard for React and can accept that real-time collaboration and end-to-end encryption are not yet in the npm package. Do not adopt it if your product requires multi-user editing out of the box or if you need a non-hand-drawn aesthetic. Before committing, verify the current state of the package's plugin roadmap, test the .excalidraw JSON format against your data needs, and confirm that the hand-drawn style fits your brand.
Frequently asked questions
What is Excalidraw used for?
It is a virtual whiteboard for hand-drawn style diagrams and wireframes on an infinite canvas. The editor also supports images, shape libraries, labeled arrows, localization, and export to PNG, SVG, the clipboard or an .excalidraw json file.
Is Excalidraw free or paid?
The editor is published as an npm package under MIT and described as free and open source. The project also points at Excalidraw+ and at Open Collective sponsorship, without stating what any paid tier includes.
Is Excalidraw built with React?
Yes, the integration instructions install react and react-dom alongside the package. The repository itself carries React type definitions, a Vite React plugin, and a react-app ESLint config among its development dependencies.
How do I install Excalidraw?
For embedding the editor in your own app, install it with npm or yarn together with react and react-dom. To run the repository itself for development, the project points to its Development Guide rather than to a command in the README.
How do I use Excalidraw in VS Code?
The project lists a VS Code extension from the marketplace, pomdtr.excalidraw-editor, as one of its two integrations alongside the npm package. That extension is maintained outside this repository, so it is versioned separately from the package you depend on.
How do I use Excalidraw for a system design diagram?
Draw it on the canvas with the shape tools, then connect boxes with arrow-binding and labeled arrows so the relationships read clearly. Export as PNG or SVG for a document, or keep the .excalidraw json file so the diagram can be edited again later.
Official sources
Where developers are discussing it
Posts on Hacker News, dev.to and Lobsters that link to this repository, found by our scan of those communities. 2 in the last 30 days; newest first.
- How Much Memory Does a CI Build Need? Five Real Builds at 2, 4 and 8 GBdev.to · Nov 2, 2026 · 5 points · 0 comments
- Translating Your SaaS into German: What Actually Changesdev.to · Oct 15, 2026 · 2 points · 0 comments
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/excalidraw-excalidraw)Star history chart for your README
[](https://hysenlabs.com/projects/excalidraw-excalidraw)Was this useful?