源码构建必须用 --recursive 克隆,否则缺少 drawio 子模块;Linux AppImage 需搭配 3.0 版 AppImageLauncher,旧版会启动失败;Windows 的 exe 安装包需管理员权限,无权限时改用 MSI 或 zip 便携版
drawio-desktop
jgraphGPL-3.0活跃维护draw.io 官方 Electron 桌面版,离线绘制流程图、架构图、UML 等各类图表,数据可存本地或对接云盘,不用打开浏览器。
Official electron build of draw.io
git clone --recursive https://github.com/jgraph/drawio-desktop.git
npm install
npm startREADME 未说明硬件要求,仅说明支持 Windows、macOS、Linux 桌面系统,以及 Windows 11 ARM64 设备
draw.io 官方 Electron 桌面版,离线画流程图、架构图,数据不外传
draw.io 官方 Electron 桌面版,离线绘制流程图、架构图、UML 等各类图表,数据可存本地或对接云盘,不用打开浏览器。
核心能力
- 基于 Electron 封装 draw.io 核心编辑器
- 应用与互联网隔离,不上传任何图表数据
- 提供 Windows、macOS、Linux 多平台安装包
- 支持 Windows on Arm 原生 ARM64 构建
- 可用环境变量或启动参数关闭自动更新
容易踩的坑
- v32.6.1032.6.10最新正式版2026-11-04 · 2026-11-04 20:40 UTC
Release Notes for 32.6.10
Windows Installer Windows No Installer (zip) macOS - Universal Linux - deb, AppImage or rpm
ChangeLog:
- Uses electron 44.10.2
- Exports all pages as one SVG with --all-pages -f svg, with a view for each page, so that file.svg#Page-2 in an image shows the second page [jgraph/drawio#5821]
- Stops the command line export from hanging on malformed PNG files
- Updates to draw.io core 32.6.10. All changes from 32.6.1 to 32.6.10 are added in this build.
Testing:
Verified against the packaged, signed macOS build. Windows and Linux packages were verified from the produced release artifacts, their sizes and update manifests, rather than by running them.
Base checks
- Launch, open a file passed on the command line, add and edit shapes, change styles, undo and redo, copy and paste, save and reopen, insert, rename and delete pages, and zoom
- Export to PNG and PDF from the app, and to PNG, JPEG, SVG, PDF, XML and HTML from the command line, covering scale, border, transparency, cropping, page selection with -p and --size page
- Diagram round trip in an exported PDF, including reopening the exported PDF and recovering both pages
- Mermaid and CSV import, and the --layout and --normalize options from the command line
- Shape search, stencils and shape libraries, and the export, print and Page Setup dialogs
- Settings and the window position and size survive a restart
- The Quick Look extension is registered for this build, sandboxed and separately signed
- The macOS bundle is signed with a Developer ID certificate under the hardened runtime, is notarised and stapled
- The Electron security fuses are applied
- 296 unit tests pass
All pages as one SVG
- A file with 2 pages exports one SVG with a view for the name and the ID of each page, and in a browser the views show the second page and no view shows the first page
- A file with 3000 pages exports in about 6 seconds with all of its views
- A page with math, a page with a traced image and the page after them all arrive in the SVG
- The Alt Text of each page is written as its title with markup escaped, and pages without one have none
Malformed PNG files
- Five crafted PNG files, each in a folder export and as a listed file with -f html, end without hanging, and the good diagram next to them is still exported. Three of them hung the previous release on both paths
- A PNG with an embedded diagram is still found by a folder export, and a PNG without one is skipped
Checks around the changes
- Edges with the outline perimeter end on the outline of an image in SVG and PDF exports, also for the PDF export of a .drawio.svg file
- Relative links in SVG exports are written without the install path, and javascript: links lose their scheme
- A .mmd file with a title and description opens with them as the Alt Text of the page, and SVG exports write them as the title
- Opening a diagram with a data source makes no request, and file URLs are refused as data sources
- Alt+Shift+D describes the selection and Alt+Shift+U opens the text outline
- Three library saves without a dialog each reach the file, and drafts are written next to the file and read back
- Reads, stats and writes of paths the user has not authorised are still refused [GHSA-fjgc-8xgj-rvh4]
- v32.6.132.6.12026-10-23 · 2026-10-23 20:03 UTC
查看更新说明
Release Notes for 32.6.1
Windows Installer Windows No Installer (zip) macOS - Universal Linux - deb, AppImage or rpm
ChangeLog:
- Uses electron 44.9.3
- Includes the Electron mitigation for the compromised eMudhra intermediate certificates [GHSA-jr5w-w6x2-84p9]
- Updates to draw.io core 32.6.1. All changes from 32.5.5 to 32.6.1 are added in this build.
Testing:
Verified against the packaged, signed macOS build. Windows and Linux packages were verified from the produced release artifacts, their sizes and update manifests, rather than by running them.
Base checks
- Launch, open a file passed on the command line, add and edit shapes, change styles, undo and redo, copy and paste through the system clipboard, save, reopen, insert, rename and delete pages, and zoom
- Export to PNG, JPEG, SVG, PDF, XML and HTML from the command line, covering scale, border, transparency, cropping, page selection with -p and --size page, and PNG and PDF export from the app
- Diagram round trip in exported PNG, SVG and PDF files, including reopening an exported PDF and recovering both pages
- Mermaid and CSV import and the --layout and --normalize options from the command line
- Shape search, the stencils and shape palettes, the export dialogs and the print dialog
- Settings and the window position are kept after a restart
- Quick Look preview on macOS is registered for this build, and the Quick Look app extension is sandboxed and separately signed
- The macOS bundle is a universal binary signed with a Developer ID certificate under the hardened runtime, notarised and stapled
- The Electron security fuses are applied, so RunAsNode, the NODE_OPTIONS variable and the node inspect arguments are disabled and the app only loads from the asar
- 286 unit tests pass
Electron 44.9.3
- The app runs on Electron 44.9.3 with Chromium 152.0.7977.167; Electron lists 44.9.1 and later as patched for [GHSA-jr5w-w6x2-84p9]
- Local fonts are listed, and PDF and PNG export through the main process work on the new runtime
Checks around the changes
- Links that start with a slash are kept as they are in SVG exports from the app and from the command line, instead of becoming file:// links [jgraph/drawio#5809]
- Other links in SVG exports are written as before, and javascript: links are still not exported as runnable links
- The updated Citrix 2 shapes render, with no two connection points closer than 8 % of the shape
- The zoom, fit and close buttons of presentation mode respond to mouse clicks
- Reads, stats and writes of paths the user has not authorised are still refused, while an authorised file still reads and saves
- file: and javascript: links are still refused when a link is opened externally
- All update manifests name 32.6.1, with the Windows x64 and arm64 installers in separate manifests
- v32.5.532.5.52026-10-18 · 2026-10-18 11:58 UTC
查看更新说明
Release Notes for 32.5.5
Windows Installer Windows No Installer (zip) macOS - Universal Linux - deb, AppImage or rpm
ChangeLog:
- Uses electron 44.9.0
- Fixes the animated GIF and video export, which failed with "Invalid file data" [jgraph/drawio-desktop#2580]
- Fixes saving libraries, which failed with an error since 31.5.2 [jgraph/drawio-desktop#2581]
- Closes the window when Discard Changes is chosen after a save followed by a quick edit, which kept the window open and stopped every later close and quit from working [jgraph/drawio#5806]
- Updates to draw.io core 32.5.5. All changes from 32.4.1 to 32.5.5 are added in this build.
Testing:
Verified against the packaged, signed macOS build. Windows and Linux packages were verified from the produced release artifacts, their sizes and update manifests, rather than by running them.
Base checks
- Launch, open a file passed on the command line, add and edit shapes, change styles, undo and redo, copy and paste through the system clipboard, save, insert, rename and delete pages, and zoom
- Export to PNG and PDF from the app, with the diagram embedded and recovered from both files
- Export to PNG, JPG, SVG, PDF, XML and HTML from the command line, covering scale, border, transparency, cropping, page selection with -p, --size page and the embedded diagram
- Diagram round trip in an exported PDF, recovering both pages and their labels
- Mermaid and CSV import and the --layout and --normalize options from the command line
- Shape search, stencils and shape bundles, and the export, animated GIF and print dialogs
- Settings survive a restart
- Paths the user has not authorised are still refused for reads, stats and writes, and file and javascript links are not opened externally
- Quick Look preview on macOS is registered for this build, signed and sandboxed
- The macOS bundle is signed with a Developer ID certificate under the hardened runtime, is notarised and stapled, and the Electron security fuses are applied
- 286 unit tests pass
Animated GIF and video export [jgraph/drawio-desktop#2580]
- GIF87a, GIF89a and MP4 data is written to a file the user chose and reads back byte for byte, where 32.4.1 refused all three with "Invalid file data"
- Other content to the same file is still refused, and so is the same data to a file the user did not choose
Libraries [jgraph/drawio-desktop#2581]
- Three edits to a library in a row are each saved to disk without an error or a dialog
Checks around the changes
- Drafts of unsaved changes are written next to the file and deleted again
- A change to the open file by another program is detected while draw.io is in the background, and replacing the file with an older copy of itself after a save offers to synchronise or overwrite
- Page background gradients appear in PNG, SVG and PDF exports from the command line and drawing scale labels in SVG exports, and a page background that is not a colour loads nothing from the network during export, where 32.4.1 requested it
- PDF exports of a diagram that spans several pages keep the same pages and page sizes as 32.4.1
- v32.4.132.4.12026-10-09 · 2026-10-09 06:44 UTC
查看更新说明
Release Notes for 32.4.1
Windows Installer Windows No Installer (zip) macOS - Universal Linux - deb, AppImage or rpm
ChangeLog:
- Uses electron 44.7.0
- Asks before reading a local file named in Extras > Configuration (libraries, templates or fonts) for the first time, and reads the configuration once when a window opens, so script in the page can no longer make other files on the computer readable by changing it. Files already configured before this update keep working without a prompt
- Reads urlParams.json from the installation folder or the draw.io user data folder only, no longer from the folder draw.io was started in, which on Windows is the folder of a diagram opened from Explorer. A urlParams.json kept elsewhere needs to move to the user data folder (~/Library/Application Support/draw.io on macOS, %APPDATA%\draw.io on Windows). The file can no longer override settings the app manages itself, such as Google Fonts and spell checking
- Takes the value of a short option at the end of a group from the next argument on the command line, so drawio -xf png diagram.drawio exports a PNG instead of looking for an input file named png
- Updates to draw.io core 32.4.1. All changes from 32.3.0 to 32.4.1 are added in this build.
Testing:
Verified against the packaged, signed macOS build. Windows and Linux packages were verified from the produced release artifacts, their sizes and update manifests, rather than by running them.
Base checks
- Launch, open a file passed on the command line, add and edit shapes, change styles, undo and redo, copy and paste, save, insert, rename and delete pages, and zoom
- Export to PNG, JPEG, SVG, PDF, XML and HTML from the command line, covering scale, border, transparency, cropping, page selection with -p and --size page, and PNG and PDF export from the app
- Diagram round trip in an exported PDF, including reopening the exported PDF and recovering both pages and their contents
- Mermaid and CSV import and the --layout and --normalize options from the command line
- Shape search, stencils and shape libraries, the export dialog and the print dialog
- Drafts of unsaved changes are written next to the file and read back, and saving keeps a backup of the previous version
- A second window opens and reads the files it was given
- Settings survive a restart
- The macOS bundle is signed with a Developer ID certificate under the hardened runtime, is notarised and stapled, and the Quick Look app extension is sandboxed, separately signed and registered for this build
- The Electron security fuses are applied, so RunAsNode, the NODE_OPTIONS variable and the node inspect arguments are disabled and the app only loads from the asar
- 285 unit tests pass
Files named in the configuration
- A library configured in Extras > Configuration on 32.3.0 still loads after the update to this build, without a prompt, on the first and the second launch
- A configured library that was allowed before loads without asking again
- Changing the configuration from script in the page, including every key that can name a file, no longer makes a file readable: reads, stats, writability and existence checks and file watching of that file are all refused, where 32.3.0 returned the file's contents
- Files that are not configured, and system files
- v32.3.032.3.02026-10-07 · 2026-10-07 16:37 UTC
查看更新说明
Release Notes for 32.3.0
Windows Installer Windows No Installer (zip) macOS - Universal Linux - deb, AppImage or rpm
ChangeLog:
- Uses electron 44.6.0
- Updates each install type the way it was installed. The Windows installer, macOS and AppImage download updates in the background and show a notice and Help > Restart to Update when one is ready, or install it when you quit. MSI, zip, portable, deb and rpm installs show a notice with a link to the release page instead of running the Windows installer over themselves. Extras > Automatic Updates turns the background checks on and off. Coming from 31.7.0, this update still arrives the previous way [jgraph/drawio-desktop#2569]
- Prints on the printer's own paper size and orientation on macOS, so landscape pages print in landscape on A4 or Letter [jgraph/drawio-desktop#2568]
- Prints pages with a page scale above 100% at full size, they were shrunk a second time since 30.3.11 [jgraph/drawio#5540]
- Adds --embed-svg-metadata to the command line, which adds the properties of shapes and connectors to SVG exports as data-meta-* attributes [jgraph/drawio-desktop#1805]
- Opens the window with the background of the loading screen, which avoids a white flash in dark mode
- Updates to draw.io core 32.3.0. All changes from 31.7.0 to 32.3.0 are added in this build.
Testing:
Verified against the packaged, signed macOS build. Windows and Linux packages were verified from the produced release artifacts, their sizes and update manifests, rather than by running them.
Base checks
- Launch, open a file passed on the command line, add and edit shapes, change styles, undo and redo, copy and paste, save, insert, rename and delete pages, and zoom
- Export to PNG, JPEG, SVG, PDF, XML and HTML from the command line, covering scale, border, transparency, cropping, page selection with -p and --size page, and PNG and PDF export from the app
- Diagram round trip in an exported PDF, including reopening the exported PDF and recovering both pages and their contents
- Mermaid and CSV import and the --layout and --normalize options from the command line
- Shape search, stencils and shape libraries, the export dialog and the print dialog
- Settings survive a restart
- The macOS bundle is signed with a Developer ID certificate under the hardened runtime, is notarised and stapled, and the Quick Look app extension is sandboxed, separately signed and registered for this build
- The Electron security fuses are applied, so RunAsNode, the NODE_OPTIONS variable and the node inspect arguments are disabled and the app only loads from the asar
- 259 unit tests pass
Updates
- A new install reports no pending update, shows Check for Updates in the Help menu and Automatic Updates switched on in the Extras menu
- When the editor is told that an update has been downloaded it shows the restart notice and the Help menu offers Restart to Update instead of Check for Updates, and an available update for installs that do not update themselves shows the download notice
- Clicking the notice while no update is pending leaves the app and the open diagram as they are
- Switching Automatic Updates off and on again survives a restart each way
- The rules for which install type downloads, links to the release page or never checks are covered by uni
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
About
drawio-desktop is a diagramming desktop app based on Electron that wraps the core draw.io editor.
Download built binaries from the releases section.
Can I use this app for free? Yes, under the GPL v3 license. If you don't change the code and accept it is provided "as-is", you can use it for any purpose.
Windows installation
Three flavours of Windows download are published on the releases page:
draw.io-<version>-windows-installer.exe— NSIS installer. Installs per-machine intoProgram Filesand requires administrator privileges.draw.io-<version>.msi— MSI installer. Installs per-user into the user's profile and does not require administrator privileges. Use this one if you don't have admin rights on your machine.draw.io-<version>-windows.zip— portable build. Extract the zip anywhere and rundraw.io.exe, with no installation (and therefore without admin rights). File-type associations are not registered.
The Microsoft Store (APPX) build is also installable per-user without admin rights via the Store.
Windows on Arm
draw.io Desktop is built natively for Windows on Arm (ARM64) and is supported on Windows 11 ARM64 devices. Two native ARM64 downloads are published with every release:
draw.io-arm64-<version>-windows-arm64-installer.exe— NSIS installer, per-machine, requires administrator privileges.draw.io-arm64-<version>-windows-arm64-no-installer.exe— portable build, no installation or admin rights needed.
The MSI and Microsoft Store builds are x64 only and run under emulation on ARM64 devices. ARM64 builds up to and including 31.4.4 were shipped with auto-update disabled; install a newer release manually once, after which the ARM64 installer build updates itself like x64.
Linux installation
If you manage AppImages with AppImageLauncher, you need a 3.0 release of it (currently labelled beta). Since 31.4.2 the AppImage uses the static AppImage runtime so that it no longer depends on the end-of-life libfuse2, and AppImageLauncher 2.2.0, the last stable release, cannot load a static runtime. The app then fails to start with:
fuse: memory allocation failed
squashfuse 0.5.2 (c) 2012 Dave Vasilevsky
...
Can't open squashfs image: Bad address
Install a current AppImageLauncher from its releases page, which provides .deb packages, or uninstall AppImageLauncher altogether. It is not needed to run the AppImage. See #2538 for the detail.
Updates
How draw.io Desktop updates depends on how it was installed:
- Windows installer (
.exe), macOS and AppImage: new versions download in the background. When one is ready, the editor shows a notice, and clicking it or Help > Restart to Update installs it straight away. Otherwise it is installed when you quit draw.io. The Windows installer is per-machine, so the update asks for administrator rights. - MSI, Windows zip, Windows ARM64 portable, deb and rpm: draw.io tells you when a new version is available and links to its release page. Install it the same way as the current one.
- Microsoft Store, Snap and Flatpak: the store updates the app, and draw.io does not check for updates.
Extras > Automatic Updates (draw.io > Check for Updates Automatically on macOS) turns the background checks off. Help > Check for Updates still works. For centrally managed installs, set the DRAWIO_DISABLE_UPDATE=true environment variable or pass --disable-update to turn off all update checks, or set DRAWIO_NO_SILENT_UPDATE=true or pass --no-silent-update so that draw.io asks before it downloads an update.
Security
draw.io Desktop is designed to be completely isolated from the Internet, apart from the update process. This checks github.com once a day for a newer version and downloads it from an AWS S3 bucket owned by Github. To disable the update check entirely (e.g. for centrally-managed installs), set the DRAWIO_DISABLE_UPDATE=true environment variable or pass --disable-update on launch. All JavaScript files are self-contained, the Content Security Policy forbids running remotely loaded JavaScript.
No diagram data is ever sent externally, nor do we send any analytics about app usage externally. The Content Security Policy on the web part of the interface forbids remotely-loaded JavaScript and restricts the application's own network connections to itself, so the app cannot transmit your diagrams or otherwise phone home. Note that a diagram can reference external media - for example an image, background or font loaded from a URL embedded in the diagram - and these are fetched when the diagram is opened so that it renders correctly. Opening a diagram from an untrusted source may therefore trigger a request to the referenced URL, which can reveal metadata such as your IP address to that server; no diagram content is transmitted.
Security and isolating the app are the primarily objectives of draw.io desktop. If you ask for anything that involves external connections enabled in the app by default, the answer will be no.
Support
Support is provided on a reasonable business constraints basis, but without anything contractually binding. All support is provided via this repo. There is no private ticketing support for non-paying users.
Purchasing draw.io for Confluence or Jira does not entitle you to commercial support for draw.io desktop.
Developing
draw.io is a git submodule of drawio-desktop. To get both you need to clone recursively:
git clone --recursive https://github.com/jgraph/drawio-desktop.git
To run this:
npm install(in the root directory of this repo)- [internal use only] export DRAWIO_ENV=dev if you want to develop/debug in dev mode.
npm startin the root directory of this repo runs the app. For debugging, usenpm start --enable-logging.
Note: If a symlink is used to refer to drawio repo (instead of the submodule), then symlink the node_modules directory inside drawio/src/main/webapp also.
To fork the project, make your own changes and build an (unsigned) app for personal use, see doc/BUILDING_FOR_PERSONAL_USE.md.
The release process (GitHub Actions builds, signing and publishing) is described in doc/RELEASE_PROCESS.md.
Local Storage and Session Storage is stored in the AppData folder:
- macOS:
~/Library/Application Support/draw.io - Windows:
C:\Users\<USER-NAME>\AppData\Roaming\draw.io\
Not open-contribution
draw.io is closed to contributions (unless a maintainer permits it, which is extremely rare).
The level of complexity of this project means that even simple changes can break a lot of other moving parts. The amount of testing required is far more than it first seems. If we were to receive a PR, we'd have to basically throw it away and write it how we want it to be implemented.
We are grateful for community involvement, bug reports, & feature requests. We do not wish to come off as anything but welcoming, however, we've made the decision to keep this project closed to contributions for the long term viability of the project.