Top Related Projects
Virtual whiteboard for sketching hand-drawn like diagrams
Generation of diagrams like flowcharts or sequence diagrams from text in a similar manner as markdown
Generate diagrams from textual description
Master repository for the JGraphT project
Directed graph layout for JavaScript
Quick Overview
draw.io (also known as diagrams.net) is a free, open-source diagramming and flowcharting tool. It provides a web-based interface for creating various types of diagrams, including flowcharts, network diagrams, org charts, and more. The tool can be used online or installed locally, offering flexibility for different user needs.
Pros
- Free and open-source, allowing for customization and community contributions
- Supports a wide range of diagram types and integrations with popular platforms
- Available as both a web application and desktop application for offline use
- Regular updates and active community support
Cons
- Learning curve for advanced features and customizations
- Limited collaboration features compared to some paid alternatives
- Some users report occasional performance issues with large, complex diagrams
- Mobile experience can be challenging due to the complexity of the tool
Getting Started
To use draw.io online:
- Visit https://app.diagrams.net/
- Choose where to save your diagrams (Device, Google Drive, OneDrive, etc.)
- Start creating your diagram using the intuitive drag-and-drop interface
To run draw.io locally:
- Clone the repository:
git clone https://github.com/jgraph/drawio.git
- Navigate to the project directory:
cd drawio
- Open
src/main/webapp/index.html
in your web browser to use the application locally
For developers who want to contribute or customize:
- Fork the repository on GitHub
- Make your changes and submit a pull request
- Follow the contribution guidelines in the repository's README
Competitor Comparisons
Virtual whiteboard for sketching hand-drawn like diagrams
Pros of Excalidraw
- Simpler, more intuitive interface for quick sketches and diagrams
- Lightweight and fast, with a focus on hand-drawn aesthetics
- Easy collaboration features with real-time editing
Cons of Excalidraw
- Limited advanced diagramming features compared to Draw.io
- Fewer export options and integrations with other tools
- Less suitable for complex, professional-grade diagrams
Code Comparison
Excalidraw (React-based rendering):
const roughCanvas = rough.canvas(canvas);
roughCanvas.rectangle(10, 10, 100, 100, {
fill: elementStyle.backgroundColor,
stroke: elementStyle.strokeColor,
strokeWidth: elementStyle.strokeWidth,
});
Draw.io (mxGraph-based rendering):
var graph = new mxGraph(container);
var parent = graph.getDefaultParent();
graph.getModel().beginUpdate();
try {
var v1 = graph.insertVertex(parent, null, 'Hello,', 20, 20, 80, 30);
var v2 = graph.insertVertex(parent, null, 'World!', 200, 150, 80, 30);
var e1 = graph.insertEdge(parent, null, '', v1, v2);
} finally {
graph.getModel().endUpdate();
}
Both repositories offer diagramming tools, but Excalidraw focuses on simplicity and a hand-drawn style, while Draw.io provides more advanced features for complex diagrams. Excalidraw uses React and HTML5 Canvas for rendering, while Draw.io relies on the mxGraph library for its core functionality.
Generation of diagrams like flowcharts or sequence diagrams from text in a similar manner as markdown
Pros of mermaid
- Lightweight and easy to integrate into existing documentation
- Text-based diagram creation, suitable for version control
- Supports a wide range of diagram types (flowcharts, sequence diagrams, Gantt charts, etc.)
Cons of mermaid
- Less intuitive for non-technical users
- Limited customization options compared to draw.io
- Rendering can be inconsistent across different platforms
Code Comparison
mermaid:
graph TD
A[Start] --> B{Is it?}
B -->|Yes| C[OK]
B -->|No| D[End]
draw.io:
<mxGraphModel>
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="Start" style="rounded=1;" vertex="1" parent="1">
<mxGeometry x="120" y="120" width="80" height="40" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
mermaid uses a simple text-based syntax for creating diagrams, while draw.io uses XML-based format for more complex and customizable diagrams.
Generate diagrams from textual description
Pros of PlantUML
- Text-based diagram creation, enabling version control and easy collaboration
- Supports a wide variety of diagram types, including UML, network, and wireframe
- Can be integrated into various tools and platforms, including IDEs and documentation systems
Cons of PlantUML
- Steeper learning curve for users unfamiliar with text-based diagramming
- Limited customization options for diagram aesthetics compared to DrawIO
- Requires additional software or plugins for rendering diagrams
Code Comparison
PlantUML:
@startuml
Alice -> Bob: Hello
Bob --> Alice: Hi there
@enduml
DrawIO:
<mxGraphModel>
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="Hello" style="edgeStyle=none;html=1;" edge="1" parent="1" source="3" target="4">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="3" value="Alice" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="120" y="120" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="4" value="Bob" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="360" y="120" width="120" height="60" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
Master repository for the JGraphT project
Pros of JGraphT
- Focused on graph theory algorithms and data structures
- Extensive library of graph algorithms (e.g., shortest path, spanning trees)
- Better suited for complex graph computations and analysis
Cons of JGraphT
- Lacks built-in visualization capabilities
- Steeper learning curve for non-programmers
- Limited GUI support compared to draw.io
Code Comparison
JGraphT (creating and analyzing a graph):
Graph<String, DefaultEdge> graph = new SimpleGraph<>(DefaultEdge.class);
graph.addVertex("A");
graph.addVertex("B");
graph.addEdge("A", "B");
DijkstraShortestPath<String, DefaultEdge> dijkstra = new DijkstraShortestPath<>(graph);
draw.io (XML representation of a simple graph):
<mxGraphModel>
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="2" value="A" vertex="1">
<mxGeometry x="100" y="100" width="80" height="30" as="geometry"/>
</mxCell>
<mxCell id="3" value="B" vertex="1">
<mxGeometry x="300" y="100" width="80" height="30" as="geometry"/>
</mxCell>
<mxCell id="4" edge="1" source="2" target="3"/>
</root>
</mxGraphModel>
JGraphT is better suited for programmatic graph analysis, while draw.io excels in visual graph creation and editing.
Directed graph layout for JavaScript
Pros of dagre
- Specialized for directed graph layouts, offering optimized algorithms
- Lightweight library focused on graph rendering, easier to integrate into existing projects
- More flexible for programmatic graph generation and manipulation
Cons of dagre
- Limited built-in UI features compared to draw.io's rich interface
- Requires more custom coding for interactive elements and user input
- Less suitable for general-purpose diagramming tasks
Code Comparison
draw.io (JavaScript):
var graph = new mxGraph(container);
var parent = graph.getDefaultParent();
graph.getModel().beginUpdate();
try {
var v1 = graph.insertVertex(parent, null, 'Hello', 20, 20, 80, 30);
var v2 = graph.insertVertex(parent, null, 'World!', 200, 150, 80, 30);
var e1 = graph.insertEdge(parent, null, '', v1, v2);
} finally {
graph.getModel().endUpdate();
}
dagre (JavaScript):
var g = new dagre.graphlib.Graph();
g.setNode("kspacey", { label: "Kevin Spacey", width: 144, height: 100 });
g.setNode("swilliams", { label: "Saul Williams", width: 160, height: 100 });
g.setEdge("kspacey", "swilliams");
dagre.layout(g);
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
About
draw.io, this project, is a configurable diagramming/whiteboarding visualization application. draw.io is jointly owned and developed by JGraph Ltd and draw.io AG.
As well as running this project, we run a production-grade deployment of the diagramming interface at https://app.diagrams.net.
License
The source code authored by us in this repo is licensed under a modified Apache v2 license. This project is not an open source project as a result.
The JGraph provided icons and diagram templates are licensed under the CC BY 4.0. Additional terms may also apply where the icons are originally defined by a third-party copyright holder. We have checked in all cases that the original license allows use in this project. Also see the terms for using the draw.io logo below.
Additional minified JavaScript files and Java libraries are used in this project. All of the licenses are deemed compatible with the Apache 2.0, nothing is GPL or AGPL, due diligence is performed on all third-party code.
We make no copyright claim on the content you create with this software, regardless of the copyright of individual icons used in such content.
Scope of the Project
draw.io is a diagramming or whiteboarding application, depending on which theme is selected. It is not an SVG editing app, the SVG export is designed only for embedding in web pages, not for further editing in other tools.
The application is designed to be used largely as-is. draw.io is not suitable as a framework for building other products from. For this try either Tldraw or Excalidraw.
Note, in particular, we don't have support for collaborative editing in this project. If this is important, one of the projects above is likely a better choice.
If you are using a draw.io project/product and have issues or questions about the editor itself, the issue tracker and discussion in this GitHub project are likely a good place to look.
Running
One way to run draw.io is to fork this project, publish the master branch to GitHub pages and the pages sites will have the full editor functionality (sans the integrations).
Another way is to use the recommended Docker project or to download draw.io Desktop.
The full packaged .war of the client and servlets is built when the project is tagged and available on the releases page.
Supported Browsers
draw.io supports Chrome 98+, Firefox 94+, Safari 15.4+, Opera 84+, WebView Android 98+, Safari iOS 15.4+ and Edge 98+.
This project is not open-contribution
draw.io is also closed to contributions, as it's not open source. We follow a development process compliant with our SOC 2 Type II process. We do not have a mechanism where we can accept contributions from non-staff members.
draw.io is not suitable as a framework for building other products from. For this try either Tldraw or Excalidraw.
Logo and trademark usage
draw.io is a registered EU trademark, #018062448
Do not use the draw.io name or any draw.io logo in a way that suggests you are JGraph, your offering or project is by JGraph, or that JGraph is endorsing you or your offering or project.
Do not use any draw.io logo as the icon or logo for your business/organization, offering, project, domain name, social media account, or website.
Do not modify the permitted draw.io logos, including changing the color, dimensions, or combining with other words or design elements.
Do not use JGraph trademarks or logos without JGraphâs prior written permission.
Top Related Projects
Virtual whiteboard for sketching hand-drawn like diagrams
Generation of diagrams like flowcharts or sequence diagrams from text in a similar manner as markdown
Generate diagrams from textual description
Master repository for the JGraphT project
Directed graph layout for JavaScript
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot