No description
Find a file
Anvi cce5001aaa
Some checks failed
Tests / test (push) Has been cancelled
fix(editor): keep eraser shortcut consistent with tool switch rules (#11571)
---------
Co-authored-by: Christopher Tangonan <ctangonan123@gmail.com>
2026-06-29 10:04:08 +02:00
.codesandbox chore(docker): bump node (#11208) 2026-04-20 22:07:00 +02:00
.github ci(docker): fix docker dep bundling and pin remaining actions (#11398) 2026-05-25 14:39:21 +02:00
.husky build: temporarily disable pre-commit (#6132) 2023-01-19 13:50:42 +01:00
dev-docs docs: change twitter label by X (#11158) 2026-04-13 10:30:58 +02:00
examples docs(packages/excalidraw): improve readme (#10932) 2026-03-11 09:49:12 +01:00
excalidraw-app feat(editor): LaserPointer based freedraw (#11507) 2026-06-24 09:16:22 +02:00
firebase-project fix: update storage.rules (#5020) 2022-04-17 22:47:00 +02:00
packages fix(editor): keep eraser shortcut consistent with tool switch rules (#11571) 2026-06-29 10:04:08 +02:00
public feat: add comments/presi eplus promos for discoveribility (#10294) 2025-11-06 21:35:14 +01:00
scripts fix: Fractional index validation (#11258) 2026-05-04 11:37:17 +02:00
.dockerignore fix: Docker build in CI (#8312) 2024-08-06 13:21:20 +02:00
.editorconfig add editorconfig (#1198) 2020-04-03 19:19:01 +02:00
.env.development feat: TextToDiagram v2 (#10530) 2026-01-15 19:15:41 +01:00
.env.production Fix import.meta.env.MODE being undefined in host apps 2025-05-22 15:25:48 +02:00
.env.test test(repo): less noisy test output (#11505) 2026-06-15 18:19:20 +02:00
.eslintignore feat: canvas search (#8438) 2024-09-09 17:12:07 +02:00
.eslintrc.json feat(packages/excalidraw): state tracking, api hook, and others (#10870) 2026-03-08 23:15:18 +01:00
.gitattributes Add gitattributes (#2164) 2020-09-15 21:59:00 +02:00
.gitignore chore: init CLAUDE.md (#9563) 2025-05-25 21:23:40 +02:00
.lintstagedrc.js Keep errors, elements and comments consistent (#2340) 2020-11-05 18:06:18 +01:00
.npmrc feat: color picker redesign (#6216) 2023-05-18 16:06:27 +02:00
.prettierignore Change target branch of coverage and pretty print (#1850) 2020-07-01 12:05:21 +03:00
.watchmanconfig Don't reset cache while zooming using a gesture (#1103) 2020-03-28 16:59:36 -07:00
CLAUDE.md chore: init CLAUDE.md (#9563) 2025-05-25 21:23:40 +02:00
CONTRIBUTING.md docs: migrating dev docs to docusaurus :) (#6073) 2023-02-01 19:57:54 +05:30
crowdin.yml build: decouple package deps and introduce yarn workspaces (#7415) 2023-12-12 11:32:51 +05:30
docker-compose.yml build: Docker compose version removed (#10074) 2025-10-05 14:48:54 +02:00
Dockerfile ci(docker): fix docker dep bundling and pin remaining actions (#11398) 2026-05-25 14:39:21 +02:00
LICENSE Add MIT License (#176) 2020-01-05 13:09:29 -08:00
package.json feat(editor): LaserPointer based freedraw (#11507) 2026-06-24 09:16:22 +02:00
README.md Fix typo in Discord badge URL parameter (#11096) 2026-04-02 10:37:02 +02:00
setupTests.ts test(repo): less noisy test output (#11505) 2026-06-15 18:19:20 +02:00
tsconfig.json fix(editor): Modern TS require imports from rootDir (#11552) 2026-06-24 10:52:56 +00:00
vercel.json feat(editor): LaserPointer based freedraw (#11507) 2026-06-24 09:16:22 +02:00
vitest.config.mts feat(editor): LaserPointer based freedraw (#11507) 2026-06-24 09:16:22 +02:00
yarn.lock feat(editor): LaserPointer based freedraw (#11507) 2026-06-24 09:16:22 +02:00

Excalidraw

Excalidraw Editor | Blog | Documentation | Excalidraw+

An open source virtual hand-drawn style whiteboard.
Collaborative and end-to-end encrypted.


Excalidraw is released under the MIT license. npm downloads/month PRs welcome! Chat on Discord Ask DeepWiki Follow Excalidraw on Twitter

Product showcase

Create beautiful hand-drawn like diagrams, wireframes, or whatever you like.

Features

The Excalidraw editor (npm package) supports:

  • 💯 Free & open-source.
  • 🎨 Infinite, canvas-based whiteboard.
  • ✍️ Hand-drawn like style.
  • 🌓 Dark mode.
  • 🏗️ Customizable.
  • 📷 Image support.
  • 😀 Shape libraries support.
  • 🌐 Localization (i18n) support.
  • 🖼️ Export to PNG, SVG & clipboard.
  • 💾 Open format - export drawings as an .excalidraw json file.
  • ⚒️ Wide range of tools - rectangle, circle, diamond, arrow, line, free-draw, eraser...
  • ➡️ Arrow-binding & labeled arrows.
  • 🔙 Undo / Redo.
  • 🔍 Zoom and panning support.

Excalidraw.com

The app hosted at excalidraw.com is a minimal showcase of what you can build with Excalidraw. Its source code is part of this repository as well, and the app features:

  • 📡 PWA support (works offline).
  • 🤼 Real-time collaboration.
  • 🔒 End-to-end encryption.
  • 💾 Local-first support (autosaves to the browser).
  • 🔗 Shareable links (export to a readonly link you can share with others).

We'll be adding these features as drop-in plugins for the npm package in the future.

Quick start

Note: following instructions are for installing the Excalidraw npm package when integrating Excalidraw into your own app. To run the repository locally for development, please refer to our Development Guide.

Use npm or yarn to install the package.

npm install react react-dom @excalidraw/excalidraw
# or
yarn add react react-dom @excalidraw/excalidraw

Check out our documentation for more details!

Contributing

Integrations

Who's integrating Excalidraw

Google CloudMetaCodeSandboxObsidian ExcalidrawReplitSliteNotionHackerRank • and many others

Sponsors & support

If you like the project, you can become a sponsor at Open Collective or use Excalidraw+.

Thank you for supporting Excalidraw

Last but not least, we're thankful to these companies for offering their services for free:

Vercel Sentry Crowdin