Open-source project
jgraph/drawio-desktop avatar
jgraph/drawio-desktop

drawio-desktop: An Electron Wrapper That Puts Offline Diagramming First

Official electron build of draw.io. If you don't change the code and accept it is provided "as-is", you can use it for any purpose.

63,109 stars5,766 forksJavaScriptApache-2.0

At a glance

What is it?
drawio-desktop packages the draw.io editor into an offline Electron app. Its security posture and update policy define its limits as much as its features.
Who is it for?
Adopt drawio-desktop if you need a free, offline diagramming tool that runs on Windows, macOS, or Linux and you accept a project that is closed to outside contributions. Do not adopt it if you plan to modify the editor or expect commercial support, since the README states that support is provided without anything contractually binding and that purchasing draw.io for Confluence or Jira does not entitle you to commercial support for this desktop app.
Can I use it commercially?
Yes. Apache-2.0 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 last received commits 1 day ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 14, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What drawio-desktop solves and who it is for

drawio-desktop exists to give you a diagramming application that runs locally, without a browser tab and without a network connection to the draw.io service. The README is explicit about the audience: people who want a desktop app that they can install on Windows, macOS, or Linux and use for any purpose under the Apache-2.0 license, provided they do not change the code. It is for teams that need to produce flowcharts, network diagrams, or UML sketches on machines that may be offline or behind a firewall. It is also for users who prefer a native window over a web page. The project does not aim to be a collaborative platform or a cloud service. It wraps the core draw.io editor in Electron, and the security section makes clear that the primary objective is to keep the app isolated from the Internet, apart from the update mechanism.

How the app is built and how it isolates itself

The repository is a thin Electron shell around the draw.io editor, which is included as a git submodule. The README says that all JavaScript files are self-contained and that the Content Security Policy forbids running remotely loaded JavaScript. This is a deliberate architecture choice: the editor code lives inside the app, and the app restricts its own network connections to itself. The consequence is that the app cannot transmit diagram data or usage analytics externally. The one exception is external media referenced inside a diagram, such as an image, background, or font loaded from a URL. When you open a diagram that contains such a reference, the app fetches that URL so the diagram renders correctly. That request can reveal your IP address to the server hosting the media, though no diagram content is sent. The README warns that opening a diagram from an untrusted source may trigger such a request. This is a real trade-off: the isolation is strong, but not absolute, and the user must be aware of what a diagram can pull in.

Getting it running: installation and launch commands

For end users, the simplest path is to download a built binary from the releases page. On Windows there are three flavours. The NSIS installer, named draw.io-<version>-windows-installer.exe, installs per-machine into Program Files and requires administrator privileges. The MSI installer, draw.io-<version>.msi, installs per-user into the user's profile and does not require admin rights, which makes it the right choice on locked-down machines. The portable build, draw.io-<version>-windows-no-installer.exe, runs without any installation and therefore without admin rights, but it does not register file-type associations. There is also a Microsoft Store APPX build that installs per-user without admin rights. For developers who want to run from source, the README gives these steps: clone recursively with git clone --recursive https://github.com/jgraph/drawio-desktop.git, then run npm install in the root directory, then npm start. For debugging, use npm start --enable-logging. A note about symlinks: if you replace the submodule with a symlink to your own drawio checkout, you must also symlink the node_modules directory inside drawio/src/main/webapp. That detail matters for anyone who attempts local modifications.

The update check and how to disable it

The app checks github.com at startup for a newer version and downloads updates from an AWS S3 bucket owned by Github. This is the only external connection the app makes by default, according to the README. For centrally-managed installs, you can disable the check entirely by setting the DRAWIO_DISABLE_UPDATE=true environment variable or by passing --disable-update on launch. This is a concrete, project-specific control that admins will want. The fact that the update mechanism is separate from the diagramming engine is worth noting: even with updates disabled, the editor itself remains fully functional offline. The README does not describe any other network activity, so if you need to verify that no other connections occur, you would have to inspect the code or run a network monitor yourself. The documentation is clear that the project's stance is to refuse any feature that enables external connections by default.

Where the project is the wrong tool

drawio-desktop is not the right choice if you need to modify the editor's behaviour. The README states that the project is closed to contributions, and that even simple changes can break many moving parts. Maintainers rarely permit external changes. If you fork the project and build your own unsigned app, you can do so for personal use, but the README points to doc/BUILDING_FOR_PERSONAL_USE.md for that path. That document is not included in the README, so the exact steps are unknown. The project is also the wrong tool if you need commercial support. The README says support is provided on a reasonable business constraints basis, but without anything contractually binding, and that purchasing draw.io for Confluence or Jira does not entitle you to commercial support for the desktop app. If your organisation requires a support contract or an SLA, this project will not give you one. The portable Windows build is also a poor fit if you rely on file-type associations, because it does not register them.

A real alternative: the web version of draw.io

The most direct alternative is the hosted draw.io web application at diagrams.net. The difference in approach is fundamental. The web version runs in a browser, which means it can load the editor from a remote server and can support real-time collaboration and cloud storage integrations. The desktop version deliberately cuts those capabilities to achieve offline isolation. The README's security section makes this trade-off explicit: the desktop app is designed to be completely isolated from the Internet, apart from updates. The web version cannot offer that isolation, because the code and your diagrams pass through a server. If your priority is collaboration or access from any device, the web app is the better fit. If your priority is keeping diagram data off the network, the desktop app is the better fit. The two share the same editor core, so the feature set is largely identical, but the network boundary is what separates them.

Maintenance, upgrades, and licence implications

The project is actively maintained, with releases like v31.3.2 pushed on 2026-08-22, according to the repository data. The update check at startup is the main upgrade mechanism for end users; for admins who disable it, upgrades become a manual process of downloading new binaries from the releases page. The README does not describe a package manager or an automatic update channel beyond the built-in check. The licence is Apache-2.0, which permits use for any purpose as long as you do not change the code, and the README explicitly says the app is provided as-is. If you do change the code, you take on the responsibility of building and signing your own binaries, and the project's closed-contribution policy means you cannot expect your changes to be merged upstream. The maintenance cost for an adopter is low if you use the official binaries, because you do not maintain the code. The cost rises if you fork, because you must track upstream releases manually and rebuild your fork each time. The README gives a release procedure that includes signing Windows binaries with signtool, which is a concrete step you would need to replicate for your own builds.

Editorial conclusion

Adopt drawio-desktop if you need a free, offline diagramming tool that runs on Windows, macOS, or Linux and you accept a project that is closed to outside contributions. Do not adopt it if you plan to modify the editor or expect commercial support, since the README states that support is provided without anything contractually binding and that purchasing draw.io for Confluence or Jira does not entitle you to commercial support for this desktop app. Before adopting, verify that your diagrams do not depend on external media, because the app fetches referenced URLs when a diagram opens, and confirm that your team can live with the update check at startup or knows how to disable it with DRAWIO_DISABLE_UPDATE=true or --disable-update. The project's own security goal is isolation from the Internet, so treat any feature request that requires external connections as likely to be rejected.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community notes

Community notes