No description
  • TypeScript 94.3%
  • SCSS 2.4%
  • JavaScript 1.5%
  • MDX 1.5%
  • Shell 0.2%
Find a file
2026-11-14 20:59:46 +01:00
.codesandbox chore(docker): bump node (#11208) 2026-04-20 22:07:00 +02:00
.forgejo/workflows fix(selfhost): publication on :latest is the evidence; upkeep merges and stale heads always get a build 2026-11-05 19:36:08 +01:00
.github ci(repo): measure each master commit against the one before it (#12484) 2026-10-28 16:29:35 +01:00
.husky build: temporarily disable pre-commit (#6132) 2023-01-19 13:50:42 +01:00
dev-docs fix(deps): update dependency @excalidraw/excalidraw to v0.18.1 [security] 2026-11-06 03:06:05 +00:00
examples feat(packages/excalidraw): replace the export functions with exportScene (#12347) 2026-10-18 20:24:17 +02:00
excalidraw-app Live region shares from the board: pick the area in place, Go to guest, Stop session ends links (#12) 2026-11-11 12:52:25 +01:00
firebase-project fix: update storage.rules (#5020) 2022-04-17 22:47:00 +02:00
packages Merge pull request 'fix(deps): update dependency nanoid to v3.3.18 [security]' (#7) from renovate/npm-nanoid-vulnerability into selfhost 2026-11-14 20:59:13 +01:00
public feat(selfhost): strip Excalidraw+ promotion and AI from the app 2026-11-05 18:53:31 +01:00
scripts ci(repo): measure each master commit against the one before it (#12484) 2026-10-28 16:29:35 +01:00
selfhost chore(deps): update nginx:stable-alpine-slim docker digest to e2355aa 2026-11-11 03:08:27 +00: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(selfhost): point production env at draw.ossalali.com 2026-07-30 11:14:00 +02:00
.env.production feat(selfhost): strip Excalidraw+ promotion and AI from the app 2026-11-05 18:53:31 +01: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
AGENTS.md feat(editor): track element creation timestamps (#12060) 2026-09-08 15:26:14 +02: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 ci(repo): track bundle size and performance of master builds (#12469) 2026-10-27 15:34:46 +01:00
README.md Fix typo in Discord badge URL parameter (#11096) 2026-04-02 10:37:02 +02:00
renovate.json chore(selfhost): Renovate for fork-owned files and npm security fixes; local build-and-push 2026-11-05 17:20:57 +01:00
setupTests.ts test(repo): less noisy test output (#11505) 2026-06-15 18:19:20 +02:00
tsconfig.json feat(editor): lay Mermaid diagrams out with Pele (mermaid-to-excalidraw v3) (#12480) 2026-10-27 17:35:28 +01: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 fix(deps): update dependency nanoid to v3.3.18 [security] 2026-11-06 03:06:09 +00: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 Cloud • Meta • CodeSandbox • Obsidian Excalidraw • Replit • Slite • Notion • HackerRank • 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