{"id":13406655,"url":"https://github.com/excalidraw/excalidraw","last_synced_at":"2026-07-07T23:44:57.629Z","repository":{"id":37010426,"uuid":"231283452","full_name":"excalidraw/excalidraw","owner":"excalidraw","description":"Virtual whiteboard for sketching hand-drawn like diagrams","archived":false,"fork":false,"pushed_at":"2026-07-03T11:47:36.000Z","size":101951,"stargazers_count":126699,"open_issues_count":3191,"forks_count":14248,"subscribers_count":498,"default_branch":"master","last_synced_at":"2026-07-03T12:23:35.177Z","etag":null,"topics":["canvas","collaboration","diagrams","drawing","hacktoberfest","productivity","whiteboard"],"latest_commit_sha":null,"homepage":"https://excalidraw.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/excalidraw.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"open_collective":"excalidraw"}},"created_at":"2020-01-02T01:04:43.000Z","updated_at":"2026-07-03T12:03:54.000Z","dependencies_parsed_at":"2023-12-18T20:04:02.550Z","dependency_job_id":"3bc037cd-7993-4e75-a220-d0a15e310dfd","html_url":"https://github.com/excalidraw/excalidraw","commit_stats":{"total_commits":3547,"total_committers":322,"mean_commits":11.01552795031056,"dds":0.8297152523259093,"last_synced_commit":"96ed8a433167f23a5ab54a9d4cca45441c8fd911"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/excalidraw/excalidraw","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/excalidraw%2Fexcalidraw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/excalidraw%2Fexcalidraw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/excalidraw%2Fexcalidraw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/excalidraw%2Fexcalidraw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/excalidraw","download_url":"https://codeload.github.com/excalidraw/excalidraw/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/excalidraw%2Fexcalidraw/sbom","scorecard":{"id":387651,"data":{"date":"2025-08-11","repo":{"name":"github.com/excalidraw/excalidraw","commit":"dda3affcb081c40e2333cc2019dddadd3a37609f"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.9,"checks":[{"name":"Code-Review","score":9,"reason":"Found 27/30 approved changesets -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/test-coverage-pr.yml:9","Warn: no topLevel permission defined: .github/workflows/autorelease-excalidraw.yml:1","Warn: no topLevel permission defined: .github/workflows/build-docker.yml:1","Warn: no topLevel permission defined: .github/workflows/cancel.yml:1","Warn: no topLevel permission defined: .github/workflows/lint.yml:1","Warn: no topLevel permission defined: .github/workflows/locales-coverage.yml:1","Warn: no topLevel permission defined: .github/workflows/publish-docker.yml:1","Warn: no topLevel permission defined: .github/workflows/semantic-pr-title.yml:1","Warn: no topLevel permission defined: .github/workflows/sentry-production.yml:1","Warn: no topLevel permission defined: .github/workflows/size-limit.yml:1","Warn: no topLevel permission defined: .github/workflows/test-coverage-pr.yml:1","Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Binary-Artifacts","score":8,"reason":"binaries present in source code","details":["Warn: binary detected: scripts/wasm/hb-subset.wasm:1","Warn: binary detected: scripts/wasm/woff2.wasm:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.18.0 not signed: https://api.github.com/repos/excalidraw/excalidraw/releases/205003845","Warn: release artifact v0.17.3 not signed: https://api.github.com/repos/excalidraw/excalidraw/releases/140939679","Warn: release artifact v0.17.0 not signed: https://api.github.com/repos/excalidraw/excalidraw/releases/129357504","Warn: release artifact v0.16.1 not signed: https://api.github.com/repos/excalidraw/excalidraw/releases/121972948","Warn: release artifact v0.16.0 not signed: https://api.github.com/repos/excalidraw/excalidraw/releases/121713259","Warn: release artifact v0.18.0 does not have provenance: https://api.github.com/repos/excalidraw/excalidraw/releases/205003845","Warn: release artifact v0.17.3 does not have provenance: https://api.github.com/repos/excalidraw/excalidraw/releases/140939679","Warn: release artifact v0.17.0 does not have provenance: https://api.github.com/repos/excalidraw/excalidraw/releases/129357504","Warn: release artifact v0.16.1 does not have provenance: https://api.github.com/repos/excalidraw/excalidraw/releases/121972948","Warn: release artifact v0.16.0 does not have provenance: https://api.github.com/repos/excalidraw/excalidraw/releases/121713259"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/publish-docker.yml:9"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/autorelease-excalidraw.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/autorelease-excalidraw.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/autorelease-excalidraw.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/autorelease-excalidraw.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-docker.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/build-docker.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/cancel.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/cancel.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/lint.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/lint.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/locales-coverage.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/locales-coverage.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/locales-coverage.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/locales-coverage.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/locales-coverage.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/locales-coverage.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-docker.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/publish-docker.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-docker.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/publish-docker.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-docker.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/publish-docker.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-docker.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/publish-docker.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-docker.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/publish-docker.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/semantic-pr-title.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/semantic-pr-title.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/sentry-production.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/sentry-production.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/sentry-production.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/sentry-production.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/size-limit.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/size-limit.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/size-limit.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/size-limit.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/size-limit.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/size-limit.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-coverage-pr.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/test-coverage-pr.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-coverage-pr.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/test-coverage-pr.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test-coverage-pr.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/test-coverage-pr.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/excalidraw/excalidraw/test.yml/master?enable=pin","Warn: containerImage not pinned by hash: .codesandbox/Dockerfile:1: pin your Docker image by updating node:18-bullseye to node:18-bullseye@sha256:0d9e9a8dcd5a83ea737ed92227a6591a31ad70c8bb722b0c51aff7ae23a88b6a","Warn: containerImage not pinned by hash: Dockerfile:1","Warn: containerImage not pinned by hash: Dockerfile:16: pin your Docker image by updating nginx:1.27-alpine to nginx:1.27-alpine@sha256:65645c7bb6a0661892a8b03b89d0743208a18dd2f3f17a54ef4b76fb8e2f2a10","Warn: containerImage not pinned by hash: examples/with-script-in-browser/.codesandbox/Dockerfile:1: pin your Docker image by updating node:18-bullseye to node:18-bullseye@sha256:0d9e9a8dcd5a83ea737ed92227a6591a31ad70c8bb722b0c51aff7ae23a88b6a","Warn: downloadThenRun not pinned by hash: .github/workflows/sentry-production.yml:25","Info:   0 out of  16 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   9 third-party GitHubAction dependencies pinned","Info:   0 out of   4 containerImage dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":7,"reason":"SAST tool is not run on all commits -- score normalized to 7","details":["Warn: 23 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"61 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-wf5p-g6vw-rhxx","Warn: Project is vulnerable to: GHSA-jr5f-v2jv-69x6","Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-jrvm-mcxc-mf6m","Warn: Project is vulnerable to: GHSA-vhxf-7vqr-mrjg","Warn: Project is vulnerable to: GHSA-mf6x-hrgr-658f","Warn: Project is vulnerable to: GHSA-xrh7-m5pp-39r6","Warn: Project is vulnerable to: GHSA-rv95-896h-c2vc","Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-pfrx-2q88-qq97","Warn: Project is vulnerable to: GHSA-c7qv-q95q-8v27","Warn: Project is vulnerable to: GHSA-4www-5p9h-95mh","Warn: Project is vulnerable to: GHSA-9gqv-wp59-fq42","Warn: Project is vulnerable to: GHSA-3rfm-jhwj-7488","Warn: Project is vulnerable to: GHSA-hhq3-ff78-jv3g","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55","Warn: Project is vulnerable to: GHSA-76c9-3jph-rj3q","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w","Warn: Project is vulnerable to: GHSA-7fh5-64p2-3v2j","Warn: Project is vulnerable to: GHSA-x7hr-w5r2-h6wg","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg","Warn: Project is vulnerable to: GHSA-76p7-773f-r4q5","Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p","Warn: Project is vulnerable to: GHSA-w5p7-h5w8-2hfq","Warn: Project is vulnerable to: GHSA-4vvj-4cpr-p986","Warn: Project is vulnerable to: GHSA-wr3j-pwj9-hqq6","Warn: Project is vulnerable to: GHSA-4v9v-hfq4-rm2v","Warn: Project is vulnerable to: GHSA-9jgg-88mc-972h","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q","Warn: Project is vulnerable to: GHSA-m64q-4jqh-f72f","Warn: Project is vulnerable to: GHSA-fr5h-rqp8-mj6g","Warn: Project is vulnerable to: GHSA-g77x-44xx-532m","Warn: Project is vulnerable to: GHSA-gp8f-8m3g-qvj9","Warn: Project is vulnerable to: GHSA-7gfc-8cq8-jh5f","Warn: Project is vulnerable to: GHSA-7m27-7ghc-44w9","Warn: Project is vulnerable to: GHSA-qpjv-v59x-3qc4","Warn: Project is vulnerable to: GHSA-f82v-jwr5-mffw","Warn: Project is vulnerable to: GHSA-3h52-269p-cp9r","Warn: Project is vulnerable to: GHSA-67mh-4wv8-2f99","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-pq67-2wwv-3xjx","Warn: Project is vulnerable to: GHSA-8cj5-5rvv-wf4v","Warn: Project is vulnerable to: GHSA-8jhw-289h-jh2g","Warn: Project is vulnerable to: GHSA-64vr-g452-qvp3","Warn: Project is vulnerable to: GHSA-9cwx-2883-4wfx","Warn: Project is vulnerable to: GHSA-vg6x-rcgg-rjx6","Warn: Project is vulnerable to: GHSA-x574-m823-4x7w","Warn: Project is vulnerable to: GHSA-4r4m-qw57-chr8","Warn: Project is vulnerable to: GHSA-xcj6-pq6g-qj4x","Warn: Project is vulnerable to: GHSA-356w-63v5-8wf4","Warn: Project is vulnerable to: GHSA-859w-5945-r5v3"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T17:02:54.571Z","repository_id":37010426,"created_at":"2025-08-18T17:02:54.571Z","updated_at":"2025-08-18T17:02:54.571Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35246561,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-07T02:00:07.222Z","response_time":90,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["canvas","collaboration","diagrams","drawing","hacktoberfest","productivity","whiteboard"],"created_at":"2024-07-30T19:02:35.781Z","updated_at":"2026-07-07T23:44:57.580Z","avatar_url":"https://github.com/excalidraw.png","language":"TypeScript","funding_links":["https://opencollective.com/excalidraw","https://opencollective.com/excalidraw/tiers/sponsors/0/website","https://opencollective.com/excalidraw/tiers/sponsors/1/website","https://opencollective.com/excalidraw/tiers/sponsors/2/website","https://opencollective.com/excalidraw/tiers/sponsors/3/website","https://opencollective.com/excalidraw/tiers/sponsors/4/website","https://opencollective.com/excalidraw/tiers/sponsors/5/website","https://opencollective.com/excalidraw/tiers/sponsors/6/website","https://opencollective.com/excalidraw/tiers/sponsors/7/website","https://opencollective.com/excalidraw/tiers/sponsors/8/website","https://opencollective.com/excalidraw/tiers/sponsors/9/website","https://opencollective.com/excalidraw/tiers/sponsors/10/website"],"categories":["TypeScript","More-Awesome","HarmonyOS","Libraries","Apps","UI Components","Figures","Design Tools","Design editor","hacktoberfest","Multimedia","Documentation and Presentation","Notes","By Language","Diagramming and Visualization as Code","应用相关","语言资源库","其他","目录","Applications","productivity","Awesome Tools","工具篇","canvas","在线设计","Web Frontend","Graph App","Other","Tool","Creative","General Tools","**Awesome Codebases** [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)","🎨 Design \u0026 Creative","Opensource Projects","Table of Contents","Uncategorized"],"sub_categories":["Windows Manager","Graph Editing","Diagramming","Canvas","Online tools","Photoshop / Illustrator","Image and pictures","TypeScript","typescript","网络服务_其他","Design Tool (e.g. Figma, Excalidraw)","UX","Animation \u0026 Canvas","Observability","Whiteboard Tool","Other","Uncategorized"],"readme":"\u003ca href=\"https://excalidraw.com/\" target=\"_blank\" rel=\"noopener\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" alt=\"Excalidraw\" srcset=\"https://excalidraw.nyc3.cdn.digitaloceanspaces.com/github/excalidraw_github_cover_2_dark.png\" /\u003e\n    \u003cimg alt=\"Excalidraw\" src=\"https://excalidraw.nyc3.cdn.digitaloceanspaces.com/github/excalidraw_github_cover_2.png\" /\u003e\n  \u003c/picture\u003e\n\u003c/a\u003e\n\n\u003ch4 align=\"center\"\u003e\n  \u003ca href=\"https://excalidraw.com\"\u003eExcalidraw Editor\u003c/a\u003e |\n  \u003ca href=\"https://plus.excalidraw.com/blog\"\u003eBlog\u003c/a\u003e |\n  \u003ca href=\"https://docs.excalidraw.com\"\u003eDocumentation\u003c/a\u003e |\n  \u003ca href=\"https://plus.excalidraw.com\"\u003eExcalidraw+\u003c/a\u003e\n\u003c/h4\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003e\n    An open source virtual hand-drawn style whiteboard. \u003c/br\u003e\n    Collaborative and end-to-end encrypted. \u003c/br\u003e\n  \u003cbr /\u003e\n  \u003c/h2\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/excalidraw/excalidraw/blob/master/LICENSE\"\u003e\n    \u003cimg alt=\"Excalidraw is released under the MIT license.\" src=\"https://img.shields.io/badge/license-MIT-blue.svg\"  /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@excalidraw/excalidraw\"\u003e\n    \u003cimg alt=\"npm downloads/month\" src=\"https://img.shields.io/npm/dm/@excalidraw/excalidraw\"  /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://docs.excalidraw.com/docs/introduction/contributing\"\u003e\n    \u003cimg alt=\"PRs welcome!\" src=\"https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat\"  /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://discord.gg/UexuTaE\"\u003e\n    \u003cimg alt=\"Chat on Discord\" src=\"https://img.shields.io/discord/723672430744174682?color=738ad6\u0026label=Chat%20on%20Discord\u0026logo=discord\u0026logoColor=ffffff\u0026widge=false\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://twitter.com/excalidraw\"\u003e\n    \u003cimg alt=\"Follow Excalidraw on Twitter\" src=\"https://img.shields.io/twitter/follow/excalidraw.svg?label=follow+@excalidraw\u0026style=social\u0026logo=twitter\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cfigure\u003e\n    \u003ca href=\"https://excalidraw.com\" target=\"_blank\" rel=\"noopener\"\u003e\n      \u003cimg src=\"https://excalidraw.nyc3.cdn.digitaloceanspaces.com/github%2Fproduct_showcase.png\" alt=\"Product showcase\" /\u003e\n    \u003c/a\u003e\n    \u003cfigcaption\u003e\n      \u003cp align=\"center\"\u003e\n        Create beautiful hand-drawn like diagrams, wireframes, or whatever you like.\n      \u003c/p\u003e\n    \u003c/figcaption\u003e\n  \u003c/figure\u003e\n\u003c/div\u003e\n\n## Features\n\nThe Excalidraw editor (npm package) supports:\n\n- 💯\u0026nbsp;Free \u0026 open-source.\n- 🎨\u0026nbsp;Infinite, canvas-based whiteboard.\n- ✍️\u0026nbsp;Hand-drawn like style.\n- 🌓\u0026nbsp;Dark mode.\n- 🏗️\u0026nbsp;Customizable.\n- 📷\u0026nbsp;Image support.\n- 😀\u0026nbsp;Shape libraries support.\n- 👅\u0026nbsp;Localization (i18n) support.\n- 🖼️\u0026nbsp;Export to PNG, SVG \u0026 clipboard.\n- 💾\u0026nbsp;Open format - export drawings as an `.excalidraw` json file.\n- ⚒️\u0026nbsp;Wide range of tools - rectangle, circle, diamond, arrow, line, free-draw, eraser...\n- ➡️\u0026nbsp;Arrow-binding \u0026 labeled arrows.\n- 🔙\u0026nbsp;Undo / Redo.\n- 🔍\u0026nbsp;Zoom and panning support.\n\n## Excalidraw.com\n\nThe app hosted at [excalidraw.com](https://excalidraw.com) is a minimal showcase of what you can build with Excalidraw. Its [source code](https://github.com/excalidraw/excalidraw/tree/master/excalidraw-app) is part of this repository as well, and the app features:\n\n- 📡\u0026nbsp;PWA support (works offline).\n- 🤼\u0026nbsp;Real-time collaboration.\n- 🔒\u0026nbsp;End-to-end encryption.\n- 💾\u0026nbsp;Local-first support (autosaves to the browser).\n- 🔗\u0026nbsp;Shareable links (export to a readonly link you can share with others).\n\nWe'll be adding these features as drop-in plugins for the npm package in the future.\n\n## Quick start\n\n**Note:** following instructions are for installing the Excalidraw [npm package](https://www.npmjs.com/package/@excalidraw/excalidraw) when integrating Excalidraw into your own app. To run the repository locally for development, please refer to our [Development Guide](https://docs.excalidraw.com/docs/introduction/development).\n\nUse `npm` or `yarn` to install the package.\n\n```bash\nnpm install react react-dom @excalidraw/excalidraw\n# or\nyarn add react react-dom @excalidraw/excalidraw\n```\n\nCheck out our [documentation](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/installation) for more details!\n\n## Contributing\n\n- Missing something or found a bug? [Report here](https://github.com/excalidraw/excalidraw/issues).\n- Want to contribute? Check out our [contribution guide](https://docs.excalidraw.com/docs/introduction/contributing) or let us know on [Discord](https://discord.gg/UexuTaE).\n- Want to help with translations? See the [translation guide](https://docs.excalidraw.com/docs/introduction/contributing#translating).\n\n## Integrations\n\n- [VScode extension](https://marketplace.visualstudio.com/items?itemName=pomdtr.excalidraw-editor)\n- [npm package](https://www.npmjs.com/package/@excalidraw/excalidraw)\n\n## Who's integrating Excalidraw\n\n[Google Cloud](https://googlecloudcheatsheet.withgoogle.com/architecture) • [Meta](https://meta.com/) • [CodeSandbox](https://codesandbox.io/) • [Obsidian Excalidraw](https://github.com/zsviczian/obsidian-excalidraw-plugin) • [Replit](https://replit.com/) • [Slite](https://slite.com/) • [Notion](https://notion.so/) • [HackerRank](https://www.hackerrank.com/) • and many others\n\n## Sponsors \u0026 support\n\nIf you like the project, you can become a sponsor at [Open Collective](https://opencollective.com/excalidraw) or use [Excalidraw+](https://plus.excalidraw.com/).\n\n## Thank you for supporting Excalidraw\n\n[\u003cimg src=\"https://opencollective.com/excalidraw/tiers/sponsors/0/avatar.svg?avatarHeight=120\"/\u003e](https://opencollective.com/excalidraw/tiers/sponsors/0/website) [\u003cimg src=\"https://opencollective.com/excalidraw/tiers/sponsors/1/avatar.svg?avatarHeight=120\"/\u003e](https://opencollective.com/excalidraw/tiers/sponsors/1/website) [\u003cimg src=\"https://opencollective.com/excalidraw/tiers/sponsors/2/avatar.svg?avatarHeight=120\"/\u003e](https://opencollective.com/excalidraw/tiers/sponsors/2/website) [\u003cimg src=\"https://opencollective.com/excalidraw/tiers/sponsors/3/avatar.svg?avatarHeight=120\"/\u003e](https://opencollective.com/excalidraw/tiers/sponsors/3/website) [\u003cimg src=\"https://opencollective.com/excalidraw/tiers/sponsors/4/avatar.svg?avatarHeight=120\"/\u003e](https://opencollective.com/excalidraw/tiers/sponsors/4/website) [\u003cimg src=\"https://opencollective.com/excalidraw/tiers/sponsors/5/avatar.svg?avatarHeight=120\"/\u003e](https://opencollective.com/excalidraw/tiers/sponsors/5/website) [\u003cimg src=\"https://opencollective.com/excalidraw/tiers/sponsors/6/avatar.svg?avatarHeight=120\"/\u003e](https://opencollective.com/excalidraw/tiers/sponsors/6/website) [\u003cimg src=\"https://opencollective.com/excalidraw/tiers/sponsors/7/avatar.svg?avatarHeight=120\"/\u003e](https://opencollective.com/excalidraw/tiers/sponsors/7/website) [\u003cimg src=\"https://opencollective.com/excalidraw/tiers/sponsors/8/avatar.svg?avatarHeight=120\"/\u003e](https://opencollective.com/excalidraw/tiers/sponsors/8/website) [\u003cimg src=\"https://opencollective.com/excalidraw/tiers/sponsors/9/avatar.svg?avatarHeight=120\"/\u003e](https://opencollective.com/excalidraw/tiers/sponsors/9/website) [\u003cimg src=\"https://opencollective.com/excalidraw/tiers/sponsors/10/avatar.svg?avatarHeight=120\"/\u003e](https://opencollective.com/excalidraw/tiers/sponsors/10/website)\n\n\u003ca href=\"https://opencollective.com/excalidraw#category-CONTRIBUTE\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/excalidraw/tiers/backers.svg?avatarHeight=32\"/\u003e\u003c/a\u003e\n\nLast but not least, we're thankful to these companies for offering their services for free:\n\n[![Vercel](./.github/assets/vercel.svg)](https://vercel.com) [![Sentry](./.github/assets/sentry.svg)](https://sentry.io) [![Crowdin](./.github/assets/crowdin.svg)](https://crowdin.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexcalidraw%2Fexcalidraw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexcalidraw%2Fexcalidraw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexcalidraw%2Fexcalidraw/lists"}