Explore and edit Graphviz (DOT) and Mermaid diagrams.
- Website: https://graph-explorer.net
- Web app: https://graph-explorer.net/app
- Downloads: latest release
Graph Explorer shows DOT and Mermaid text as a diagram that you can work on. Select a node to change its style. Hide the parts that you do not need. Drag from a node to add an arrow. Each edit also changes the source text.
Graph Explorer has three parts:
- The desktop app for macOS, Windows, and Linux. It follows your diagram files: when a file changes on disk, the diagram changes on the screen.
gx, a command-line tool. It reads and edits diagram files, and it tells the desktop app what to show. Coding agents can use it.- The web app at https://graph-explorer.net/app. It needs no install.
- Large graphs. Show or hide the nodes before or after the selection, one
layer at a time or all of them. Collapse a group into one node, or zoom into
it. Press
/to find a node and⌘Kto find a command. - Edit the diagram. Change the shape, fill, border, and font from the toolbar. Drag from a node to add an arrow. Drag the end of an arrow to connect it to a different node. Edit DOT records and HTML tables one cell at a time.
- Graphviz layout. The
dotlayout engine is a port of Graphviz 13.0.1 to Scala (seegraphviz/). For the same input, it makes the same SVG as Graphviz, byte for byte. The other engines (neato, fdp, sfdp, twopi, circo, osage, patchwork) come from Viz.js. - Mermaid. All the diagram types of Mermaid 11 show and change while you type. In a flowchart, you can also select, hide, and edit the nodes.
- Copy and share. Copy the diagram or the selection as SVG, or copy the graph as DOT or JSON. Copy a link that holds the full diagram. The link opens in the web app.
- Themes. Ten themes, and an experimental 3D view.
Download the file for your platform from the latest release.
| Platform | File | Notes |
|---|---|---|
| macOS (Apple silicon) | graph-explorer-desktop-vX.Y.Z-macos.dmg |
Signed and notarized. There is no build for Intel Macs. |
| Windows (x64) | graph-explorer-desktop-vX.Y.Z-windows.exe |
The file is the app. It is not signed, so SmartScreen can show a warning. |
| Linux (x86-64) | graph-explorer-desktop-vX.Y.Z-linux |
The file is the app. Run chmod +x on it. It needs WebKitGTK 4.1 (libwebkit2gtk-4.1-0 on Debian and Ubuntu). |
The desktop app does not update itself. Download each new release.
What the desktop app adds to the web app:
- Open a file from disk. Run
gx open diagram.dot. The app has no file picker, so open files withgx. - Live reload. The app watches the files that it shows. After a save in your editor, the diagram shows the change.
- Save back. Press
⌘S(Ctrl+Son Windows and Linux) to write your edits to the file. If the file changed on disk, the app asks which version to keep. - A library on disk. Library diagrams are files in
~/.graph-explorer/library. The app andgxshare them. SetGX_HOMEto use a different folder.
gx is a separate file in each release: gx-vX.Y.Z-macos, gx-vX.Y.Z-linux,
or gx-vX.Y.Z-windows.exe. Put it in a folder on your PATH and make it
executable. On macOS, the first run needs an internet connection, because macOS
checks the notarization.
gx status # the library folder, and if the desktop app runs
gx run arch.dot list-nodes # the nodes of a file
gx run arch.dot set-attribute \
--params '{"targets":["node:db"],"name":"shape","value":"cylinder"}'
gx import arch.dot # add the file to the library, linked to it
gx open arch.dot # show the file in the desktop appOnly gx open and gx session need the desktop app. All other commands work
with no window. Run gx help for the full list.
Coding agents. skills/gx is a skill that tells a
coding agent how to use gx. Run gx skill to get its address for your
version of gx.
The web app is at https://graph-explorer.net/app. It keeps your diagrams in the storage of your browser, so they are only on that browser.
The web app can open a diagram from a link:
- The form is
https://graph-explorer.net/diagrams/<id>?dot=<text>, where<text>is DOT or Mermaid text, encoded withencodeURIComponent. - If a diagram in your library has the same id or the same text, that diagram opens. If not, the app makes a new diagram from the text.
- To make a link, press
⌘Kand run the command "Share URL". The desktop app makes the same links, so a diagram from the desktop opens in the web app. - A very large diagram makes a very long link.
git clone https://github.com/jpablo/graph-explorer.git
cd graph-explorer
npm installRun the web app with hot reload. Use two terminals:
sbt "~viewer/fastLinkJS"npm run devThen open http://localhost:5173/app. The product page is at http://localhost:5173/site/.
Run all the tests:
sbt testFullUnder sbt 2, sbt test runs only the tests that failed before or whose code
changed. sbt testFull runs all of them.
Make a production build of the web app and the product page (output in dist/):
sbt viewer/fullLinkJS && npm run buildBuild the desktop app. It needs Rust and the Tauri CLI
(cargo install tauri-cli --version "^2"), and it puts dist/ into the app, so
make the production build first:
cd desktop/src-tauri && cargo tauri buildBuild gx. It needs sbt and scala-cli,
which gets GraalVM:
scripts/build-gx.shDevelopment.md tells how to make a release.
| Folder | Contents |
|---|---|
shared/ |
The graph model, the DOT parser, and the Mermaid scan. Compiled for the JVM and for JavaScript. |
graphviz/ |
The port of the Graphviz dot layout engine. |
viewer/ |
The app itself, in Scala.js and Laminar. The web app and the desktop app use it. |
desktop/ |
The desktop app (Tauri). |
gx-core/, gx-cli/ |
The gx tool. |
skills/gx/ |
The skill for coding agents. |
site/ |
The product page at https://graph-explorer.net. |
docs/ |
Design notes. |
Netlify builds the site with
scripts/build-viewer-netlify.sh.
_redirects sends / to the product
page (site/index.html) and all other paths to the web app (index.html). The
web app shows its library at /app.
Copyright 2025 Juan Pablo Romero and the graph-explorer contributors.
